Feedback Loop
現実逃避としてのプログラミング
フラストレーションが溜まったとき、息抜きが必要。仕事のプレッシャーやプライベートの問題。ストレス解消のために遊んだり、たくさん食べたり、人に話を聞いてもらったりする。そういうストレス解消法のひとつに創作がある。
以前、家の引越しが予定通りに始まらず、午後2時の予定が午後7時開始になったことがある。待ち時間は5時間。しかもちょっとずつ時間が後ろ倒しになるため、家には居ないといけない状況。段ボールに囲まれて快適に過ごすのも難しい。なかなかモヤる状況だが、パソコンだけは手元にあったので黙々とコードを書いた。以前から作りたかったサイトがあったのでそれを作る。デザインを考え、必要となる技術を調べながら作る。夢中になっていると5時間はあっという間で、引越し業者が来たときも「もうちょっとコード書きたかったな」と思う。時間を潰すときはこうやって待ち時間以上に時間がかかるものに取り組むのがコツだと思っている。5時間で大体形になり、少し整えて翌日にはリリースした。
前職で勉強会を主催したことがあり、それは社外から250人が集まるエンジニアイベントだった。数ヶ月かけて色々準備していたが、イベント当日に台風が直撃。朝に中止の案内を出したがそれに気づかず会場に来てしまう人がいるかもしれないので受付で半日ほど待機することになった。自分含めて3名で待機していたが、ただ待っているだけでは暇すぎる。折角なのでアプリでも作ろうか、と時間潰しに作ったのが「ALPACA」というアプリだ。
ALPACAは写真整理アプリで、スマホのカメラロールにある似ている写真を自動で並べ、一番写りの良いものを選んで残りをすべて削除するというコンセプト。子供や猫の写真など、ベストショットを求めて連写する機会があると思う。そして連写しているスマホの容量がすぐいっぱいになる(特に当時は)。そこで写真整理を効率よくできてると便利なのではないか、という話になり作ることになった。
近くにあったホワイトボードを持ち出し、画面構成や必要な機能を書き出す。滑らかに使えるように体験を設計する。そうこうしていると半日はすぐ過ぎ、待機時間が終了。解散してもよいのだがもう少し話したくて近くのカフェに入り軽く延長戦をした覚えがある。その日に作り切るまではいかなかったが、台風直撃という出来事がなければこの3人で作ることはなかったと思う。後日リリースしたALPACAは思った以上に気に入ってもらえ、いま見たら3,000件以上レビューがついている。ありがたい。Twitterで紹介されてバズったり、自撮りユーザーにウケて韓国のAppStoreランキングで1位を取ったこともある。いろいろ面白い経験をさせてくれた。
人生やってると色々と嫌な出来事も起き、それをどこかにぶつけざるをえない時もある。創作はその受け皿のひとつだが、他のストレス発散と違うのは後に残るということ。悲しい気持ちや辛い気持ちを一時的に忘れられ、さらに作ったものが後で誰かの助けになったりもする。やりきれない気持ちの向き先として、創作はとても優れている。
麻雀と仕事は似ている
最近麻雀にハマっている。歳の離れた兄の影響で小学4年生の頃麻雀のルールを覚え、大学時代に友達と打ち、最近はAbemaTVのMリーグを観て、オンラインやリアルで友人と打ったりしている。麻雀は仕事と似ているという説もあり、日常へのフィードバックが多い趣味だと思う。
麻雀は4人(ないし3人)で卓を囲む。1局で和了(あが)れるのは4人のうち1人だけ。他のプレイヤーの出方や雰囲気を見て自分の行動を調整する必要がある。技術と運が半々で大事である。サッカーやバスケなどのスポーツはプロが素人に負けることはないが、麻雀では1回きりの勝負なら素人が勝つこともある。ただ100戦したらプロが勝つ。そういう戦いである。調子が良いときは誰でも勝てるが、調子が悪いときに如何に工夫してダメージを最低限にしたり和了への抜け道を探すか。そこに技がある。
最善を尽くしても運が悪ければボロ負けするときもある。その時は気持ちを切り替える。自分の考え抜いた一打を信じる。プロそれぞれに打ち方の特徴があり、Mリーグを観ていてもあのプロならこう打つがこのプロはこう打ちます、みたいな人による違いがよく解説される。どれが正解というわけではなく各々のスタイルを貫いた上で一番を決めるスタイルウォーズ。ただし自分のスタイルを曲げて負けると後悔が残る。あるスタイルが得をすることもあれば損をすることもある。自分のスタイルでブレずに戦うプロの姿には感動をもらえる。
大学時代にはこういった麻雀の性質をまったく理解しておらず、ただ自分の手だけに集中してよく負けていた。Mリーグ(とその前身のRTDリーグ)を観てから麻雀の面白さに気づき、友達に声をかけてまた打つようになった。プロの手をプロが解説する、一打一打に込められた想いや考えを言語化してくれる。チーム対抗なのでスポーツ的な盛り上がりもありつつ、麻雀への理解も深められる素晴らしいコンテンツだと思う。声をかけた友達とは正月やお盆、ゴールデンウィークなど年数回集まって麻雀するのが恒例となり、その日は朝から夜まで麻雀をしながら喋る楽しみな一日となっている。
サイバーエージェントの藤田社長は麻雀と経営が近しいと言っている。ハライチの岩井さんは麻雀を運と実力の入り混じった最高のゲームと呼ぶ。適当に打っても楽しいが、私はルールの理解や読みの深さ、そして自分の読みをどこまで信じられるかが面白いポイントに感じている。最近は牌効率という、この場面ではどの牌を切るべきかを考えるテキストなども買ってしまった。麻雀の面白さにズブズブとハマっている。
ChatGPTに本気で向き合う
先日飲み会で同僚が「ChatGPTと2時間本気で向き合った」と言っていた。ChatGPTの凄さはすでに体感している人も多いと思うが、本気で向き合うとはどういうことか。曰く、何かを調べるときに検索エンジンの代替として使うのではなく、難しい仕事をする壁打ち相手として深く話す使い方をすることを本気と呼んでいた。
技術的に複雑な設計、例えば権限管理について、自分で調べながら設計していくのは中々骨が折れる。権限の最適なあり方はサービスによっても異なり、どれが良いと一概に言うのは難しい。「権限管理」のキーワードでググって出てくるのは一般的な手法で、ロール制御には大きく二つのやり方があって〜といったエントリー的な内容が多い。
自分のサービスの情報を伝え、実現したい権限の仕組みを言語化して伝える。ChatGPTから返された回答に不服なら追加で考慮して欲しいポイントを書き、会話して深めていく。回答の精度が高まるようにいろんな前提情報を注ぎ足す。文脈が多いほど良い回答が得られるので、やがて自分の欲しかった情報に辿り着く。
思えばベテランの先輩に聞くときも同じことをしていた。何かの仕事に行き詰まったとき、実現したいこと、自分で考えたこと、試したこと、どのようにうまくいかなかったか、などを事前に整理して伝えて相談する。エラーメッセージなどがあればそれも添付する。そうして初めて問題解決に向けた議論を始められ、そこからは深堀りの質問の受け答えをしながら答えに辿り着く。今はもっと賢くなっているが、登場直後のChatGPTは四年生大学卒の新入社員だと思って接すると良いと言われていた。一般的な知識や教養はあるが、仕事の専門性はまだない状態。質問の文脈をできるだけ与える考え方はいまも有効だ。
先日のアップデートで、ChatGPTに検索モードが追加された。これは質問に対して情報をインターネットから検索し、それに基づいて答えてくれる機能。試してみるとZennやQiitaといった技術共有サービスから個人ブログまで様々なところから情報を集めてきて、それを元に回答してくれる。「淡路島の観光スポット」などを調べてもいろんなサイトのクチコミやランキングを総合したような結果を教えてくれる。これは新しいことを調べる時に人間がする行動とまったく同じ。情報ソースも明示してくれるようになり、内容が疑わしい場合は自分の眼で確かめられるようになったのも大きい。
プログラミングにおいて、AIを活用できるかは人間側の能力がキャップになるという説がある。コードの生成はAIが得意とするところだが、それが期待通りに動くものかは人間が判断する必要がある。部分的に修正を依頼したり、AIに伝わりやすいように言い換えたりする。そのためには人間側のスキルのキャパシティをあげておく必要がある。超人でなんでもできるパートナーが登場するというよりは、自分が3-4倍動けるようになるというのが感覚に近い。行動レベルはそのままで並列に実行できるようなイメージだ。AI活用のために自身のレベルアップが重要、そしてそのレベルアップのための勉強においても、ChatGPTは強力なパートナーになってくれる。
人にすぐ影響される
人に影響されやすい。偉人の自伝を読むと翌日からそのように振る舞ったりするし、Appleの本を読めばシンプルで洗練されたデザインを作りたくなる。良いサービスに触れるとそれを応用できないか考える。身近な人でもそうで、近くで一緒に働く人の考え方や仕事の進め方を勝手に真似ていってしまう。
大学の頃に聞いた話では、身近な人の名前を10人あげていき、その人たちの年収を平均したものが自分の年収になるらしい。有名なコンサルの大前研一氏も自分を変えたければ環境(付き合う人)を変えろと言っている。普段の生活で触ったもの、見たもの、聞いたものが自分の思考になる。周囲に似る性質があるので自分がなりたい人たちの中に身を置け、というのは的を得た助言な気がする。私も気持ちのいい友人や知人と一緒にいる時間を最大化したいと思っている。大人になると用事なく人と会う機会も減り、放っておくと関係性は薄くなる。繋がりを保ちたい人には自分から声をかけるのは意識したい。
人を真似てしまうのは悪いことではない。「コピーキャット ― 模倣者こそがイノベーションを起こす」では優れたものの模倣の組み合わせがイノベーションだと定義している。世の中で流行っているもの、過去に流行ったものに対して別角度からアプローチする。例えばプリクラが人気だが、それをスマホで使えるようにするにはどうするか?切り口を変えると新しい体験が提供できる。
パーツは模倣でよいが、どのパーツを選択するかにはセンスが現れる。良いものを良い形で組み合わせる。このパズルの組み方がセンスで、作り手によって異なる部分。どれだけ良いものに触れてきたかの引き出しの数、どれだけのパターンを試したかの試行の数などによりセンスは深められる。AI時代ではひとつひとつのパーツを作るのは簡単になっていく。それをどう利用するかを考える部分に人間の知恵が出てくる。
自分の記憶を過信しない
記憶力には自信がある方だが、過信しないようにしている。気になる記事、誰かへの連絡、やることリストはその場ですぐメモする。脳みそをできるだけ空けておく。
いろいな方法を試したが、シンプルに忘れたくないことを自分宛にメールを送り、メールボックスをメモリストとして使う方法に定着した。あとで読もうと思った記事があったら自分にメールする、何かアイデアを思いついたら自分にメールする、嬉しいことやモヤることがあったら自分にメールする。URLの保存やメモの保存などそれぞれに最適なツールはたくさんあるが、その切り替えにもコストがかかるので何も考えずいったんメールするのが自分には楽。
自分にメールを送る様式は一定の市民権があるようで、一番有名なものでCaptioというアプリがある。シンプルな使い勝手で数年愛用していたが、最近サービス終了してしまい今は「Note to Self Mail」というアプリに切り替えた。元々シンプルなのでほぼ同じ使い心地。ちなみにアプリとしてはかなり作りやすい部類なのでストア上にはたくさんのCaptio風アプリが並んでいる。XでCaptio終了を嘆く声がいくらかあるが、その人たちに自分の作ったCaptioクローンを返信して宣伝してたりするのも見かける。個人開発は作るの半分、必要な人に知ってもらうのが半分難しい。
誰かが本をオススメしていたらすぐにポチる。これは見聞きしたときが最大の熱量なので、メモして後から見返してもあまり買うタイミングを掴めない。先に買って手元に置いておいて、読めるときに読むようにしている。できれば本はAmazonではなく地域の本屋さんで買いたいと思っているが、ビジネス本や技術本は置いてないし重いものも多いのでAmazonでポチる。予約注文もできるし翌日すぐ届いたりするし、便利さに飲み込まれている。
仕事ではClickUpというタスク管理ツールを使っていて、仕事中のタスクはここに登録する。期限を入れたり詳細なリンクを入れたり、他のメンバーをアサインしたり。そうやって深く使おうとするとやはり専用のサービスの方が必要なものが揃っている。職業的に仕事でメールを使うことはほとんどないが、外のお客さんと連絡するときは1日2回メールボックスを確認していた。上からメールを順に見ていき、返信するかタスク化するかしてメールは削除する。確認のタイミングでは必ずメールボックスが空になる状態にする。前職の社長が言っていた方法で、この作法を聞いてから気に入ってなんとなく真似している。気になったことはその場で解決かすぐメモする。脳を占有するものをできるだけ減らすというのは、生活でも仕事でも大事にしている。