創造は止まらない

職場に新メンバーが増えたので、Welcome会と称してお互いに自己紹介する会が開かれた。その中で私が喋ったことは、私の中では今後もそう変わりないだろうと思ったので、再構成して残しておく。

普段何を考えているのかを振り返りまとめたことを、私にとって重要な哲学として話した。

クリエイティブな活動がめちゃくちゃ好き

クリエイティブな活動というのは森羅万象とも言えるので、もう少し具体的にすると、次のような活動だ。

  • 自分でつくること
  • 他人がつくったものを見たり聞いたり体験したりすること
  • 他人がつくることを手伝うこと

幼少期を思い出すと、私はずっと何かを作っている。
実は私以外の人も同じような行動をしていると言われれば、何も特別なことでは無いのかもしれない。けれども、私はそれが特別だと思い込んでいる。作ることが、私の記憶の真ん中に居続けているからだ。誰がどんな評価をしようとも、ものづくりという概念は、私の精神世界では、ランナーにとっての陸であり、船乗りにとっての海であり、飛行士にとっての空だ。

ものづくりに生きる人間にとって、その喜びを共有できる人もまた特別だ。世界は広いので、今の私に理解できる範疇を超えた創作もある。でも、分かる気がするのだ。なぜつくるのか。理由は無いかもしれないから「なぜ」はおかしいか。それでも、分かる気がする。 別に答え合わせがしたいわけじゃない。そもそもできるものばかりじゃない。ただ、つくったものや、つくっている姿には、私を熱く燃やす「特別」がある。

ソフトウェアエンジニアリングの「エンジニアリング」の部分がめちゃくちゃ好き

「工学における教育プログラムに関する検討委員会」の工学(エンジニアリング)の定義が気に入っている。

工学とは数学と自然科学を基礎とし、ときには人文社会科学の知見を用いて、公共の安全、健康、福祉のために有用な事物や快適な環境を構築することを目的とする学問である。工学は、その目的を達成するために、新知識を求め、統合し、応用するばかりでなく、対象の広がりに応じてその領域を拡大し、周辺分野の学問と連携を保ちながら発展する。また、工学は地球規模での人間の福祉に対する寄与によってその価値が判断さる。 — 『8大学工学部を中心とした 工学における教育』

なぜ好きになったのかの「はじまり」を思い出した。
それは、「自分がソフトウェアに与える影響よりも、ソフトウェアが自分に与える影響の方が圧倒的にデカいこと」に感動してしまったのがきっかけだった。

結局、エンジニアリングとは、人間を中心に現実を変えることであり、ソフトウェアエンジニアリングでは計算機という現実を介して人間に影響を与える。そして、数え切れないほどの計算機が稼働している現代では、現実を変える力にレバレッジがかかっている。私のプログラム1行の変更が、全世界の計算機を動かし、人々を動かす可能性があるのだ。当時高校生だった私は、自室で自分用のプログラムを動かしたとき、その可能性に気づき、武者震いしていた。

それから私は、自分用に身の回り不都合を解決するためのソフトウェアを書き続け、今は誰かのためのソフトウェアも書き続けている。
確かにソフトウェアを変更するのは大変だけど、大量にコピー・実行されるし、一度作ったものは大体動き続ける。そして、私たちとつながり続けるのだ。

現実を変える部分(人間に影響を与える部分)がエンジニアリングで、エンジニアリングを加速させるのがソフトウェアだ。 私は、エンジニアリングのためにソフトウェアの専門技術を高めている。

持続可能であることは結構大事

先の通り、現実を変えることに莫大なモチベーションがある。
ただし、変える方向に個性が出る気がする。私の場合は、持続可能な方向に変えたいと思っているかもしれない。

私自身が「このままじゃもたない、辛い、厳しい」と感じること自体がすごく苦手で、そういう経験を最小限にするには何をすれば良いかを考えることが多かった。おそらく多くの人はそういう経験を乗り越えられているのだと思うけど、私は逃げてばかりいる。私が弱い人間であることは良いとしても、何も産まない(と本人が感じる)痛みは何としても避けねばならない。

幸い、私には現実を変える力(ソフトウェアエンジニアリング)がある。
ソフトウェアエンジニアリングをし、私や誰かの不便・不安・苦しみを少し楽にし、笑顔を増やし、お金を稼ぎ、そのお金でソフトウェアエンジニアリングする。私のやりたいことだ。

だから、ただお金が増えるだけのエコシステムにあまり興味はないし、「誰か」に共感できないエコシステムにもあまり興味はないし、お金が稼げないエコシステムにもあまり興味がないのだろう。

辛いことから逃げることの当然の帰結として、自分を犠牲にするつもりも全く無い。同様に他人にもその人自身を犠牲にしてほしくない。
嫌いな言葉は"犠牲"だ。目的のために何かを失うことを受け入れることが良い訳無い。目的も達成するし何も失わない、そうするために、我々には現実を変える力があると思い込むことが好きだ。

未来の痛みから、あらかじめ逃げる戦略は、持続可能性の議論と似ているような気がする。
私は、現実を持続可能なものにしたいのかもしれない。

AIに目を輝かせている人々の隣で、ソフトウェアエンジニア業に苦しむ

プログラミングやソフトウェアエンジニアリングの初心者じゃないけど、AI時代?の"ソフトウェアエンジニア業"がつらい。

  • 個人の感想です
  • フィクションが含まれています
  • つらさから抜け出せる見込みがあるのでブログにしてます

分野を限定すれば、私の知識や経験はAIを駆使したところで1,2年やそこらではまくられないくらいの大きさがあると思う。それに、変に謙遜するのは私を認めてくれた方々に申し訳ないとも。だから、私は初心者じゃないということにして話を進めてみる。

「AI時代」と雑に括ってしまったけれど、私がつらみを感じている状況は、そんなに単純じゃない。もちろん、AIによるコーディングや設計の壁打ち役などの業務支援は、大きく仕事の形を変えたが、それに適応できている人・チーム・会社と、そうでないそれが存在するのも実際のところだと思う。こういった差として現れている部分を、私の興味の赴くままに考えてみたい。

追記: 赴くままに書いたらまとまりなくなってしまいました。読みにくいけど、それもまた趣。


ソフトウェア工学をしっかり学んでいない私が言えることではないというのは承知したうえで、あえて明言してみる。ソフトウェアエンジニアリングとは、ソフトウェアの専門技術を以て社会の人々の役に立つ営みだ。

そう思い込んでいるから私は、ソフトウェアエンジニアを名乗れるのが誇らしい。
「プログラミングができる」というちっぽけな力が、誰かの不便・不安・苦しみを少し楽にし、笑顔を増やし、お金を稼ぎ、そのお金で明日もプログラミングができるのだ。

本題に入ろう。最近の私は、ソフトウェアエンジニアを名乗りたくない。

ソフトウェアエンジニアリングをしていないからだ。


事業ドメインの知識を覚え、事業・業界・市場の構造を理解し、社内の文化を内面化し、メンバーのパワーバランスや社外とのコネクションを把握する。そして、ビジネス戦略を見定める。

そういった業務知識が前提にあるからこそ、意味のある形でソフトウェア作ることができ、誰かの役に立つのだと思う。アジャイルとかドメイン駆動設計とか特定のプログラミング言語フレームワーク・プラットフォームとか、そういった哲学・プラクティス・道具と真剣に向き合う営みは間違いなく重要だ。だけど、文脈から切り離されたそれらは、向き合う価値を維持できているだろうか?

私はそう思わない。釣り針に価値があるのは、釣り糸に結われていたり、結われて魚を釣る未来があるからであって、そうでない釣り針に釣り針としての価値を維持する力は無い。

業務知識の重要性は、AI時代になって更に増した。

AIは、動作するソフトウェアを作るのに必要な時間を大幅に短縮させる。単位時間あたりに実施できる施策が増えるということは、その密度に耐える必要がある。1年前の施策は破壊しても良いかもしれないが、1ヶ月前の施策とは協調したほうが良いケースが増える。複数の施策が相乗効果を生むことが期待されるし、少なくとも食い合わないようにしなければならない。その調整にはもちろん業務知識を使うことになる。

AIへの指示、AIが書いたコードのレビュー。AIがコードを書き始める前の最終的な指示を送信する前に、コーディングする内容を確定させなければならない。ならないってほどではないけど、そのほうが処理時間やトークン量とリクエスト数消費は効率的にはなると思う。そのためには、やはり業務知識が必要だ。


業務知識の重要性は大きくなっているのに、業務知識を得る難易度は上がっている。

人力のコーディングから得られていたドメイン知識の発見を、AIコーディングでも同じように得られるかというと、そうはいかない。

すでに業務知識を持っているメンバーがAIを使えば、持っていないメンバーがいくらAIをフル活用してもその差は埋められないほどに大きくなる。

ここまでに書いた内容は、ソフトウェア開発の現場の空気を感じにくい立場にいる人にとって、本当に理解できるものなのかもよく分からない。プログラミングができるという技能を、言葉のまま"プログラミングができる"と理解している場合、"プログラミング"ができているメンバーが"普通"だと考えてしまい、"プログラミング"ができないメンバーに合わせる発想はしにくいような気もする。
たとえ、できない原因に業務知識の有無があるとしても。


事業ドメインの知識を覚え、事業・業界・市場の構造を理解し、社内の文化を内面化し、メンバーのパワーバランスや社外とのコネクションを把握する。そして、ビジネス戦略を見定める

先に述べたこれらは、前提と言いつつも簡単なわけでは全く無い。少なくとも、私個人の能力的には。しかし、能力が不足してる中でも前提を満たせるように、できることはやりたい。

やりたいのだが、普通に大変なので、その大変さに立ち向かうためのエネルギーが欲しい。空腹で走り続けることは難しいように、仕事をするにも栄養が必要だ。

私にとっての仕事の栄養は、自分が共感できる誰かに喜んでもらえる未来のイメージだ。


具体化されたプログラミング課題を消化するだけの仕事に対する興味はもうほとんど残っていない。その課題が発生した文脈と紐づけて考えないと、飲み込む価値は無いと反射的に感じている自分がいるのが分かってしまう。 実際には全く価値が無いわけではなくて、その課題が解消されたらお金にはなるのかもしれないとは思うけど、じゃあ、そのお金で明日は誰の役に立とうとしてるのか教えてほしい。

考えるのをやめて、作れって言われたものを作るだけをやっていこうと何度も思ったし、実際何も考えてない時間もたくさん過ごした。けど、そんな作業はAIが上手にやってくれるので、私はAIにすべてを外注する中抜業者として死んだ魚の眼を練習するしかなかった。

結局、私は私の世界の中で"ソフトウェアエンジニアリング"をおままごとしたいだけなのかな。そう考えると、コドモだなって思う。


それでもっ

それでも、私はソフトウェアエンジニアリングが大好きだし、未来に希望を持ちたいから。

やるしかない。ビジネスが成立することは重要だ。それは難しいことだ。だけどその上で、ビジネスが回るその中に、私がソフトウェアエンジニアリングを好きでいる理由を宿し続けたい。

技術を信じている人と一緒にいよう。未来を信じている人と一緒にいよう。

それが私の答えだ。

AIがなんだ。使えるものは使う。何のために使うかを最初に考えることが大切だ。そして、いつ決断の時が来ても最善の選択ができるように、技術力を準備しておくのだ。

後で役に立つことが保証されていない中でも準備ができるのは、技術を、未来を信じているからに他ならない。

私は信じられる。未来のお前はどうだ。

練習が重要

行うに難しいことや、どうにも苦手なことがたくさんある。

例えを挙げてみたが、恥ずかしいので消してしまった。
とにかく、期待に反して、たくさんのことがうまくいかない現実がある。

うまくいかないままの状態には納得できない。 困ることもあるし、なにより悔しい。 なんとかして、上手とまではいかなくとも、恥ずかしいと自己評価せずに済むくらいにはできるようになりたい。

重要なもの

xxxが上手にできるようになりたい。
目標にもよるが、大抵の目標を達成することに大きく寄与するのは、センスだと思う。

この目標は達成する価値があるだろうか? この解決方法は目標達成に効くだろうか? そういったことを、膨大な目標や解決方法の選択肢の中から適切に選び取ってやり抜いた先に成功へ導くセンス。 かに見えるセンス。

私の経験から考えると、当の本人が吟味している選択肢はそんなに多くない気がする。 それは、自分に合わない選択肢を予め排除したり、必須の条件を満たす選択肢に特に注目したりするからだ。 そしてこの機能は何らかの形で物理的に実装されていると考えている。

その、センスの良い人が持っているが意識していない、センスが悪い人は意識しているが持っていないフィルターが重要であり、それがセンスなのではないだろうか。

xxxが上手にできるようになるためには、センスが重要だ。

ニワトリタマゴ

練習すればセンスは磨ける。 そういう考えもある。

確かに、センスが良い人は、練習を多く積んできたからセンスを得られたのかもしれないとも思う。 一方で、センスが悪い人は、どんなに練習をしても光るものが見えないこともあるのではとも思う。

練習したからセンスを得たのか、センスがあったから練習が機能したのか。 いったいどちらが先なのだろうか。

個人的な仮説は「何を良いと感じるか(=センス)は、先天的なものであり、その後の環境によって重要度が左右されるものである」だ。
とすると、センスが先ということになる。 私の考えでは、センスが悪ければ、センスの悪い練習になる。センスが重要だと考えるのはそのためだ。

しかしよく考えると、そのセンスが評価されるのは後なのだ。 我々は、生まれた瞬間にセンスの有無を評価されているわけではない。 そもそも、何のセンスがあるかなど、その分野に向かって少なくとも一歩を踏み出さなければ、評価しようがないのだ。

前述した、莫大な練習をしたセンスが悪い人も、後の評価は分からない。

何を良いと感じるか

まだ評価されていないセンスを持っていると、"信じること"か、"信じないこと"か、それとも?

私は。

だから。

make 桜

最近は暖かい日が多く、とても過ごしやすい。
急に冷える日もあった中でタイミングを伺っていたであろう桜もついに開花したようだ。そんなニュースを耳にすると、いつもの部屋の空気がほのかに甘いような気がした。

今日は何も予定のない素晴らしい1日だ。こんな日は引きこもるに限る。

さっそく朝のルーティンを延長して、顔面づくりの練習に没頭した。スキンケアやメイクは変数が多すぎて非常に混乱するが、実験と練習の繰り返しは思いのほか楽しい。おっと、沼がこっちを見ている。 1時間ほど経って固まった背筋を伸ばすと、これまでで最高の出来栄えの顔面と対面することとなった。 上機嫌である。

そういえば、昨日たまたま外出の用事があったので外に出たところ、桜が見ごろだと知った。
今日は気分が良いので、珍しく引きこもりを休業するらしい。

手始めにコーヒーショップに行った。 今の気温だとホットでもアイスでもちょうどよさそうだなと思いながら歩いていたが、店に着くころには体がほかほかしてしまったので、迷わずアイスの春っぽい飲み物をもらった。

桜のたくさん咲いている公園は大変賑わっていた。その割には空いているベンチがいくつかあって、賑わいの中心は元気に走り回る子供たちだと気づいた。 腰かけたベンチの近くで、息を切らすまで続いた鬼ごっこがひと段落したようだ。私も心の若返りのためにたくさんの酸素が必要になったところだったので、精一杯呼吸をしておこう。

満開の桜を長めながらやるのにぴったりなことと言えば、もちろんneovimの盆栽だ。

$ make CMAKE_BUILD_TYPE=Release

neovimのビルドログを眺めるという最新の健康法を実践した。

まっさらな init.lua は、桜と一緒に新年度の新たな門出をお祝いしてくれている。

足掻く

足掻くことを大切にしていきたい。

大切にしていきたい、というのは、足掻かないよりは足掻きたい、ということだ。

足掻かないとは、困難を乗り越えようとせず、それに背を向けることだ。

困難を乗り越えるのは私であり、私にとっての困難とは私が乗り越えたことのない経験だ。

困難を乗り越えるためには、準備が出来ている私が必要だ。

しかし、準備が追いつくことはない。困難は突然やってくるのだ。

つまらないことに、困難は繰り返される。
人は生まれたら死ぬし、出会えば別れがあるし、焦ったら事故は起こるし、歩いたら転ぶのだ。

私に死ぬ準備はできてないし、別れの準備もできてないし、事故の準備もできてないし、転ぶ準備もできてないけど。
けれども、生まれてしまったし、出会ってしまったし、焦ってしまったし、歩いている。


足掻くことを大切にしていくとは、「そういうポーズ」を取ることだ。

私にはそういうポーズがどういうポーズなのか分からないけれど、きっとあるだろう「足掻くことを大切にしているポーズ」を取るのだ。

繰り返しやってくる困難は、ポーズを洗練させ、いつかはポーズを取っていることも忘れてしまうくらいになるだろう。

その姿は、誰かの目には準備ができている姿に見えているかもね。