自己紹介
名前 :中村健介
最近の趣味 :グランツーリスモ7
最近ハマった映画 :F1
大学専攻 :情報系専攻
Webを学び始めた時期:今年4月
初めまして!「よちよちエンジニア」を生業としています中村健介です!エンジニアを目指し、先輩の会社で修行(インターン)をしています。
導入
先輩の会社に入ってはや8ヶ月、同じくインターンをしている4人ほどのメンバーと開発したサービスのβ版をリリースし、今はその修正に追われている!ということは置いといて、つい先日、アドベントカレンダーをこの日に設定した日に、記事を書くためにこの8ヶ月を振り返ってみようと思いながら、リリースしたサービスのソースコードを眺めていたら、自分が実装した部分は読めたとしてもリリースに必須とされるロギングやセッション管理、認証の部分が読めない・わからないのです。
さらに、ChatGPTなどに質問をするのですが、それでもあまり内容が頭に入ってこない。ずっと書いてきたPythonが急に怖くなりました。ソースコードが延々に深く繋がっているように見え、プログラミングってこんなに難しいの?どこまで知識をつければいいの?という分からない問いにぶ使ったのが先月の11月。
思い返せば、今年はいくつかのハッカソンやインターンに参加し、OpenAIやLangChain, Swift, TypeScript, React, Pythonなど主要技術使いはするものの、深くまで学ぶことなく次々と点々とし、気づけばプログラム自体が書けない自分がそこにはいました。
(ここまで長くなりましたが、ここからが僕の中で今年一の発見です💡)
「効率化」との出会い
そんな中、やはり「楽しくなければ続かない」という言葉が自分の中でふっと湧いて出たのです(笑)。思い立ってはすぐ行動、YouTubeでWebプログラミングについて調べ出し、そうこうしているうちに、とあるチャンネルに出会いました!
その名も「ゆるコンピュータ科学ラジオ(ゆるコン)」です!
詳細は割愛しますが、その名の通りとってもゆるいラジオなので、見たことがない人やコンピュータに詳しくない人にでも是非ともおすすめしたいチャンネルです!
この番組を楽しく見ていたら、「業務効率化を極めた人間の末路は…?」というタイトルの動画に激突し、動画中盤からの業務効率化オタクの話で、プログラミングを使ってNotionやGoogleサービスを連携させ、業務を効率化するソフトを個人開発するエンジニアたちが最終的に「メンテ地獄」という罠に陥るというオチに本気で爆笑してしまい、またそれと同時に自分が探し求めていたプログラミングへの「楽しさ・面白さ」はこれかも!と思ってしまいました
。
行動
そう思うや否や、「すぐに行動」が大切です。3日坊主になることを危惧しながらも、自分の中で効率化したいもののアイデアを浮かべ、本気で実装しようと考えたものが、「Zenn CLI」とローカルLLMを繋いで、自分の備忘録自動生成アプリ「Kenn_Zenn(健全)」です。(今思うともうちょっといい名前なかったのかな?笑)
Kenn_Zennのβ版は完成し、ローカルLLM(Ollama)とZenn CLIの2つのコンテナを通信し、テーマを決めてLLMで記事を作成した後に、/publish APIを叩けば自動で記事がpushさせるところまではできたのですが、作ってみたら、もっと実用的でないとなぁと思うところが数多くありました。(記事は自分で書きたい、けどAIに任せるところは任せたいなど)
そこで今は早くも「Kenn_Zenn v.2」に移行中です(笑)。
普段自分が面倒だと考えているものを自動化アプリによって解決するぞという気持ちは開発を続けるモチベにもなり、Pythonを中心とした開発におけるさまざまな基礎的な部分を学ぶことができています。
技術項目
以下では、僕がKenn_Zennを開発している間に学んだ内容できるだけ多く載せたいと思います。
- FastAPI : router, background_task
- Pydantic : BaseModel, TypeAdapter, 公式ドキュメント
- Pydantic-settings : 公式ドキュメント, 記事
- Docker : Claude Codeで学んだ
- Docker compose : Claude Codeで学んだ
- Docker Secrets : Claude Codeで学んだ
- GitHub Actions : Calude Codeで学んだ
- Ruff : 公式ドキュメント
- Claude Code : 記事1, 記事2
- Pre commit : 公式ドキュメント
- Anthropic : 公式ドキュメント, Web Search
今回の開発で真っ先に良かったと思える点が、Claude Codeを活用して課題を解決できたことが挙げられます。Claude Codeに分からないことをわかるまで深く質問したり、なかなかマスターできなかったDockerは何通りもの環境をAIに質問してすぐに試せたことで知識の定着が早くなったと考えています。
Claude Codeを使い始める前に初心者が爆速で Claude Code を習得する 10 のステップという記事を見たおかげで、プロジェクトのルートに以下のような.claudeおよびsessings.mdを設置し、Pythonを体系的に学びたいというプロジェクト設立の経緯をClaudeに覚え込ませることができました。Claudeに質問すればヒントを与えてくれ、勝手に実装をさせないようになっています。
# Claude Code Configuration
## ユーザーについて
私は大学生でプログラミングを学習中です。エラーの直し方だけでなく、**なぜ**エラーが発生するのか、どうすればより良いコードが書けるのかを理解したいと考えています。
## Claudeの支援方法
### エラーに遭遇した時:
1. **すぐに修正しない** - まずエラーが何を意味するのか簡単な言葉で説明する
2. **なぜ発生したか説明する** - 根本原因を理解できるようサポートする
3. **ヒントを与える** - すぐに完全な解決策を提示するのではなく、解決への道筋を示す
4. **関連する概念を教える** - エラーが理解していない可能性のあるプログラミング概念に関連する場合、簡潔に説明する
5. **完全な解決策の提示** - 私が求めた場合、またはヒント後も詰まっている場合のみ
### コードレビュー時:
1. **可読性の向上を説明** - コードをより明確で理解しやすくする方法を示す
2. **ベストプラクティスを教える** - なぜ特定のアプローチが他より優れているか説明する
3. **潜在的な問題を指摘** - 問題が発生する前にバグや問題を見つけられるようサポートする
4. **より良いパターンを提案** - より効率的でクリーンなコードの書き方を示す
5. **例を使用** - 役立つ場合は簡単なコード例で概念を実演する
### コミュニケーションスタイル:
- 学習者に適した明確でシンプルな言葉を使用
- 忍耐強く励ましを与える
- 複雑な概念を理解可能な部分に分解
- 役立つ場合は類推や実例を使用
- 私のリクエストが不明確な場合は質問する
### 学びたいこと:
- エラーメッセージの理解とデバッグ技術
- クリーンで読みやすいコードの書き方
- コーディングのベストプラクティスの順守
- 解決策の丸暗記ではなく、プログラミング概念の深い理解
- 問題解決スキルの開発
## 望ましいやり取りの例:
**避けるべき:** "修正はこれです: `const x = 5;`"
**望ましい:** "このエラーは変数を宣言する前に使用しようとしたために発生しています。JavaScriptでは、変数を使用する前に`const`、`let`、または`var`で宣言する必要があります。まず変数を宣言してみてください。この変数にはどの宣言が適切だと思いますか?"
---
**重要**: 目標は単に問題を素早く修正することではなく、私が**学び**、**理解する**ことをサポートすることです。
しばしば、議論されるAIの使い方ですが、「分からないものをわかるようにするために使う」というヒントを得たれた気がします。
最後に
今回はプログラム初心者である私がモチベを上げるために取り組んだ道のりをまとめてみました。
いかがだったでしょうか?
この記事を読んでくださっている方は僕よりもはるかにプログラムに精通し、エンジニアとは何か?という問いにもある程度答えられると思います。みなさんプログラムへのモチベはなんでしょうか?ぜひ、他にもプログラムを続けるコツなどあれば、教えていただきたいです!
12月も末までちょうど折り返し今年もラストスパート頑張っていきましょう!!![]()