AIプログラミングで何をしたらどうなるかの参考メモ記事。
セルフホストアプリ開発におけるコンテナの利用について
今までの癖で、ほとんどのアプリでなんとなくコンテナ化していた。ただ僕が作っているのはセルフホストで、基本的に一人で扱うものだ。すると、なんだかコンテナの恩恵はあまりなく、その癖面倒くささばかりがある気がした。
コンテナはとどのつまりプロセスの隔離だ。なんでそんなことをしたくなるかと言えば、異なるアプリケーション間における依存の衝突(アプリAではライブラリXのバージョン1が必要だがアプリBではライブラリXのバージョン2が必要、など…)、ポート番号の衝突(おめぇの3000番ねぇから)、ホストマシンのファイルマシンにあらゆるバイナリが散らばる、などがある。コンテナはそういった問題を解決するわけではないのだが、影響範囲を限定する。
ユースケースとしては、アプリケーションの依存が多段的に連なっていてわけわかめとか、テナント単位で複製したいとか、負荷に応じてポコポコ作ったり消したりしたいとか、環境を汚さずに試したいとか、まぁそういう時に便利であり、これは現代のチーム開発においては必須とも言える要件かもしれない。
一方で僕は今チーム開発をしているわけではないし、ホストマシンに密接したアプリケーションを作っている。スケールを考える必要はないし、誰かと環境を揃える必要もない。重要なのはホストマシンのネットワークやファイルシステムを共有して活用することで、これはむしろコンテナを使うとしんどくなる。
そんなわけで、無駄にビルドの時間を食ったりランボー怒りの docker system prune -aなどを定期的に実行するお仕事をしたりなどをしつつ、バインドマウントや.envをどうするかについて考えているうち、「はて、そもそもなんのためにコンテナにしているのか」という気分になってきた。
考えてみると僕の場合コンテナ化する意味はあまりなかった。先のメリデメを考えると明らかにデメリットのほうが大きい。せいぜいdaemonの差分を吸収していたくらいだが、それとてMacとLinuxでそう違いがあるわけでもなし。将来的にはFreeBSDも…とか考えるとDocker使う意味マジないな、と思った。
コンテナをやめた
ということで、いくつかのアプリをDockerからネイティブに変更した。とりあえずMacとLinuxに対応する形だ。自分しか使っていないもののアプリバージョンを言っても仕方ないが、メモ代わりに、デジタル・コンテンツ管理アプリのDigitalShelf v0.7.1、AIイラスト管理実行基盤SD Director v0.15.5となった。
元々バックエンドはGo言語のシングルバイナリでやっていたので、あまり問題はなかった。AIが5分でやってくれました。
…というわけにもいかず、それなりに問題は発生した。トラブったのは主にバインドマウントのところ。元のプログラムやデータベースのパスと移行後のパスで整合性が取れず、色々とおかしなことになった。
まぁ正直、データベース内のパスが絶対パスになっていたところの移行に失敗するだろう、というのは予想していたので、一言注進したら「あ、そうですね💦」とそこはすぐになおされた。
ちょっと厄介だったのは、「設定画面で指定したサーバーアドレスにAPIを投げる」部分で、どういうわけか指定したサーバーアドレスを読み取るのに失敗していたのだが、それに失敗するとlocalhostにAPIを投げるという余計なフォールバックをしていて、しかもエラーが握りつぶされるような形になっていた。これはネイティブ化したにもかかわらず画面遷移時に処理が遅いところがあり、その原因を調査したときに発覚した。タイムアウト待ちで遅くなっていたらしい。
こういうことが起きるということは当然ながら内部のコードはウンコなんだろうなぁと察せられたが、下手に読むとイライラしそうだしAIの書いたコードを読むのは不毛なので、ブラックボックステストに徹した。
しばらく試して、今のところは動いているとは思うものの、まだ数日は様子を見たい感じだ。
AIはいつまで使えるか
僕としてはAIプログラミングがあれば多くの人が自分専用のアプリを作れるんじゃないか、と思ってそっちの方向で色々考えていたのだけれど、しかしこうして見ると、冷静に考えて一般人がコンテナだのなんだのやるのは明らかにしんどい。そこはAIでどうにもならん。
そもそもAIがいつまで使えるのかも不透明だと思っている。この2,3か月でもGoogleのAntigravityは改悪に改悪を重ねているが、CodexやClaude Codeも似たような状況であるらしい。具体的には、月20ドル程度の課金では、上位モデルはもうほとんど使えない格好だ。下位モデルであればそれなりに使えるが、しかしいかにもモダンなチーム開発をするようなやり方だとあっという間に使い切ってしまうのではないかな。
現時点でこのような状況だから、将来的に一般市民がAIをどれだけ使えるのかは非常に怪しいものだと思った。となると、結局のところ伝統的なパッケージ配布を今一度個人がやっていくしかないのではないか、と思う。
これはつまり資源の問題にあたる。IT革命以来それは忘れられてきた。しかし今度ばかりはそうもいかないらしい。限界費用は明らかにゼロではない。AIは重厚長大産業だ。であるならば、原理的にSaaSモデルは破綻するのだろう。しかし別のビジネスモデルは今のところ見つかっていない。
というか、そもそも資源は本当に足りるのか。昨今の国際情勢を見ると、そもそもエネルギー危機が本当に起きかねないと思っている。資源が枯渇するのではなく、サプライチェーンの断絶により資源が届かなくなる、というのは真面目にみんな考え始めているだろう。そしてそれはもとを正せばおそらくは社会の行き詰まりによるものだ。
供給が滞ればもはやAIどころではないかもしれない。というか、悲観シナリオにおいてはもはや市民が計算機を使えるかどうかも怪しい世界、まで見えてくるのだが…。どうなることやら。
コメント