

Atsushi Nakatsugawa
June 22, 2026
1 min read
June 22, 2026
1 min read

How a hackathon project turned into my work at CodeRabbitの意訳です。
10月下旬、私はCalHacksハッカソンの賞品を受け取るためにCodeRabbitのオフィスを訪れました。
数か月後、私はCodeRabbitのオフィスにSWEインターンとして入っていました。
それが見出しです。しかし、特にジュニア開発者にとって重要なのは、「ラッキーだった」ということではありません。共有したいのは、この結果につながった一連の出来事です。

この投稿は、より厳しく感じられる市場でインターンシップを獲得しようとしているジュニア開発者向けです。私が実際に通った「非公式の道」を共有したいと思います。
それを始めた技術プロジェクトは、merjです。これはCodeRabbitを使って、LLMに不足していた要素であるセマンティックな意図を与え、マージコンフリクトを正しく解決できるようにするAI搭載のマージコンフリクト解決ツールでした。
また、インターンとして今取り組んでいることも共有します。私は同じ中核となるアイデアを引き継ぎ、GitHubに自然に組み込めるワークフローで、チームがPRのマージコンフリクトを解決できるようにするものへと発展させています。
CalHacksは、最も良い意味で混沌としたエネルギーに満ちています。半分だけ書きかけのデモ、眠気に襲われかけたチーム、そして「うまく動かない、直さなきゃ」という連続です。
私たちの友人たちと私は、チームが最初に行うよくあることをしました。いくつかのアイデアをブレインストーミングし、その後、スポンサーや参加者に話しかけながら歩き回って、 週末の中で実現可能で、実際に楽しく作れるものを探しました。
そのとき、私たちはCodeRabbitに出会いました。
当時、私たちは「コードレビュー製品が必要だ」と考えていたわけではありませんでした。ハッカーらしく、「36時間で大きなものをリリースしたい。急いで変更を加えても崩れないようにするにはどうすればいいか」と考えていました。
私たちはCodeRabbitが役に立つと気づきました。そのとき、Hendrik Krackに出会いました。CodeRabbitのDeveloper Advocateです。
ここがすべてを変えた瞬間でした。Hendrikは製品について教えてくれただけではありませんでした。CodeRabbitが本当にソリューションに役立つように、実際のプロジェクトアイデアを洗練するのを手伝ってくれました。
当初の考えは、ハッカソンらしく典型的なものでした。「LLMに少しコンテキストを渡して、うまくやってくれることを期待する」でした。
Hendrikは、はるかに優れたアプローチへと導いてくれました。
「モデルに生のdiffだけを渡すのではなく、それぞれの人が何をしようとしていたかを表すセマンティックな理解を与えなさい」
振り返ってみると、これは当たり前に聞こえるかもしれません。しかし、ハッカソンの真っ只中では、「LLMの魔法」に頼るのが簡単です。Hendrikは、LLMが成功するために本当に必要なものを見抜く手助けをしてくれ、その考えがアーキテクチャの中核になりました。
ハッカソンの期間中、私たちはHendrikと連絡を取り続け、Erik Thorelliにも会いました。CodeRabbitのDevX(Developer Experience)リードです。彼らのワークショップに参加し、何度も情報を求め、学んだことに基づいてアイデアを何度も磨きました。

発表の時期が近づくと、私たちは実際のフィードバックをもとに何度も改良したものを見せることができ、彼らが私たちの構築物に強い関心を示していたため、直接発表する機会まで得ました。
最終的に、私たちはCodeRabbitのトラックで優勝しました。賞品は素晴らしいものでした。Meta AIグラスと、その日の午後にCodeRabbitのオフィスを訪れる権利です。
しかし、私の心に残ったのは皮肉な点でした。私はハッカソンの賞品としてオフィスを訪れたのですが、わずか3か月足らずで、その同じオフィスでインターンとして働くことになるとは思っていませんでした。
私たちのプロジェクト名はmerjでした(「merge」のように発音しますが、意図的に少しだけ違えています)。
課題: マージコンフリクトは、ソフトウェア開発の中でも最も退屈でイライラする作業の1つです。
それは最悪のタイミングで現れます。競合マーカーだけでは考えにくく、「摩擦は大きいが報酬は少ない」作業の典型です。新しいものを作っているわけではありません。単に元の開発に戻るために奮闘しているだけです。
そこで私たちはこう考えました。マージコンフリクトの解決が、1つのコマンドを実行するだけでできるようになればどうか?
このツールはCLIで、エントリーポイントはシンプルでした。
merge pull
内部では、通常のgit pullを試みます。Gitがマージコンフリクトについて警告した場合、merjはコンフリクト解決ワークフローを起動します。
その設計は意図的でした。「別のAIチャットツール」にはしたくありませんでした。開発者がすでに使っている既存のワークフローに自然に溶け込むものにしたかったのです。
その週末の間に、Hendrikは私たちのコンセプトを磨き、単なる「LLMの魔法」に依存しないようにしてくれました。彼はCodeRabbitのセマンティックな要約を、コンテキストレイヤーとして使う方法を示し、CodeRabbitの動作やプロジェクトへの統合方法について、質問に対して寛大に時間を割いて答えてくれました。
Erikのワークショップは、CodeRabbitをより深く理解する助けになり、私たちの統合をただの抽象的なものではなく、現実的なものに近づけてくれました。
私たちは何度もフィードバックを求め、そのたびにプロジェクトは改善されました。
これはジュニア開発者として私が得た最も重要な教訓の1つです。
助けを求めることはスキルです。そして、勢いと明確さをもって行えば、経験豊富なエンジニアは実際に助けてくれます。
良い「助けを求める」方法は、次のようなものです。
これによって、スポンサーのブースでの会話を本当のつながりへと変えることができます。
CalHacksの翌週、私はHendrikとErikに連絡し、インターンシップの機会がないか、プロセスをどう進めればよいかを相談しました。
彼らは私をCodeRabbitのAI推進担当VPであるDavid Lokerにつなぎ、面接を設定してくれました。これはハッカソンの延長のようなものでした。
その翌日にオファーをもらいました。
私はこれを誇示するために共有しているわけではありません。今の環境で重要なことを示しているからです。すでに自分の考え方、作り方、反復の仕方を示しておけば、人々はあなたを信じやすくなるということです。
最後に、具体的なアドバイスを残したいと思います。もっと早く誰かに言われていればよかったと思うからです。
チュートリアルは役に立ちます。しかし、道筋を変えるプロジェクトは、次のようなものです。
これらのプロジェクトは、面接を尋問ではなく、対話として感じさせます。
完璧になるまで待たないでください。
フィードバックが設計に影響を与えられるように、十分に早く頼みましょう。
誰かの時間を大切にすることは、沈黙することではありません。明確にすることです。
次のものを示してください。
「何を作って、何を学んだか」を伝えることは印象に残ります。
「ぜひチャンスをください」といった一般的なメッセージは残りません。
面接準備は大切ですが、印象的なものを作ることが注目を集め、機会を生みます。
私はCodeRabbitでインターンシップを得ました。理由は、実際のものを作り、早い段階で助けを求め、素早く反復し、証拠をもってフォローアップしたからです。
そして驚くべきことに、このループは続いています。週末の実験として始まったハッカソンのプロジェクトが、今ではインターンとして取り組める本格的なプロダクト向け取り組みへと発展しつつあります。
ジュニア開発者が厳しい環境で目立ちたいなら、単に一人でより一生懸命応募するだけではありません。自分が誇りを持てるものを作り、それを興味を持ちそうな人の前に出すことです。