はじめに
案件でクリーンアーキテクチャ, DDD, Goを用いたAPI開発に携わることになりました。
それらを本格的に触ったことがなかったので、
設計に関する技術書を数冊購入し、読み始めました。
ただ、正直なところ最初の感想は、
- 用語が多い
- 前提知識が多い
- 読んでいるが、理解が進んでいる実感がない
というもので、見事挫折しました。
そこで技術書を読む前に、AIと壁打ちしてからもう一度読んだらチョットだけ分かるようになった話を共有したいと思います。
技術書で挫折した方にとっては参考になる話かもしれません。
技術書が読めなかった理由
問題は、「自分の理解レベル」と「技術書が想定している読者レベル」が噛み合っていなかったことでした。
一方、自分は、クリーンアーキテクチャを実運用で使ったことがない、DDDの用語も断片的にしか知らない、Goでの設計経験も浅いという状態でした。
このギャップを埋めない限り、
何度読み直しても同じところで止まると感じました。
いきなり読むのをやめた
そこで、一度「ちゃんと読む」ことをやめました。
代わりにやったのが、
AIに作ってもらった自分専用の前提教材をやってから、もう一度読んでみる
というアプローチです。
その教材作りに使ったのが、ChatGPTでした。
あくまで「正解を教えてもらう」のではなく、
- 学習の順序を整理する
- 自分の理解を言語化する
- 設計の判断理由を言語化する
- 用語の意味と概念同士の繋がりを理解する
ための「壁」として使いました。
最初にやったこと:ロードマップを作ってもらう
まずAIに頼んだのは、ロードマップを提案してもらうことです。
「新卒2年目のクリーンアーキテクチャとDDD、Go未経験の開発エンジニアが、これらの技術を学んだ上でAPI開発に応用できるまでのおすすすめのステップを提案してください」
いきなり本筋の話を始めるのではなく、前提と全体感を整理してもらいました。
確認問題を軸にした学習
各ステップでは、必ず次の流れを繰り返しました。
-
確認問題を出してもらう
-
自分で答える
-
間違えた部分・曖昧な部分を重点的に説明してもらう
-
再度確認問題
-
正解できたら次へ進む
AI相手でも、「自分の言葉で答えられないものは理解していない」という前提で進めました。
設計の「なぜ」を聞く
学習中は、常に次のような質問を投げていました。
- なぜこれはこのレイヤーに置くのか
- なぜ別のレイヤーではダメなのか
- これはビジネスルールか、技術的な詳細か
- 将来変更されるとしたら、どこが変わるのか
この「なぜ」を繰り返すことで、
設計を暗記ではなく「判断基準として理解する」という状態に近づけたと思います。
怪しいと感じたら根拠を求める
学習中に、AIが前に言っていたことと全く違う説明をし始めることがあります。
そのような時は、
「その主張の根拠となる記事URLを貼って。あと該当箇所を引用して」
と指示を出して、その記事を読みに行ったりして、自分なりに正誤判定をしていました。
改めて技術書を読む
一通りのステップを終え、ある程度理解が進んだ段階で、
最初に挫折した技術書をもう一度読みました。
- 用語に引っかかることが少なくなった
- 章立ての意図が分かる
- 「なぜこの説明が必要なのか」が前よりは理解できる
という状態になっていました。
一方、壁打ちをしたけど「間違った理解をしていた部分」もちょくちょくありました。
私としては、ここで間違いに気づいて修正することも、とても重要なポイントだと思っています。
あくまでAIは理解の足掛かりとして利用して、最終的な理解は技術書に当たって都度修正していくことが大事だと考えています。
まとめ
今回の経験から得た教訓はシンプルです。
-
技術書は、自分の理解レベルに合った前段階が必要な時がある
-
AIは答えを得るためではなく、思考を整理するために使うと効果的
-
最終的な理解は、原著や技術書に当たる
もし技術書を読んで詰まっているなら、
一度読むのをやめて、AIと壁打ちして前提を整える
という選択肢も、一つの有効なやり方だと感じました。
🌺 沖縄から「21世紀を代表する会社」を創る仲間を募集
シーエー・アドバンスは、「沖縄のインターネット産業の未来を創る」をビジョンに掲げ、サイバーエージェントグループの一員として、ABEMAやAmebaを支える社内システムを開発しています。 勤務地は沖縄・那覇市 おもろまち。 Next.js 、React、Ruby on Rails、AWS などモダンな技術で、東京・ベトナムのエンジニアと協業。若手が裁量権を持って挑戦できる環境です。
失敗を恐れず挑戦できる文化。一緒にアドバンス(進歩)しませんか?
https://hrmos.co/pages/ca-adv-group/jobs?category=1580771415836098560