プログラマぽい何かの独り言

適当に独り言を言います。

クヨクヨしたらまた戻ってこい。俺。

悩み

個人開発をしている。

そうするとフロントエンド、バックエンド、インフラまで目を通す。

仔細が気になるので調べると深淵が広がっている。

深淵から戻りトイレで読んだ記事でふと思った。

VisionProを作り上げるというApple社の技術、というより、低レイヤとアクセスできる権利を持つシステムソフトウェアエンジニアリングが強いことはかなり重要だと。

Jobs自体は「理想のソフトウェアを考えるなら理想のハードウェアも考えるべきだ」というアランケイ博士の話をiPhoneという1つのえっぐいプロダクトとしてこの世に顕現させたわけだが。

さて、僕のやっていることはwebである。

時間が経つと無価値になっていく。

この行為は将来無価値になる。

価値がある行為は、人々に何かしらの形で便益をもたらすものだ。

そこに倫理とか道徳みたいなもののラインを超えない感じがあれば受け入れられる。

さて、今後重要なのはますますコンピュータサイエンスとハードウェア、システムソフトウェアのエンジニアリングだ。

webシステムのエンジニアリングなんぞ無価値になる。

無価値は言い過ぎだろうがせめて保守だろう。

そんなもんの何が楽しいんだ。現に今その作業がクソつまらないじゃないか。

文法覚えて文脈を抑えてそこに合うように開発すればいいだけじゃないか。慣れれば創作ではなく機械的作業だ。

重要なのは世の中になんの価値を提供するかなんだ。

どんな便益を人々にもたらすかなんだ。

俺は一体何をやってるんだ。

展開

とまあ絶望感を知り合いの小規模経営の人にぶつけてみたんだが、詰まるところ

「エベレストの麓に立って登れるわけがないと考えているのと似た感じだよね〜。どうやったら登れるか考えて実行するしかないんだよね〜。スモールステップに分割するしかないよね〜。でもスモールステップが見えないから、普通の人ではやらない量と質で毎日圧倒的にこなすしかないよね〜。」

という会話をされたわけだ。

いう通りだ。

一旦次の創業相談に向けて開発を終わらせることにした。

2023振り返り

 振り返り

メモ

正月の夜ご飯のお手伝いをしていて忘れていた。

最大イベント

今年最大のイベントは京都に引っ越したことだった。

京都に引っ越した後、週末はちょくちょくお寺で時間を過ごし、心を落ち着ける作業をした。

自分がどうありたいのかが見据えて動くことで安寧が訪れることがわかった気がする。

その2

京都に引っ越したことによりエンジニアコミュニティに顔を出すようになった。

そこで思わぬ出会いをいくつか体験できた。

技量を上げていきたいと言う気持ちが沸々と湧いた。

その3

go言語で作るインタプリタを用いてペアプロすることによって、自分の2倍の経験があるエンジニアから「焦りすぎなんだと思います」という言を頂戴したことによって、腰を据えて学ぶ姿勢を見つめ直すきっかけになった。人のつながりは財産だと思う。

その4

自社に新しく入られた方と合宿でチームを組んでいたが、非常に楽しかった。

また、その方と意気投合したことにより勉強会に誘っていただき、楽しい会話がたくさんできた。

人との繋がりは財産だと思う。

その5

合宿ではフロントエンド開発力の弱さを痛感した。

バックエンドの開発も実施したが、個人的に、ハッカソンにおいて大事なのは動くUI/体験できるUXである。

来年もし合宿がまたあればそこでリベンジしたい。

そのためにフロントエンドの開発力を上げていきたいと思った。

その6

親族の葬式に人生で2回目に参加した。

お骨の扱いが田舎の葬儀屋と東京の葬儀屋だと、断然東京だなと思ってしまった。

しかし、集まった人々や親族の多さは1回目に遠く及ばず、「多くの人々と関わって影響を与えた人の葬式は大きいものになる」と思った。

また、自分が関わった人々が自分の遺体にどう接するかは、

  • 関わった回数
  • 毎回関わった際の質

に依存すると思った。

どうせなら泣いて最後は笑顔で送ってもらえるような人でありたいと思った。

人との繋がりを大事にする必要がある。

その7

とある目的でリクエストログを分析してリリース最善時間帯を探していた。

その過程でデータをぼんやりと眺めていたら、ユーザーの行動に関するインサイト仮説を得ることができた。

刺激的で楽しい体験だった。

もっとよりよく加工し、よりよく活用し、より良い意思決定に繋げていけるよう、統計分析を学習したいと思った。

その8

英会話は継続することが重要なのでゆっくり鍛えていきたい。

現実をゲームと捉える

きっかけ

戦略の要諦という本の序章を読んでいたら、詰まるところ「難しいが最重要箇所であるところ」を見極めてそこに全力投球できるかどうかが重要と書いてあった。(優先順位を決めて、手持ちのリソースで解決可能か判定して、リソースを集中して投入するという3つの能力が必要らしい)

そこでふと「最重要だけど難しい箇所を見つけた際、乗り越える能力が低いと相当苦労するのでは?」と思った。

ここから自身がこの数週間で経験したことから悟ってきた内容をベースに「人生はレベル上げしてボスを倒すゲームとして捉えると楽しい」という考えに至った。

気づきを得たきっかけ

休日、go言語で作るインタプリタという本を題材にペアプロをしていた。

ペアプロ相手はプログラミング言語を自作したい人だった。(この人はこの人で面白い)

この人は僕の2倍以上プログラミングの年数があるが、ペアプロしてもらっているうちにふともらった言葉で非常にためになるものがあった。

「焦りすぎなんだと思います」

この言葉をきっかけにゆっくりと文章とプログラムを読む作業をしたところ、以前よりプログラムを読んだり文章を読んで頭に入ってくるようになった。

この体験は非常に貴重で、その人とのペアプロ後の1週間の間、仕事の後に読む文章をゆっくりと読んでゆっくりと作業してみることにした。

結論、ここ数年で経験したことがないくらい学びが増えた。

ここからわかったことは「焦りすぎてあらゆることを雑に拾っていたため、深い理解を得られなかった。そしてわかればなんてことはない。」ということだった。

そうして1週間経って、またその方にペアプロしていただいたのだが、そこでまた知識が連鎖的につながっていく快感が得られた。

そこでふとわかったことがあった。

知識自体はバラバラだったし、興味本位で雑にのぞいてただけだが、結果的に1つのコンテキストに集約できた。

この快感は凄まじかった。

つまり、雑に覗くだけでも一応効果はあるということだった。

レベル上げの方向性

ふと浮かんだのはレベル上げしてステータスを割り振るという方式との対比だった。

あれは戦って勝利することで得られた経験値をステータスに割り振っている。

現実は経験値という抽象化された概念として取得できない。

特定の方向性でレベル上げしていっただけである。ゲームのステータス上だと筋力だけやたら高いとかそんな感じだと思う。

自分の現実世界に即していうと、「高トラフィックで安定稼動するシステムのアーキテクチャという方向性、kaggleという方向性、プログラミング言語開発という方向性、OSを載せるハードウェアの開発という方向性」などさらに細かく分類できるが様々なレベル上げする方向が存在している。

今回、僕は「goで作るインタプリタ」を通じて「パーサやコンパイラの方向」でレベル上げができたことになる。

そうしたら今まで不可解だった特定の言語で書かれた解説書などについて読めるものが増えた。

一方、今自分はOS自作とかハードウェア自作の方向性に進もうとしているのだが、その過程で「モダンLinux」という本も読んだのだが、副産物として他のLinuxに関する記述にも反応できるようになり、理解する際の苦労が減った。

自分は「自作OSと自作ハードウェア」という方向性でレベル上げができたことになる。

面白いことにこれらに通底しているのは「特定の規則性を見出し、それらを利用して高速で解きたいパズルをとく」という作業がいかに速いかということな気がする。

さて、メモリ効率とか色々考え出すと、利用する道具の仕様は当然のこと、それらを効率的に扱うためのデータ構造の持ち方や作り方にも重要になってくる。

こうなるとますますデータ構造とアルゴリズムが重要に感じられてきた。

ここまでくると大学数学も再入門して幅を広げたくなってきた。

落ち着け

方向性を見極め、最重要箇所に集中することを忘れてはならない。

一方、セレンディピティを意図的に得る時間を毎日30分ご褒美に作っても良いだろう。

成長の種は実は持っていた

序文

本日は本来、東福寺で紅葉を鑑賞する予定だった。

結論、行かなかった。

というのも、「Go言語で作るインタプリタ」という書籍を一緒にペアプロする約束をしていたからである。

(その約束を忘れていた)

しかし、大いに学びがありヒントを得たのでメモすることにした。

初めてのインタプリタ開発

抽象構文木を構築するように構造体を定義していき、スモールステップ(著者の歩幅)でテスト駆動開発しながら開発を進めていく形式だった。

書かれているソースコードを理解するために、かなり何度も同じ箇所を読み直した。

なぜ読めないのか考察をしてみたら、「脳のメモリからデータ構造やメソッドが揮発するから」であった。

さらに、同じメソッドを何度も呼び出しているうちにどこに戻るのか忘れてしまうという現象に陥った。

この事象にあったのはこの業界に飛び込んで最初の1.5年くらいまでだったと思う。

自分が関わってきたwebシステムはスモールなので、読んでるうちにメモリから揮発するなんて事象はここ数年味わったことがなかった。

伸びる感じがした。

ペアプロしてくれた人からのフィードバック

「焦りすぎなんだと思います」

非常に良かった。

疲れてくると自分は投げやりになるのだが、実はここに「焦り」が混ざり込んでさらに理解を難しくしているのだった。

そこを意識してからは「なぜ読めてないのか」が理解できるようになり、コードを追えるようになった。

どうしたらコードが読めるようになるか?

手法はたくさんある。

繰り返し処理を追う、わかる人と一緒にとことんやる。

著者は個人用のデバッグコードを仕込んで値を追っていた。

そうしてデータ構造の中に格納した値がどう変遷していくかに気を付けて読み進めていく。

webシステムがなんなのかよくわからずにひたすらにやっていた頃を思い出した。

実はもう成長の種自体は持っていたのだった。

それを明確なスキルセットとして意識して使えるようになることが重要だった。

気づき

イミュータブルな実装が流行っているが、理由がわかってきた。

腕があまりなくても対応できるようになる代物ということである。

一度生成されたオブジェクトを不変として扱うことで、余計なことを考えずに済む。

ある程度わかりやすくなる。

様々な設計論(フォルダ構造とそれにつける修飾子の論)が存在しているが、それはつまるところ「どんな人が書いてもルールさえ守ればある程度の綺麗さを保てる」という代物なんだな、と理解した。

(速度は知らない。パズルが得意ならすぐ慣れると思う。僕としては、スタートアップのケースであれば、無駄にファイルを大量に生やす行為には疑問を覚えるのだが・・・)

最後に

自分としては、読めるコード、書けるコードを増やしていくため、さらに様々なソフトウェアの中身を読んでいきたいと思う。

そのために、わからなくても繰り返し処理を追ったり、デバッグコードをうまく仕込んだり、「諦めないこと」「焦らないこと」をモットーにやっていきたいと思った。

今が最高

序文

休暇を1日もらって4日間の休みにした。

比叡山延暦寺に行った。

行きのバスの中で「法華経とは何か」という中公新書の本を読んでいた。

丹念にサンスクリット語で書かれた原典や大乗仏教各種の経典の原文を読み解きつつ、時には他の仏教学者の見解に対して反論しながら、丁寧に釈尊の教えがどんなものだったのか、大乗仏教がどのように生まれ出てきたのか、などが書かれていた。

バスはクネクネとした坂を登っていくため、途中で気持ち悪くなったのだが、これは半分くらいは釈尊の教えを歪めていく人々の言葉や行動に対してもだった。

唱えた人がいなくなると死人に口無しこれよしとばかりに虚飾したり神格化したりと、自分たちが元から持っている文化を織り交ぜて人を下に見るような行為を行なっているというところが気色悪いと感じた。

どこかで聞いたことのあるような感じで、人は過ちを繰り返すなと思った。

「賢者は歴史に学び、愚者は経験に学ぶ」

などという文言があるが、些か間違いではなさそうな気がした。

そんなこんなでバスから降りたが、あまりにも気持ち悪かったので抹茶ソフトクリームを食べ、回復した。

本編

www.hieizan.or.jp

バスの到着点から入り口に向かうと東塔のエリアから見れる。

まず、東塔エリアが広い。

メインは修理中の根本中堂であり、修理中の様子を見られる。

他にも宝物殿、法華総持院、阿弥陀堂など、とにかく見るものは多い。

また、それぞれの建築物同士の道のりが少々長く、坂の勾配がなかなか急なものも多い。

西塔エリアにはバスで10分程度でいけるが、歩いていくオプションもある。

法華総持院と阿弥陀堂の間にある道を通過して歩いていける。

受付の方に伺ったところ、そこから大体15分という話だったので、歩いてみた。

坂を降りて、少し上がって、下にゆっくりと長く坂を下ると浄土院についた。

枯山水が非常に綺麗だった。

数々の坂を越えてきた後だったのもあり、ちょっとした達成感に浸りながら浄土院の枯山水を鑑賞する体験は、非常に良かった。

浄土院からさらに山の中を抜けていくと、常行堂と法華堂があった。

そこを抜けて坂を下ると、釈迦堂に至った。

釈迦堂を見た後、疲れがどっと来た。

そこから東塔に戻る必要があるのだが、要はひたすら逆に歩いていくだけなので、下り坂が上り坂に変貌した。

疲れがどっと来た後の上り坂はお気持ち的にだるかった。

のだが、試しに「疲れている中でどれくらい早く登れるか(怪我しない程度に)」というゲームを開始したらあっという間に終わってしまった。

調子に乗って、山頂まで登ることにした。(1.7km程度だったし)

これもまた上り道できつかったのだが、ある気づきを得た。

「楽しい」

あ、疲れたな、ちょっときついかも、というところに少し踏ん張りを入れて我慢して頑張った後、「もういっちょ」となると「楽しい」。

きついし息切れは多少あるが、ただひたすらに楽しかった。

トレイルするためのルートらしいので、そりゃ整備されてる。おそらく岩肌だらけだったらこうはいかなかっただろう。

しかし、楽しかった。

道中、人がいないのでものすごくニコニコしながら「今が最高なんや!(ハイキューの宮侑)」などと宣っていた。

でもそうだった。「今が最高だった」。

気づき

ここから1つ気づきを得た。

「どっと疲れがくるのを感じても、日頃から鍛えていればその後のもう一踏ん張り必要な作業にも耐えうるのでは?」

ハードワークの極意とは実はここにあるんじゃないだろうか、と思ったのだった。

つまり、日頃から鍛錬し、少し上に挑んでレベル上げをしていき、より大きく難易度の高い仕事に挑むことができるのでは?と。

大きく難易度が高い仕事というのは、それだけで時間を必要とするはずである。初見はきっと至らないだろうし大変だと思う。しかし、大きく難易度が高い仕事というのは「踏ん張って背伸びすれば達成できる」水準にあるから出会った仕事かもしれない。(もし今の自分が逆立ちを繰り返さないといけないならレベルが合ってない)

そう仮定すると、自分が踏ん張れば達成できるレベルの仕事をこなす回数を積むことでレベル上げが順調になされていくのではないか?するとハードワークもできるのではないか?と考えた。

気付き2

追加の坂登りのあと、ケーブルカーに乗ることにしたのだが、看板通りにいくら歩いても見えてこない。

不安になり元来た道を戻ってみたのだが、やはり自分が進んでいる方向が正しかった。

結果的にちゃんと駅につき、無事下山できたのだった。

疲れがどっときても、レベルが合ってさえいれば、日頃の鍛錬で得たもので太刀打ちできる。少しの踏ん張りに耐えられると、そこからは楽しいの無限ループに突入する。しかし、迷いが生まれると急に疲れがその分のしかかってくる。

ここは注意点だと思う。

気づきその3

実はきつくても楽しいが継続した理由の1つに、「看板に目標地点までの距離が書いてあった」ことも関係していると思った。

例えば「西塔まで1.8km」、「山頂まで1.7km」。

西塔から往復で戻る際の疲れ具合が把握できていたので、実は知らず知らずのうちに「1.7km」を見た際に疲れ具合の見積もりが完了していたと思う。見積もりが完了した時点で「行ってやらあ!」となったような気がする。

つまり、きつい道を辿る際(おそらく今後、自分がwebシステムやスマホアプリの開発、起業して経営するとなった場合でも)計測してマイルストーンを適切に配置し、自分がどれくらいの力を出しているのか、どれくらいの余力があるのか、を計測することで、どんなに疲れていても「行ってやらあ!」となれるし、「今が最高なんや!」となれると思った。

今後の動き方

やりたいことには期限をつけ、マイルストーンに分割し、各マイルストーンに対して自分がどれくらい努力する必要があるかを計測し、次のマイルストーンに向かって「やってやらあ!」と取り組むことで、人生はよりよく続いていきそうだ。

所感

書き出せば当たり前のことな気がするが、人生でまともにそんなことをやってこなかったので自分が今まで大学受験で第一志望落ちたり、いくつかの目標を達成できなかったのはこれが原因なんじゃないだろうか・・・?

お利口さんを脱する のレベル上げ

初めの呟き

2週間ほど東京で過ごして、ようやくこちらに戻ってきた。

結論、心が静かになった。

実家は正直あまり落ち着かなかった。

ジムにもいきにくかったししばらく実家にはいきたくないなと思った。

why?をすると理由は単純で

  1. 思い通りに自分の生活をコントロールしにくい
  2. 常に集団で過ごすことに快適さを感じない

ということがよく理解できた。

呟きの考察

集団の力はなんとなくわかってるつもりだが、やはりまだ自分で色々やりたいと思うあたり、起業家気質ではないと思う。

起業家の心得みたいな本を読んでいると「あなたが成功しないための良い方法は他人を巻き込まないことである」という文言があり、良いチームワークのある企業に勤めたことによりその辺りは実感している。能力が高い人材は多く、彼らが得意を持ち寄り信頼し動くだけで、数ヶ月で良いものが出てくる。だからわかってるつもりである。

自分の中で当たり前だと思っているビジネスやソフトウェアの知識くらいは持っておいて欲しいなくらいに思っており、いちいち伝えるために時間を費やすのが嫌なだけなんだなと気づいた。

同時に、そんな自分に相手を巻き込んで不快な思いをさせるのは申し訳ないと思っているので、1人で色々やった方が楽なんだなと思った。

まあ自分が起業して事業がスケールしてきたらそんなことも言ってられないんだろう。

人間性の向上を目指すには背伸びする場所に身を置くしかないと悟った。

お利口さんレベル1

OpenAIがGPT Builderを発表した。

中途半端にOpenAIのAPIを利用している企業のサービスは破壊されまくるだろうなと思った。

自分が経営者だったらきっと怖いだろうなと思った。(粘り強い人はここで事業転換をやり遂げるんだろうなと思うと尊敬した)

さて、ステークホルダーが増えてきたプロダクトや組織にOpenAI系のサービスを導入しようとすることを想定してみた。

「使う前に利点を示す」ことが重要なのは明らかだなと感じた。

管理職の思考としては、それをやることの利点とリスクが欲しい。責任が重かったり、(ポジションがそれほど高くない人でも)慎重な人ほどより深くそれを望むと思う。

そう考えたら「自分個人で考えて自分でやってしまった方が楽だな」と思ってしまった。

なぜなら自分の中だと「使えば楽じゃん」と完結しているからである。

お利口さんレベル2

では、それをサービスとして個人で提供することを考えてみる。

結論、「詐欺師まがいのことになりそう」だった。

わからないならググって動画見れば良いしその程度はググれるなら誰でもできるからである。

そんなことをいちいち教えるとか僕は詐欺師なのではないだろうかと思った。

では、詐欺師であることを許容して収入と費用を考えてみることにした。

提供の仕方としては、ココナラなどのプラットフォームで1時間数千円でGPT Builderを一緒に根気よく作成する作業をしよう!みたいな話で提供する。

信用を得るためにGPT Builderで作成したいくつかのものを例示すると思う。

よって、

  • 収入 → CtoCで取得
  • 費用 → プラットフォームとChatGPTの有料プランの料金

となる。

お得である。

しかし僕から見れば情報弱者から搾り取る詐欺師業である。

身につける専門知識が高度化すると、専門知識の習得と利用方法に卓越していることに価値があり、それにお金を払うわけである。

GPT Builderを操作する知識は専門知識じゃない。利用方法に卓越する部分は多少コストがかかる。

利用方法の卓越は仕事を請け負いながら向上させる予定である。

詐欺師すぎやしないか?

となると、自分が勤めている企業内で業務として提供することを考え出す。

すると、企業内で「利用することの利点をプレゼンしてROIを説明する」必要がある。

だから、適用できそうな業務を探し出してROIを説明する資料を作成してやっていく必要がある。

爆散

と書いてみたが、単純に僕がGPT Builderの学習コストが高そうと感じて色々面倒くさくなってるだけだと思い始めた。

僕がため息をついたのはこれをみたからである。

https://chat.openai.com/g/g-2Eo3NxuS7-designergpt

これを作るために試行錯誤をどれだけしたんだろう。めんどくさいなあと思ってしまった。

だったら自分でコード書きてえなあと思ってしまった。

以上である。