Feedback Loop
AI機能を作るときの考え方 2024年9月
ChatGPTが登場してからAIが身近になり、エンジニアとしてもAIを活用した機能を作りやすくなった。例えば文章を自動でカテゴリ分けしたり、画像に何が写っているかを判定したり。こういった内容自体はChatGPT以前の機械学習でもずっとできていたことだが、新しいのは素人でも扱えるようになったこと。機械学習を勉強したプロが半年かけて作っていたようなものを、素人が1週間くらいで作れる。短く作れると改善のサイクルも回しやすい。AI活用がとても身近になっている変化だと捉えている。
私は10年ほどiPhoneアプリを作るエンジニアをしていたが、AppStoreが登場した初期の頃のような熱狂を感じる。加速度センサを使ってスマホでかめはめ波を打てるアプリが流行るなど、新しい技術が楽しまれる感じ。初期の頃に名を馳せたアプリがそのまま生き残っていることはほとんどないと思うけど、それでも黎明期からモバイルにチャレンジしていた会社・個人は早めにノウハウやフィードバックを得られ、今でも良いアプリを作っていたりする。
モバイルアプリ市場は成熟してきていて、かつては個人で作ったアプリが注目されたりそこから会社が生まれたりしたけど、今は大企業がちゃんと資本を投下して質の高いアプリを作り、それが莫大な費用でマーケティングされる。こうなると個人のエンジニアとしてはチャンスは狭い(ゲームはまた別)。初期のうねりというか、大きな会社が参入するか迷っているようなタイミングの方が個人としてはやれることが多くて面白い。iPhone登場で誰もが一台コンピュータを持ち歩くようになってマップやSNSが隆盛したように、AIでも同じような生活変化が起きる。
ChatGPTのリリースが2022年11月。まだ2年もたっていないが、GoogleやMetaなど他社もそれに追随し、いろいろなモデルや関連する技術が開発されている。流れが早すぎて専門にしていない人間が完璧に追い続けるのは難しい。AIを専門にしていない自分のような人間は大局の流れを掴みにいくのが良いとおもっていて、モデルの性能はどんどんあがるしコストはどんどん下がる。今できないことが1年後には当たり前にできるようになる。今時点のAIでできることに捉われすぎず、「こういう未来になったら良いよね」と考えながらプロダクトや新機能を考える。例えばChatGPTのモデルでも色々あるが、安く抑えるために性能の低いモデルで頑張るよりは、一番性能の高いモデルで動かして何ができるかを考える方が今後に効いてくる気がする。ちなみに自分としてはフォーマットの変換が面白いと思っていて、テキスト→絵に変換する「ドット絵日記」や、テキスト→音声に変換する「zenncast」「castmake」を作った。AI関連のニュースは追うだけではなかなか肌感で理解しづらいと思っていて、手を動かしながら学ぶのが良い気がする。作りながらプロンプト(AIに指示する文章のこと。指示の仕方によって出力がかなり違うので工夫する余地がある)や周辺技術への理解を深めていく方法は自分にあっていると感じる。
日常で使っているいろいろなツールにAIが組み込まれていくが、まったく使わないようなものも多い。そういう機能は「AIでできること」をベースに企画されたものなのかなと思う。先に課題があり、それを解決するためにAI技術が使われるのが望ましい。ただ「AI搭載」とか謳えるとマーケティング的に強かったりするのもあるし、AI活用の知見を早めから溜めておけばいずれ良いAI機能が作れるとも思うし、ここらへんは何が良いとは一概に言えない。個人としては課題解決の手段としてのAI活用を意識していきたいと思っている。
心理的安全性について
心理的安全性という言葉を初めて目にしたのは六本木の病院の待合室で、そのとき高熱が出て体調を崩し、会社を早退した私は診察を待ちながらスマホでネットサーフィンをしていた。記事の内容はGoogleの調査結果をまとめたもので、パフォーマンスの高いチームに共通する特徴を調べたところ、年齢・職種・性別・スキル・メンバーの仲の良さ・飲みにいく頻度などは相関がなく、心理的安全性という要素が大きく影響するらしい。心理的安全性とはざっくりいうと自分の意見を臆せず表明できる環境のことで、言いたいことを言い合えるチームは強くなる。こう書くと当たり前な気がするが、当時はスキルや仲の良さが大事なのかなぁとぼんやり思いつつどこか違うようにも感じていて、そのモヤモヤが晴れたようでうれしかった。その後インフルエンザと診察されて寝込むことになったのもあり、このときのことは印象深く覚えている。
それから10年経ち、特にWeb業界では心理的安全性というワードは馴染みあるものになっている。本もたくさん出ているし、チーム内で心理的安全性が話題になることもある。ただその概念はやや拡散気味で、同じ単語でも微妙に意味することが違ったりしてきており、個人的には扱いづらい単語になっているように感じる。そんな時に出会ったのが『「心理的安全性」はなぜ混乱を招き続けるのか』という記事。よくある勘違い、心理的安全性が目指すもの、対人リスク、心理的安全性を高める方法など、どのトピックも大きく頷きながら一行一行大切に読んだ(Webサイトの読み心地も抜群)。
何か気になることがあったとき、それをコメントできる関係性の方が良い。ただ関係性によっては「細かいかな」「毎回言っててウザがられるかな」「自分のやり方を押し付けてしまっているかな」などの思いが頭をよぎって伝えづらい。難しいのは関係性が希薄な初期だけではなく、仲良しになってからもこういった内容を言いづらいこと。好きな相手に嫌われるのは怖いし、純粋なフィードバックだとしてもそれがどう捉えられるかは相手次第だし、致命的なことでない限りわざわざ言わなくてよいか…と飲み込んで終わりにしてしまう場面も多い。そして数週間〜数ヶ月経つとまた同じことが気になり、言った方が良いのかまた悩む。こういうのに脳のリソースをとられてしまう。
自分の理想としては入社1年目でもベテランでも同じように話せるのが良いと思っていて、自分がベテランになってもアホな質問をし続けるのをOKとしたい。出典を忘れてしまったが昔読んだ文章で海外の授業を描写したものがあり、教師がザーッと説明したあとに質問を募ると手が挙がり、その生徒は「◯◯ってどういうことですか?」とまさに今教師が説明していた内容を質問する。日本だと「いま言ってたやん!」とツッコみたくなるが、教師は「OK、良い質問だね!」と言って黒板に向かい、まったく同じ説明を再びはじめるという話がある。登場する生徒にも教師にも学ぶことがある。心理的安全性は自動的に作られるものではないので、個々人が意識していく必要がある。まずは自分から、気づいたことは指摘してそれでも周りの評価が下がらないことを示したり、逆に指摘された場合はそれを素直に受け止めたり。まずは自分のできる範囲でトライしていきたい。
趣味はPodcastです
社会人になって10年以上経ち機会は減ったが、今でもたまに自己紹介しないといけないときがある。知らない人の前で話すのは苦手で、自分のことを話すのも苦手。与えられるのはわずか数分だけなのに、その時間とは不釣り合いなくらいストレスを感じてしまう。
人となりを知ってもらうために趣味やハマっていることを話したりする。趣味はないこともないが、人前で話すような趣味はない。散歩はあまり盛り上がらないし、スプラトゥーンは最近あまりやってないし、読書はジャンルが広すぎて共通の話題で盛り上がりにくい。何に一番時間を使ってるかというと個人開発だが、仕事と近すぎて真面目になりすぎる気がする。あれこれ考えていくうちに、Podcastを軸に自己紹介するのが良いのではないかと行き着いた。
Podcast(≒ラジオ)は学生時代から聴いていて、いまだと霜降り明星のオールナイトニッポンを毎週聴いている。オードリー、バナナマン、Creepy Nuts、YOASOBIなどラジオで好きになった芸人・アーティストも多く、家事や散歩をしながらラジオを聴くのは今でも好きな時間。同じくラジオ好きの友人と、自分たちでPodcastの配信もしている。隔週くらいで好きに喋ってるだけで多くの人に聴いてもらうことは目指してないが、それでもたまにお便り(Google Formで募集している)をもらえるとうれしい。収録時は喋ってる瞬間そのものが楽しいので、良い時間を過ごせている。
最近では個人開発でPodcastに関するWebサービスを作った。castmakeというサービスで、ブログやコラムをもとにAIがラジオを作ってくれるというもの。「今週とくに注目を集めたガジェットは〇〇です!まず、この商品は〜」などように、本文の内容に沿ってAIがラジオパーソナリティ風に喋って紹介する。その人のオリジナリティがよく出ているのが良い自己紹介だと思っているが、その点 Podcastを聴いている > Podcastをやっている > PodcastのWebサービスを趣味で作っている の順で母数は少なくなっていると思うので、独自の自己紹介にはなっている気はする。
不特定多数の場に出ることは経ってはいるが、たまにある。次のそういう機会では「趣味はPodcastです」を試してみたい。
問題を切り分ける
プログラミングをしていると、難しい場面にあたることがある。意図せぬ不具合、原因不明の挙動、ドキュメント通りに実装しているのになぜか動かない、など。プログラミングというと新しい機能を作り上げていくイメージがあるが、実はこういう調査系の時間がとても多い。3時間くらい問題を調査してコードの修正は1行だけ、というのも珍しくない。
問題を調査するのに大事なのが原因の切り分けで、これはセンスが問われる。経験が浅いとよくやってしまうのがいきなり問題を修正しようとコードを書き始めることで、これは良い手ではない。全体像が見えない状態での修正は根本原因の解決にならなかったり、別の箇所で同様の不具合が発生しているのに気づかなかったり、新たな別の不具合を生んでしまったりする。まずは全体を見渡して仮説を立て、ツリー構造の上から順にそれを確認していく。ある値を変更して不具合が再現するのを確認したり、ログを追加して不具合が起きたときに期待通りの出力があるのを確認したり、少しずつ問題を絞り込んでいくのが良い。
こういう問題特定のアプローチはプログラミングの外の世界でも役立つと思っていて、なにかトラブルがあったときにいきなり解決に当たらず、まずはその問題を網羅的に考えるようにしている。人間関係の揉め事であればAさんとBさん両方に話を聞く、他のメンバーで同じように感じている人はいないか聞く。サービスの新機能が使われていない場合は慌てて機能を継ぎ足すのではなく、なぜ使われないのかを関係者で議論し、そこで出た仮説をデータ分析で裏付ける。結局同じ対応に着地することも多いが、こうした議論を経るのと経ないのとではその後がまるで違う。長い目でみると地に足のついた議論ができるチームになる。
最近は仕事で採用面接をする機会も多い。問題特定を特定する思考法はとても大事だと思うが、曖昧なスキルなため履歴書には書かれない。どういう仕事をしていますか?と聞いて答えられるようなものでもない。強いていうなら論理的思考と近いが、それだとMECEとか三段論法とかが出てきてちょっとニュアンスが違ってくる。ただ、履歴書には書けないが、直接話せばすぐにわかる。こちらの質問を解釈する力や聞かれたことに順序立てて答える力。そういうところに自然と染み出しているように感じる。
「いまだ成らず」を読んだ
「いまだ成らず 羽生善治の譜」を読んだ。
棋士界の動向をまったく知らない自分でも羽生さんは知っており、子供の頃からなんとなく好きだった。数年前に読んだ「大局観」には千手先を読むことから直感的に次の一手がみえるようになった思考の変化について触れられていて、経験を積んでいくといずれロジックを飛ばして最良手に辿り着くことがあるのは面白い感覚だと思った。羽生さんの何千分のイチのスケールだがこの感覚は自分の仕事でも感じるときがあり、Webサービスの仕様を検討する際にロジックをあまり考えずともすぐ決められるときがある。そしてそう判断できる理由を考えていくとこれまでの意思決定であったり、経験してきたことが礎になっていることが分かり、大局観だなぁと本を思い返したりしている。
本書はそんな羽生さんについて書かれた一冊。羽生さんといえば最強というイメージがあったが最近は勝率も落ち負けているらしく、A級から落ちてB級になったりもしているらしい。かつての最強がまた挑戦者へ。AIが登場し研究の方法がまるで変わったりもする。それでも羽生さんは心を曲げず、好奇心をもって探究していく。
本の構成で面白いのが、ドキュメンタリーなのに羽生さん本人には一言も話を聞いていないこと。本人ではなく周りのプロ棋士の生涯を描き、そこに羽生さんが登場していくことで外堀から羽生善治像が描かれていく。羽生さんの背中をみながら苦しんだり、タイトル戦で挑むも自分のペースを崩して負けたり、はじめての一勝を手にしたり。存在感というか、羽生さんが強く純粋であるゆえに誰もそこを無視して通り過ぎることはできず、向き合い続けさせられる。こういう構造のドキュメンタリーは初めて読んだがめちゃ面白く、2日くらいで一気に読み進めた(どの章もパンチラインだらけ)。
印象に残っているところを二つ。かつてのプロ棋士は特定の政治家と仲良くなったりするのが当然だったが、羽生さんはそういったものに関せずより良い一手を追求し、それが将棋のゲームとしての面白さを世間に伝え、将棋が広まっていったこと。伝統や精神性ではなく合理的に考えるのはゲームの参加者を増やすことにもつながる。会社のよくわからない捻れた構造は末端メンバーの思考停止につながることが多いと感じていたが、その理由が言語化された気がした。
もう一つは、勝ち続けているときでも違う戦法を取り入れる、負けても微笑みながら感想戦に挑むなど、好奇心と探究を忘れないこと。誰かとの勝負だと思うと負けは良くないことだが、より良い一手を追求する道だと思うと勝ちも負けもその材料になる。最近「習慣化を意識すると自分との勝負になるので、人との比較から卒業できる」みたいな一文をなにかで読んだが、それと重なる部分があるように感じた。
最後に、羽生さんが藤井くんとのタイトル戦前に語った一言。
「一局の将棋は後悔だらけですが、後悔の多い人生こそ充実している。甲乙付けがたい局面、難しい状況にたくさん出会っているということですから。」
こう言える・思える人間でありたいものです。