68歳、定年退職してからAIファッションアプリを作った話【開発秘話 vol.5】
アセンブラ世代がAIと一緒にECサイトを作った話(技術編)
前回、バーチャル試着の話を書いた。
「AIが写真に服を着せてくれる」という技術のことを書いたのだが、読んでくださった方から「PHPもJSも未経験なのに、どうやって作ったの?」という質問をいくつかいただいた。
今回は、その話だ。
私のエンジニア歴
最初に自己紹介をしておく。
私のキャリアは、アセンブラから始まった。1980年代のことだ。
当時のコンピュータは今とはまるで違う。メモリは256KB。ディスクも高価で、レジスタやアドレス指定を手書きで管理しながら、1バイト単位でコードを書いていた。
その後、C言語、C++と移っていった。基盤系のシステム開発が長かった。OSのドライバ、ネットワーク制御、ミドルウェアの設計——そういう仕事を30年以上やってきた。
Webのことは、ほとんど知らなかった。
PHPもJavaScriptも、MySQLも、仕事で触ったことはほぼない。HTMLは「タグを書くやつ」くらいの認識だった。
そんな68歳が、なぜECサイトを作ることになったのか。
「コードは書ける。でも言語が違う」
定年退職してから、時間はある。アイデアもある。妻(53歳)のために「似合う服を教えてくれるアプリ」を作ろうと思った経緯は、vol.1に書いた通りだ。
問題は、現代のWeb開発が自分の知っている世界とまるで違うことだった。
アセンブラ世代の私にとって、プログラムとは「CPUに直接命令する」ものだ。変数の型は厳密に管理する。メモリの無駄遣いは悪だ。そういう感覚でコードを書いてきた。
ところがWebの世界は、驚くほど「ゆるい」。
PHPは型が曖昧だ。JavaScriptは非同期処理が当たり前で、コールバックやPromiseが飛び交う。HTMLはエラーが出てもブラウザが適当に補完してしまう。
「これは、言語の壁ではなく、文化の壁だ」と思った。
AIコーディングアシスタントとの出会い
そこで頼ったのが、AIコーディングアシスタントだ。
最初は「コードを書いてもらう道具」くらいに思っていた。でも実際に使い始めると、それは「一緒に設計を考えてくれるパートナー」だった。
たとえばこんなやりとりをした。
私:「Stripeで決済をしたい。でもComposerは使いたくない。サーバーが共用ホスティングで、自由に環境を変えられないから」
AI:「わかりました。Stripeのライブラリを使わず、curlで直接APIを叩く方法で実装しましょう」
そしてAIは、StripeのAPIドキュメントの仕様を踏まえながら、純粋なPHPのcurl実装を書いてくれた。
アセンブラ世代の私には、「直接APIを叩く」という感覚の方がむしろ馴染みやすかった。ライブラリという「魔法」を使わず、通信の内容を自分で把握できる。その方がデバッグもしやすい。
低レイヤーの感覚が、ここで活きた。
Webhookで一番悩んだ
技術的に一番苦労したのは、StripeのWebhookだった。
Webhookとは何か。Stripeで決済が完了したとき、Stripeが私のサーバーに「決済が終わりましたよ」と通知を送ってくれる仕組みだ。
この通知を受け取って、注文ステータスを「paid」に更新し、在庫を減らし、ポイントを付与し、確認メールを送る——という一連の処理をしなければならない。
最初、これがうまく動かなかった。
Stripeからの通知が届いていない。届いているのかもしれないが、処理されていない。ローカルで開発しているのでStripeがサーバーにアクセスできない——という問題が重なった。
AIに相談すると、「署名検証が通っていない可能性があります」と言う。
Stripeのwebhookには、「本当にStripeからの通知か」を確認するための署名がある。この検証が失敗すると、セキュリティのためにリクエストを拒否する。
コードを見直すと、タイムスタンプの許容誤差の設定が間違っていた。
アセンブラ時代に「バスエラー」を延々とデバッグしていた頃の感覚が戻ってきた。1バイトのズレが全体を壊す、あの感覚。レイヤーは違えど、デバッグの本質は変わらない。
「3つのサービスが同じDBを共有する」という設計
今、私が作っているシステムは3つのサービスで構成されている。
kitemir.jp(https://kitemir.jp)——AI診断+バーチャル試着のStyleAI本体
shop.kitemir.jp(https://shop.kitemir.jp)——Maison Kite ECサイト
asp.kitemir.jp(https://asp.kitemir.jp)——他のECサイト向けにVTO機能を提供するB2Bサービス
この3つは、同じMySQLデータベースを共有している。
「なぜ分けないのか」と思う方もいるかもしれない。
理由は、ユーザー管理の一元化だ。kitemir.jpで会員登録したユーザーが、shop.kitemir.jpでも同じIDでログインできる。診断結果と購買履歴が一体で管理できる。
ただし、データが混在しないよう、テーブルには厳格なプレフィックスルールを設けた。
kitemir.jp → プレフィックスなし(users, diagnoses, tryons)
shop.kitemir.jp → mk_(mk_products, mk_orders, mk_coupons)
asp.kitemir.jp → asp_(asp_users, asp_license_keys)
基盤系エンジニア出身らしく、この設計は最初に決めた。名前空間の管理は、低レイヤー開発の基本だ。
AIとの役割分担
AIコーディングアシスタントとの作業で学んだのは、「何をAIに任せ、何を自分で考えるか」という役割分担だ。
AIが得意なこと:
ボイラープレートコードの生成(認証、セッション管理、フォームバリデーション)
ライブラリやAPIの使い方を調べて実装する
エラーメッセージから原因を推測する
セキュリティ上の注意点を指摘する(「ここはPDOプリペアドステートメントを使うべきです」)
私が考えること:
全体のアーキテクチャ設計(どのサービスがどのデータを持つか)
パフォーマンスの考慮(大量CSVインポートをバッチ処理に分割するなど)
セキュリティの根本方針(APIキーをどこに置くか、Webhookの署名検証を省略しないなど)
デバッグの最終判断(エラーの根本原因を特定する)
アセンブラ時代に培った「システム全体を頭の中で把握する力」が、ここで使えた。
AIは「木」を見るのが得意だ。私は「森」の構造を考える。そのコンビネーションが、思った以上にうまく機能した。
数千行のコードが、数ヶ月で完成した理由
正直に言う。
AIコーディングアシスタントがなければ、このシステムは完成しなかった。
3つのサービスを合わせると、PHPファイルだけで100を超える。データベースのテーブルは30以上。Stripe連携、メール送信、画像処理、VTO連携、CSV一括インポート——これだけの機能を、Webが未経験の68歳が数ヶ月で作った。
「本当に一人で作ったんですか?」と聞かれることがある。
一人ではない。AIと一緒に作った。
でも、設計の判断、デバッグの最終確認、ユーザー体験の方向性——そこは全部、自分で考えた。AIが書いたコードを、自分で読んで、理解して、改善した。
基盤系エンジニアとして30年で身につけた「コードを読む力」と「システムを疑う力」が、ここで初めてWeb開発に使えた。
今、3つのサービスが動いている
現在、3つのサービスはすべて稼働中だ。
kitemir.jp(https://kitemir.jp)では、写真をアップロードするとパーソナルカラーと体型タイプをAIが診断し、バーチャル試着もできる。Stripeのサブスクリプション課金も本番で動いている。
shop.kitemir.jp(https://shop.kitemir.jp)では、Maison Kiteブランドの商品を購入できる。商品ページから直接バーチャル試着ができるWidget機能も実装した。
asp.kitemir.jp(https://asp.kitemir.jp)では、他のアパレルECサイトがバーチャル試着機能を自社サイトに組み込めるパッケージを提供している。
3つとも、自分一人とAIで作り上げた。
68歳が現代Web開発を学んで気づいたこと
最後に、少し大きな話をさせてほしい。
アセンブラ世代のエンジニアは、「基礎がある」という強みと、「知らない技術が多すぎる」という弱みを同時に持っている。
AIコーディングアシスタントは、その弱みを大幅に補ってくれた。
「PHPでStripeのWebhookを実装するには?」と聞けば、ドキュメントを読まなくても実装方法を教えてくれる。「このエラーの意味は?」と聞けば、原因の候補を挙げてくれる。
でも、「このシステム全体をどう設計するか」は教えてくれない。「ユーザーにとって何が必要か」は教えてくれない。「セキュリティの根本方針は何か」は、自分で決めなければならない。
つまり、AIは「実装力」を提供してくれるが、「判断力」は人間が持つしかない。
30年間のエンジニア経験で身についた判断力が、AIという道具を使いこなす基礎になった。
これは、シニアエンジニアにとって、思った以上に大きなアドバンテージだと思う。
次回予告
vol.6では、50〜70代女性のためのUI設計の話を書こうと思っている。
「大きなボタン」「16px以上の文字」——技術仕様ではなく、なぜそうするのかの話だ。妻(53歳)や、彼女の友人たちに実際に使ってもらいながら気づいたことを書く。
現在3つのサービスとも稼働中です。ぜひ試してみてください。 kitemir.jp(StyleAI): https://kitemir.jp Maison Kite EC: https://shop.kitemir.jp VTO-EC Suite(B2B): https://asp.kitemir.jp
