半年間、AIを使ってみて思ったこと
ここ半年感、AIをどう使うか?が個人的なブームだったのですが、Webサイトをリニューアルしたてで、いい機会なのでそのあたりのことをふりかえってつらつらと書いていこうかなとおもっています
まずなんとなく思っているのが、 AIは早い。無茶苦茶に早い。でも、自分ができなかったことができるようになる、というものではない(少なくとも今のところは) というのがざっくりとした印象です。逆に言うと、ひたすらに時間をかけたらできるようになる、というレベルまで無茶苦茶早く到達できる、とも言えるとおもいます
それ以上のことをしようとすると ソフトウェア的な設計の不備だったり、そもそもよくわからなさすぎて指示が出せない問題だったり、そういったハンドリングがそもそも不可能な領域に到達してしまって八方塞がりになってしまう、、、ということになることが多いような気がしています
なので、そうなってしまう前に
- 設計を抽象化したり、
- 問題を切り分けたり、
- 自明の問題はテストを書かせたりして正当性を担保して切り分けたりする、
のようなことをして、人間がある程度より深い詳細レベルのことを考えないでよくする、というふうなテクニックを使わないとあっというまによくわからないものすごい量のコードにうもれるという状況になるわけですね。。
そういう意味だと人間側のやることもどんどん変わっていくなと思っていて、これまでは(少なくとも僕の回りでは)プログラムやロジックの記述ができる人は偉かったのですが、これからは:
- どの機能が重要で、どの機能を捨てるべきなのかの設計判断のできる人、
- デバッグ中に何が問題なのかを直感的に見極められる人、
- AIは案外視野狭窄になってしまう時があるので、そのあたりの堂々めぐりを解決できる人、
あたりが重要になってくるんじゃないかな?って思っています。少なくともソフトウェアのエンジニアリングにおいては
ただし、人間が一度に覚えておける事柄には限りがあるので、なるべく詳細レベルの情報は忘れて、なんかこういうことを最初のほうは話していた気がする〜 みたいなイメージだったり、プロジェクト序盤でシステム図を書いてもらったのからズレてない?とか、そういった感じの 「直感担当」 みたいな立ち位置でかかわっていくのが今のところ一番調子がいいように思っています
ソフトウェアエンジニアリングの文脈でよく登場する格言として「オッカムの剃刀」というものがあります。今のAI開発の時代において、「ほっといたら人間が介入できないほど複雑になってしまうシステムをシンプルに保つ」という指標としてこれは結構重要な概念だなという気がしております。「KISSの原則」もそうですね
ここ半年で得られたノウハウとしては:
- シンプルに保つ。シンプルなものの組み合わせで複雑なものを表現する
- 大筋で何をやっているのか、ぐらいは常に把握できるぐらいの情報密度に留める
- 自分で出来上がりが想像できないものは作れない。まずはイメージできるようにする
あたりは、これまでも、これからも重要なんだろうな、という気がしています