goofmint 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/.claude/settings.local.json +17 -0
  2. package/.github/workflows/deploy.yml +44 -0
  3. package/.nvmrc +1 -0
  4. package/.ruby-version +1 -0
  5. package/DEPLOYMENT.md +111 -0
  6. package/Gemfile +10 -0
  7. package/README.md +118 -0
  8. package/_config.yml +77 -0
  9. package/_data/i18n.yml +86 -0
  10. package/_data/social.yml +19 -0
  11. package/_includes/footer.html +18 -0
  12. package/_includes/header.html +42 -0
  13. package/_includes/i18n.html +2 -0
  14. package/_layouts/default.html +25 -0
  15. package/_layouts/post.html +18 -0
  16. package/_layouts/project.html +37 -0
  17. package/_posts/2025-01-03-welcome.md +62 -0
  18. package/_posts/en/2025-01-03-welcome.md +61 -0
  19. package/_projects/bug-sniper.md +28 -0
  20. package/_projects/caiz.md +29 -0
  21. package/_projects/drowl.md +28 -0
  22. package/_projects/incho-app.md +32 -0
  23. package/_projects/moongift.md +33 -0
  24. package/_projects/review-game.md +28 -0
  25. package/_projects/sheetdb.md +30 -0
  26. package/_projects/text2cal.md +49 -0
  27. package/_projects_en/bug-sniper.md +28 -0
  28. package/_projects_en/caiz.md +29 -0
  29. package/_projects_en/drowl.md +28 -0
  30. package/_projects_en/incho-app.md +32 -0
  31. package/_projects_en/moongift.md +33 -0
  32. package/_projects_en/review-game.md +28 -0
  33. package/_projects_en/sheetdb.md +30 -0
  34. package/_projects_en/text2cal.md +49 -0
  35. package/_sass/_base.scss +58 -0
  36. package/_sass/_components.scss +113 -0
  37. package/_sass/_layout.scss +140 -0
  38. package/_sass/_syntax.scss +137 -0
  39. package/_sass/_theme.scss +261 -0
  40. package/about.md +182 -0
  41. package/assets/css/main.scss +68 -0
  42. package/assets/images/atsushi.jpg +0 -0
  43. package/assets/images/daruma.jpeg +0 -0
  44. package/assets/images/icons/email.svg +1 -0
  45. package/assets/images/icons/github.svg +1 -0
  46. package/assets/images/icons/linkedin.svg +1 -0
  47. package/assets/images/icons/x.svg +1 -0
  48. package/assets/images/moveum.jpeg +0 -0
  49. package/assets/images/notes.jpeg +0 -0
  50. package/assets/js/lang-toggle.js +89 -0
  51. package/assets/js/theme-toggle.js +69 -0
  52. package/blog.html +21 -0
  53. package/en/about.md +180 -0
  54. package/en/blog.html +21 -0
  55. package/en/index.html +45 -0
  56. package/en/projects.html +26 -0
  57. package/index.html +45 -0
  58. package/index.js +321 -0
  59. package/package.json +43 -0
  60. package/projects.html +29 -0
package/about.md ADDED
@@ -0,0 +1,182 @@
1
+ ---
2
+ layout: default
3
+ title: About
4
+ permalink: /about/
5
+ lang: ja
6
+ ---
7
+
8
+ {% include i18n.html %}
9
+
10
+ # アツシについて
11
+
12
+ CodeRabbit デベロッパーアドボケイト、株式会社MOONGIFT代表取締役、一般社団法人DevRel代表理事。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。2004年、まだ情報が少なかったオープンソースソフトの技術ブログ『MOONGIFT』を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶエバンジェリスト業「DevRel」活動をスタートした。ソーシャルIDはすべて goofmint
13
+
14
+ ![](/assets/images/atsushi.jpg)
15
+
16
+ ## 主なスキル
17
+
18
+ - Developer Relations (DevRel)
19
+ - コミュニティ構築・運営
20
+ - コンテンツ制作(ブログ、動画、ポッドキャスト)
21
+ - プログラミング(JavaScript/TypeScript、Python、Ruby、PHP、Dart/Flutter、Java、PHP、C#、Kotlin、VBAなど)
22
+
23
+ ## 経歴
24
+
25
+ 日本およびグローバル市場において11年以上のDevRel経験を持つ。
26
+ B2C・B2B双方での実績を持ち、高い契約クローズ率、エンタープライズの交渉、国際的な開発者コミュニティ構築を主導。
27
+ Claude Code、GitHub Copilot、Cursor などを活用したAI支援開発に精通し、日米印を中心としたクロスカルチャー連携を強みとする。
28
+
29
+ #### CEO — MOONGIFT(2013年10月〜現在)
30
+
31
+ - 技術メディア MOONGIFT を運営
32
+ - 100社以上への DevRel as a Service 提供
33
+ - DevRel/Tokyo、各種ミートアップ・国際コミュニティの立ち上げ・運営
34
+ - 技術記事500本以上を執筆
35
+ - 10以上の言語で50以上のSDKを開発
36
+
37
+ #### デベロッパーアドボケイト — CodeRabbit(2025年1月〜現在)
38
+
39
+ **主な業務**
40
+
41
+ - 日本市場における DevRel / 開発者マーケティングの統括
42
+ - 日本と米国本社間のプロダクト・ビジネス連携
43
+ - 顧客フィードバックの翻訳・要件整理
44
+ - エンタープライズ契約・価格交渉支援
45
+ - 技術コンテンツ・コミュニケーション戦略設計
46
+
47
+ **成果**
48
+
49
+ - 複雑なエンタープライズ案件20件以上を解決
50
+ - 日米協業の再現性あるフレームワークを確立
51
+ - 日本国内の開発者コミュニティ形成を推進
52
+
53
+ #### テクノロジーエバンジェリスト — blastengine(2021年12月〜2025年3月)
54
+
55
+ - メール配信サービス「blastengine」のエバンジェリスト
56
+ - 技術ブログ・ドキュメント執筆
57
+ - SDK開発(Python / PHP / Ruby / Java)
58
+ - カンファレンス登壇・ワークショップ実施
59
+
60
+ #### テクノロジーエバンジェリスト — GROWI(2024年5月〜2025年3月)
61
+
62
+ - OSS Wiki「GROWI」の技術発信
63
+ - 開発者コミュニティ運営
64
+ - APIドキュメント・SDK整備
65
+
66
+ #### テクノロジーエバンジェリスト — Hexabase(2022年8月〜2024年6月)
67
+
68
+ - エンタープライズ向けBaaSの技術普及
69
+ - 技術ブログ・ユースケース作成
70
+ - ハッカソン・コミュニティイベント企画
71
+
72
+ #### テクノロジーエバンジェリスト — ニフクラ mobile backend(2014年4月〜2023年11月)
73
+
74
+ - ニフクラ mobile backend(mBaaS)のエバンジェリスト
75
+ - 技術記事200本以上執筆
76
+ - 年10回以上の法人向けセミナー実施
77
+ - SDK開発(Python / Java / Flutter / React Native / GAS / VBA)
78
+
79
+ ### コミュニティ活動
80
+
81
+ #### DevRel/Tokyo(2015年9月〜現在)
82
+
83
+ - 創設者・運営
84
+ - メンバー数 2,200名以上
85
+ - 月例イベント、週次ポッドキャスト(DevRel Radio)
86
+
87
+ #### DevRel Meetup in Bengaluru(2017年8月〜現在)
88
+
89
+ - インド・バンガロールでの DevRel コミュニティ設立
90
+ - 日本とインドの知見交流を促進
91
+
92
+ #### Monacaソムリエプログラム(2017年8月〜2020年4月)
93
+
94
+ - 日本初のモバイル開発者チャンピオン制度
95
+ - 選定基準・評価フレームワーク設計
96
+ - 20社以上のエンタープライズ導入に影響
97
+
98
+ ### カンファレンス運営
99
+
100
+ - DevRelKaigi Tokyo 2025
101
+ - DevRelCon Tokyo(2017〜2023)
102
+ - DevRel/Japan Conference(2019〜2024)
103
+ - DevRel/Asia 2020(オンライン・アジア横断)
104
+ - Global AI Hackathon Tokyo 2017
105
+ - PWA Night Conference(2019〜2022)
106
+
107
+ ### 執筆・編集
108
+
109
+ - 技術ブログ執筆:アシアル、HENNGE、ヴァル研究所、バルテス
110
+ - 事例編集:クラスメソッド
111
+
112
+ ### 以前の職歴
113
+
114
+ - プロジェクトマネージャー(miil)
115
+ - システム開発・コンサルティング(フリーランス)
116
+ - 社内SE(iREP)
117
+ - プログラマー(ラクーン)
118
+ - 品質管理エンジニア(AIM電子)
119
+
120
+ ### 学歴
121
+
122
+ - 東京工業高等専門学校(機械工学科 学士)
123
+
124
+ ### 技術発信実績
125
+
126
+ #### Qiita
127
+
128
+ - 記事数 720本
129
+ - 56か月連続投稿
130
+ - 総コントリビューション 2,752
131
+
132
+ #### Zenn
133
+
134
+ - 記事数 75本
135
+ - いいね数 197
136
+
137
+ ### AI支援開発の経験
138
+
139
+ - CodeRabbit
140
+ - Claude Code
141
+ - GitHub Copilot
142
+ - Cursor
143
+ - Codex
144
+
145
+ #### 最近の主なOSSプロジェクト
146
+
147
+ - [BugSniper](https://github.com/goofmint/BugSniper)
148
+ - [CommunityBook](https://github.com/goofmint/CommunityBook)
149
+ - [ReviewGame](https://github.com/goofmint/ReviewGame)
150
+ - [DRowl](https://github.com/goofmint/drowl)
151
+ - [RabbitKanban](https://github.com/goofmint/RabbitKanban)
152
+ - [SheetDB](https://github.com/goofmint/sheet-db)
153
+ - [Text2Cal](https://github.com/goofmint/Text2Cal)
154
+ - [Eluma](https://github.com/goofmint/eluma.dev)
155
+
156
+ ### スキル
157
+
158
+ - **言語:** Python, JavaScript/TypeScript, Google Apps Script, Go, Java, Dart/Flutter, C#, PHP, Ruby, Swift, Kotlin, VBA
159
+ - **フレームワーク:** React Router, Hono, Vue, Remix, Next.js, Flutter
160
+ - **言語能力:** 日本語(母語)、英語(ビジネス)
161
+
162
+ ### 商業出版
163
+
164
+ - [DevRel エンジニアフレンドリーになるための3C](https://www.shoeisha.co.jp/book/detail/9784798161068)
165
+ - [Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!]](https://www.amazon.co.jp/dp/4774174416)
166
+ - [開発者向けマーケティング DevRel Q&A](https://www.amazon.co.jp/dp/B0814N5WLW)
167
+ - [一冊で分かる!オンラインイベントのはじめかた](https://www.amazon.co.jp/dp/B08PK5J8T1)
168
+ - [英語で広がる開発者のキャリア](https://www.amazon.co.jp/dp/4844379550)
169
+
170
+ ### パッケージ配布
171
+
172
+ - npm: [https://www.npmjs.com/~moongift](https://www.npmjs.com/~moongift)
173
+ - PyPI: [https://pypi.org/user/goofmint/](https://pypi.org/user/goofmint/)
174
+ - Packagist: [https://packagist.org/users/goofmint/packages/](https://packagist.org/users/goofmint/packages/)
175
+ - RubyGems: [https://rubygems.org/profiles/moongift](https://rubygems.org/profiles/moongift)
176
+ - pub.dev: [https://pub.dev/packages/hexabase](https://pub.dev/packages/hexabase)
177
+
178
+ ### 問い合わせ
179
+
180
+ - Email: [atsushi@moongift.jp](mailto:atsushi@moongift.jp)
181
+ - X/Twitter: [@goofmint](https://twitter.com/goofmint)
182
+ - LinkedIn: [Atsushi Nakatsugawa](https://www.linkedin.com/in/goofmint/)
@@ -0,0 +1,68 @@
1
+ ---
2
+ ---
3
+
4
+ @import "base";
5
+ @import "layout";
6
+ @import "components";
7
+ @import "theme";
8
+ @import "syntax";
9
+
10
+ // Responsive design
11
+ @media (max-width: 768px) {
12
+ .site-header .wrapper {
13
+ flex-direction: column;
14
+ gap: 15px;
15
+ }
16
+
17
+ .header-right {
18
+ flex-direction: column;
19
+ width: 100%;
20
+ }
21
+
22
+ .site-nav {
23
+ flex-direction: column;
24
+ gap: 10px !important;
25
+ text-align: center;
26
+ width: 100%;
27
+ }
28
+
29
+ .header-controls {
30
+ justify-content: center;
31
+ }
32
+
33
+ .hero h1 {
34
+ font-size: 2em !important;
35
+ }
36
+
37
+ .project-grid {
38
+ grid-template-columns: 1fr;
39
+ }
40
+ }
41
+
42
+ // Status tag styles
43
+ .tech-tag.status-progress {
44
+ background-color: #ffeb3b;
45
+ color: #000;
46
+ }
47
+ .tech-tag.status-working {
48
+ background-color: #4caf50;
49
+ color: #fff;
50
+ }
51
+ .tech-tag.status-archived {
52
+ background-color: #9e9e9e;
53
+ color: #fff;
54
+ }
55
+
56
+ .page-content ul {
57
+ list-style-type: disc;
58
+ padding-left: 20px;
59
+ padding-bottom: 20px;
60
+ }
61
+ .page-content ul li {
62
+ margin-left: 16px;
63
+ }
64
+
65
+ .page-content img {
66
+ max-width: 30%;
67
+ height: auto;
68
+ }
Binary file
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="m20 8l-8 5l-8-5V6l8 5l8-5m0-2H4c-1.11 0-2 .89-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93zM6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37"/></svg>
@@ -0,0 +1 @@
1
+ <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>X</title><path d="M14.234 10.162 22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299-.929-1.329L3.076 1.56h3.182l5.965 8.532.929 1.329 7.754 11.09h-3.182z"/></svg>
Binary file
Binary file
@@ -0,0 +1,89 @@
1
+ (function() {
2
+ 'use strict';
3
+
4
+ const STORAGE_KEY = 'lang-preference';
5
+
6
+ // Get browser language
7
+ const getBrowserLang = () => {
8
+ const browserLang = navigator.language || navigator.userLanguage;
9
+ return browserLang.startsWith('ja') ? 'ja' : 'en';
10
+ };
11
+
12
+ // Get saved language or default to browser language
13
+ const getLang = () => {
14
+ const savedLang = localStorage.getItem(STORAGE_KEY);
15
+ if (savedLang) {
16
+ return savedLang;
17
+ }
18
+ return getBrowserLang();
19
+ };
20
+
21
+ // Save language preference
22
+ const setLang = (lang) => {
23
+ localStorage.setItem(STORAGE_KEY, lang);
24
+ };
25
+
26
+ // Get current page path
27
+ const getCurrentPath = () => {
28
+ return window.location.pathname;
29
+ };
30
+
31
+ // Toggle language and redirect
32
+ const toggleLang = () => {
33
+ const currentPath = getCurrentPath();
34
+ const currentLang = currentPath.startsWith('/en/') ? 'en' : 'ja';
35
+ const newLang = currentLang === 'ja' ? 'en' : 'ja';
36
+
37
+ setLang(newLang);
38
+
39
+ // Redirect to the same page in different language
40
+ let newPath;
41
+ if (newLang === 'en') {
42
+ // Switch to English
43
+ if (currentPath === '/' || currentPath === '/index.html') {
44
+ newPath = '/en/';
45
+ } else {
46
+ newPath = '/en' + currentPath;
47
+ }
48
+ } else {
49
+ // Switch to Japanese
50
+ newPath = currentPath.replace(/^\/en\//, '/').replace(/^\/en$/, '/');
51
+ }
52
+
53
+ window.location.href = newPath;
54
+ };
55
+
56
+ // Initialize language on first visit
57
+ const initLang = () => {
58
+ const savedLang = localStorage.getItem(STORAGE_KEY);
59
+ if (!savedLang) {
60
+ const browserLang = getBrowserLang();
61
+ const currentPath = getCurrentPath();
62
+ const isEnglishPage = currentPath.startsWith('/en/');
63
+
64
+ // If browser is English but on Japanese page, redirect
65
+ if (browserLang === 'en' && !isEnglishPage && currentPath === '/') {
66
+ window.location.href = '/en/';
67
+ }
68
+ }
69
+ };
70
+
71
+ // Initialize on page load
72
+ initLang();
73
+
74
+ // Add event listener when DOM is ready
75
+ document.addEventListener('DOMContentLoaded', () => {
76
+ const toggleButton = document.querySelector('.lang-toggle');
77
+
78
+ if (toggleButton) {
79
+ toggleButton.addEventListener('click', toggleLang);
80
+ }
81
+
82
+ // Update button text based on current language
83
+ const currentPath = getCurrentPath();
84
+ const currentLang = currentPath.startsWith('/en/') ? 'en' : 'ja';
85
+ if (toggleButton) {
86
+ toggleButton.textContent = currentLang === 'ja' ? 'EN' : 'JA';
87
+ }
88
+ });
89
+ })();
@@ -0,0 +1,69 @@
1
+ (function() {
2
+ 'use strict';
3
+
4
+ const STORAGE_KEY = 'theme-preference';
5
+
6
+ // Get system preference
7
+ const getSystemTheme = () => {
8
+ if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
9
+ return 'dark';
10
+ }
11
+ return 'light';
12
+ };
13
+
14
+ // Get saved theme or default to system preference
15
+ const getTheme = () => {
16
+ const savedTheme = localStorage.getItem(STORAGE_KEY);
17
+ if (savedTheme) {
18
+ return savedTheme;
19
+ }
20
+ return getSystemTheme();
21
+ };
22
+
23
+ // Get current theme from DOM
24
+ const getCurrentTheme = () => {
25
+ return document.documentElement.getAttribute('data-theme') || getTheme();
26
+ };
27
+
28
+ // Save theme preference
29
+ const setTheme = (theme) => {
30
+ localStorage.setItem(STORAGE_KEY, theme);
31
+ document.documentElement.setAttribute('data-theme', theme);
32
+ };
33
+
34
+ // Toggle between light and dark
35
+ const toggleTheme = () => {
36
+ const currentTheme = getCurrentTheme();
37
+ const newTheme = currentTheme === 'light' ? 'dark' : 'light';
38
+ setTheme(newTheme);
39
+ };
40
+
41
+ // Initialize theme on page load
42
+ const initTheme = () => {
43
+ const theme = getTheme();
44
+ document.documentElement.setAttribute('data-theme', theme);
45
+ };
46
+
47
+ // Initialize immediately (before page renders)
48
+ initTheme();
49
+
50
+ // Add event listener when DOM is ready
51
+ document.addEventListener('DOMContentLoaded', () => {
52
+ const toggleButton = document.querySelector('.theme-toggle');
53
+
54
+ if (toggleButton) {
55
+ toggleButton.addEventListener('click', toggleTheme);
56
+ }
57
+ });
58
+
59
+ // Listen for system theme changes (optional)
60
+ if (window.matchMedia) {
61
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {
62
+ // Only auto-update if user hasn't manually set a preference
63
+ if (!localStorage.getItem(STORAGE_KEY)) {
64
+ const newTheme = e.matches ? 'dark' : 'light';
65
+ document.documentElement.setAttribute('data-theme', newTheme);
66
+ }
67
+ });
68
+ }
69
+ })();
package/blog.html ADDED
@@ -0,0 +1,21 @@
1
+ ---
2
+ layout: default
3
+ title: Blog
4
+ permalink: /blog/
5
+ lang: ja
6
+ ---
7
+
8
+ {% include i18n.html %}
9
+
10
+ <h1>{{ t.blog.title }}</h1>
11
+
12
+ <ul class="post-list">
13
+ {% assign ja_posts = site.posts | where: "lang", "ja" %}
14
+ {% for post in ja_posts %}
15
+ <li class="post-item">
16
+ <h2><a href="{{ post.url | relative_url }}">{{ post.title }}</a></h2>
17
+ <p class="post-meta">{{ post.date | date: "%Y年%m月%d日" }}</p>
18
+ <p>{{ post.excerpt }}</p>
19
+ </li>
20
+ {% endfor %}
21
+ </ul>
package/en/about.md ADDED
@@ -0,0 +1,180 @@
1
+ ---
2
+ layout: default
3
+ title: About
4
+ permalink: /en/about
5
+ lang: en
6
+ ---
7
+
8
+ {% include i18n.html %}
9
+
10
+ # About Atsushi
11
+
12
+ CodeRabbit Developer Advocate, CEO of MOONGIFT Inc., and Representative Director of the DevRel Association. After working as a programmer and engineer at several companies, he became independent at the age of 28. In 2004, when information on open source software was still scarce, he launched the technical blog *MOONGIFT* and has been publishing content daily ever since. He incorporated the business in 2013 and began evangelism activities in Developer Relations (DevRel), bridging business and engineers. All social IDs are **goofmint**.
13
+
14
+ ![](/assets/images/atsushi.jpg)
15
+
16
+ ## Skills
17
+
18
+ * Developer Relations (DevRel)
19
+ * Community building and management
20
+ * Content creation (blogs, videos, podcasts)
21
+ * Programming (JavaScript/TypeScript, Python, Ruby, PHP, Dart/Flutter, Java, C#, Kotlin, VBA, etc.)
22
+
23
+ ## Experience
24
+
25
+ DevRel leader with 11+ years of experience building Japanese developer ecosystems for global tech companies. Proven impact across B2C and B2B domains, including 100% contract closure, enterprise negotiations, and large-scale community building. Expert in AI-assisted development (Claude Code, GitHub Copilot, Cursor) and cross-cultural collaboration.
26
+
27
+ ### CEO — MOONGIFT (Oct 2013 – Present)
28
+
29
+ - Operates own media platform MOONGIFT
30
+ - DevRel as a Service for 100+ technology companies
31
+ - Organized DevRel/Tokyo, DevRel Meetup, and international communities
32
+ - Published 500+ technical articles
33
+ - Created 50+ SDKs in 10+ programming languages
34
+
35
+ ### Developer Advocate — CodeRabbit (Jan 2025 – Present)
36
+
37
+ **Primary Responsibilities**
38
+
39
+ - Japanese DevRel and developer marketing for AI code review product
40
+ - Cross-cultural coordination between Japan and US headquarters
41
+ - Customer advocacy and enterprise negotiation
42
+ - Content strategy and localization
43
+
44
+ **Results**
45
+
46
+ - Resolved 20+ complex enterprise account issues
47
+ - Established repeatable Japan–US collaboration frameworks
48
+ - Built developer communities across Japan
49
+
50
+ ### Technology Evangelist — blastengine (Dec 2021 – Mar 2025)
51
+
52
+ - Technical blog writing and documentation
53
+ - SDK development (Python, PHP, Ruby, Java)
54
+ - Conference speaking and workshops
55
+ - Evangelist for email delivery service *blastengine*
56
+
57
+ ### Technology Evangelist — GROWI (May 2024 – Mar 2025)
58
+
59
+ - Open-source wiki platform evangelism
60
+ - Community management and developer support
61
+ - API documentation and SDK development
62
+
63
+ ### Technology Evangelist — Hexabase (Aug 2022 – Jun 2024)
64
+
65
+ - BaaS evangelism for enterprise developers
66
+ - Technical blogging and use case documentation
67
+ - Hackathon and community event design
68
+
69
+ ### Technology Evangelist — Nifty Cloud Mobile Backend (Apr 2014 – Nov 2023)
70
+
71
+ - Evangelist for Nifty Cloud mobile backend (mBaaS)
72
+ - 200+ technical articles
73
+ - 10+ annual enterprise seminars
74
+ - SDK development (Python, Java, Flutter, React Native, GAS, VBA)
75
+
76
+ ## Community Leadership
77
+
78
+ ### DevRel/Tokyo (Sep 2015 – Present)
79
+
80
+ - Founder and manager
81
+ - 2,200+ active members
82
+ - Monthly events and weekly podcast (DevRel Radio)
83
+
84
+ ### DevRel Meetup in Bengaluru (Aug 2017 – Present)
85
+
86
+ - Founder and community manager
87
+ - Cross-border DevRel knowledge exchange (Japan ↔ India)
88
+
89
+ ### Monaca Sommelier Program (Aug 2017 – Apr 2020)
90
+
91
+ - Japan’s first mobile development champion program
92
+ - Designed selection criteria and advocacy framework
93
+ - 20+ enterprise adoptions influenced
94
+
95
+ ## Conference Organizer
96
+
97
+ - **DevRelKaigi Tokyo 2025**
98
+ - **DevRelCon Tokyo Series** (2017–2023)
99
+ - **DevRel/Japan Conference** (2019–2024)
100
+ - **DevRel/Asia 2020** (Online, pan-Asia)
101
+ - **Global AI Hackathon Tokyo 2017**
102
+ - **PWA Night Conference** (2019–2022)
103
+
104
+ ## Blog & Editorial Work
105
+
106
+ - Blog Writer: Asial, HENNGE, Val Laboratory, Valtes
107
+ - Case Study Editor: Classmethod
108
+
109
+ ## Previous Experience
110
+
111
+ - Project Manager — Miil Inc.
112
+ - System Development & Consulting (Freelance)
113
+ - Office Engineer — iREP Inc.
114
+ - Programmer — Racoon Inc.
115
+ - Quality Control Engineer — AIM Electronics
116
+
117
+ ## Education
118
+
119
+ - **Bachelor of Science, Mechanical Engineering**
120
+ National Institute of Technology, Tokyo College
121
+
122
+ ## Japanese Developer Platform Presence
123
+
124
+ ### Qiita
125
+
126
+ - 720 articles
127
+ - 56+ consecutive months
128
+ - 2,752 contributions
129
+
130
+ ### Zenn
131
+
132
+ - 75 articles
133
+ - 197 likes
134
+
135
+ ## AI-Driven Development Expertise
136
+
137
+ - CodeRabbit
138
+ - Claude Code
139
+ - GitHub Copilot
140
+ - Cursor
141
+ - Codex
142
+
143
+ ### Recently OSS Projects
144
+
145
+ - [BugSniper](https://github.com/goofmint/BugSniper)
146
+ - [CommunityBook](https://github.com/goofmint/CommunityBook)
147
+ - [ReviewGame](https://github.com/goofmint/ReviewGame)
148
+ - [DRowl](https://github.com/goofmint/drowl)
149
+ - [RabbitKanban](https://github.com/goofmint/RabbitKanban)
150
+ - [SheetDB](https://github.com/goofmint/sheet-db)
151
+ - [Text2Cal](https://github.com/goofmint/Text2Cal)
152
+ - [Eluma](https://github.com/goofmint/eluma.dev)
153
+
154
+ ## Skills
155
+
156
+ - **Languages:** Python, JavaScript/TypeScript, Google Apps Script, Go, Java, Dart/Flutter, C#, PHP, Ruby, Swift, Kotlin, VBA
157
+ - **Frameworks:** React Router, Hono, Vue, Remix, Next.js, Flutter
158
+ - **Languages:** Python, JavaScript/TypeScript, Go, Java, Dart/Flutter, PHP, Ruby, Swift, Kotlin, VBA
159
+
160
+ ## Publications (Japanese)
161
+
162
+ - *The 3Cs for Becoming Engineer-Friendly in DevRel*
163
+ - *Docker Expert Training Guide*
164
+ - *Developer Marketing DevRel Q&A*
165
+ - *Get Started with Online Events in One Book!*
166
+ - *Expanding Developer Careers Through English*
167
+
168
+ ## Packages
169
+
170
+ - npm: [https://www.npmjs.com/~moongift](https://www.npmjs.com/~moongift)
171
+ - PyPI: [https://pypi.org/user/goofmint/](https://pypi.org/user/goofmint/)
172
+ - Packagist: [https://packagist.org/users/goofmint/packages/](https://packagist.org/users/goofmint/packages/)
173
+ - RubyGems: [https://rubygems.org/profiles/moongift](https://rubygems.org/profiles/moongift)
174
+ - pub.dev: [https://pub.dev/packages/hexabase](https://pub.dev/packages/hexabase)
175
+
176
+ ## Contact
177
+
178
+ - Email: [atsushi@moongift.jp](mailto:atsushi@moongift.jp)
179
+ - X/Twitter: [@goofmint](https://twitter.com/goofmint)
180
+ - LinkedIn: [Atsushi Nakatsugawa](https://www.linkedin.com/in/goofmint/)
package/en/blog.html ADDED
@@ -0,0 +1,21 @@
1
+ ---
2
+ layout: default
3
+ title: Blog
4
+ permalink: /en/blog/
5
+ lang: en
6
+ ---
7
+
8
+ {% include i18n.html %}
9
+
10
+ <h1>{{ t.blog.title }}</h1>
11
+
12
+ <ul class="post-list">
13
+ {% assign en_posts = site.posts | where: "lang", "en" %}
14
+ {% for post in en_posts %}
15
+ <li class="post-item">
16
+ <h2><a href="{{ post.url | relative_url }}">{{ post.title }}</a></h2>
17
+ <p class="post-meta">{{ post.date | date: "%B %d, %Y" }}</p>
18
+ <p>{{ post.excerpt }}</p>
19
+ </li>
20
+ {% endfor %}
21
+ </ul>