2026年3月21日土曜日

26年前に自作したPerlのCGIツールを、生成AIでブラウザ向けに作り直した話

2026年になって、26年前に自分で書いたPerl製のCGIプログラムを、あらためて動かしてみた。といっても、自分でコードを書き直したわけではない。生成AIに移植を任せただけで、手を動かした時間は数分ほどだった。


2000年のWebと、研究者の「もったいない」

当時の私は、SPring-8(兵庫県にある大型放射光施設。図1)でタンパク質のX線結晶構造解析に取り組んでいた。研究の流れは、おおまかに言えばこうなる。

まず、目的のタンパク質の遺伝子を単離し、大腸菌に大量生産させる。それを精製して結晶にし、SPring-8の強力なX線ビームに当てて構造を決定する。この一連の作業の入り口で欠かせなかったのが、コドン使用頻度(Codon Usage)の確認だった。

生物種によって「好みのコドン」は違う。ヒトの遺伝子をそのまま大腸菌に導入しても、大腸菌が苦手とするコドンが多ければ、タンパク質の発現量は大きく落ちてしまう。どのコドンが何回使われているかを事前に調べ、必要なら配列を最適化する。地味ではあるが、実験の成否を左右する工程だった。

この手の配列解析では、当時Genetyx(ジェネティクス)が定番のソフトだった。ただ、研究費を圧迫するほど高価で、しかも自分が実際に使うのはごく一部の機能だけだ。それなら必要な機能だけ自分で作ればいい、というのは、少なくとも当時の私にとってはごく自然な発想だった。

きっかけをくれたのは同僚の一言だった。「私も使いたい」と言われて、ふと思いついた。当時は趣味で自宅のWebサーバーを公開していたので、どうせなら誰でも使えるようにしてみよう、と。こうしてできたのがDNACNVだ(図2)。DNA配列をアミノ酸配列に変換し、コドン使用頻度を表示するだけのWebツールで、Perlで書いたCGIスクリプトとHTMLフォームの2ファイルで動いていた。

画面は白黒のテキスト表示だった。いま見ればそっけないが、当時としてはごく普通のつくりだ。色をつけることもできたはずだが、機能さえ動けばそれでよかった。

SPring-8の蓄積リング棟
図1. SPring-8の蓄積リング棟。中央の小山は三原栗山。 撮影:Artorius / CC BY-SA 3.0 / Wikimedia Commons

26年後の「そういえば」

それから四半世紀が過ぎた。ここ数年、私は生成AIを研究や執筆に積極的に使うようになっていた。最初はChatGPT、続いてGeminiを主に使うようになったが、比較のためにClaudeも試し始めた。バイブコーディングといえばこれ、という印象があったので、まずは定番のテトリスでも作らせてみることにした。

ここで少し意外だったことがある。返ってきたのが、Pythonではなくてブラウザで動くHTMLだったのだ。

なんとなくPythonで返ってくるものと思い込んでいたのだが、Claudeが生成したのはHTMLとJavaScriptで動くゲームだった。サーバーも特別な実行環境もいらない。HTMLファイルをダブルクリックするだけで、そのままテトリスが遊べる。

それを見ているうちに、記憶の隅にあったあのCGIツールのことを思い出した。あのPerlのプログラムも、HTMLに移植できるのではないか、と。

PerlのCGIはサーバー側で計算してブラウザに結果を返す仕組みだが、DNAからアミノ酸への変換は、突き詰めれば純粋な文字列処理だ。サーバーがなくても、計算はすべてブラウザ内のJavaScriptで完結できるはずだった。しかも、当時作ったHTMLフォームとCGIスクリプトが、幸いにも手元に残っていた。

オリジナルのDNACNV(2000年版)
図2. オリジナルのDNACNV(2000年版)。白黒のテキストベースで質素な見た目だが、機能は現在と同じ。PerlのCGIスクリプトとHTMLフォームの2ファイルで動いていた。

実際にやってみた

Claudeに渡したのは、2つのファイルだけだ。

  • index.html(当時のフォーム画面)
  • dnacnv.cgi(Perlのロジック本体)

そして「これを、サーバーなしで動くHTML1ファイルに移植してほしい」と伝えた。頼んだのは、それだけである。

Claudeはまずcgiファイルを読んでロジックを把握し、遺伝暗号表(コドンとアミノ酸の対応)から相補鎖への変換、3フレーム翻訳、コドン使用頻度の集計まで、各サブルーチンをJavaScriptに書き直していった。

結果は、最初の一回でそのまま動いた。エラーは一度も出なかった。

動作確認には、lacZ遺伝子(大腸菌のβ-ガラクトシダーゼをコードする、それなりの長さの配列)の逆相補鎖を入力してみた。問題なく動いた。

出来上がった画面を見て、少しおかしくなった。26年前の白黒テキストに対して、今回の画面はダークテーマにカラフルなグラデーション、モノスペースフォント、アニメーション付きのボタンと、なかなか凝った見た目だったからだ(図3)。デザインについては何も注文していないのに、Claudeが勝手に現代風に仕上げてきた。これはこれで気に入っている。

バイブコーディングで生まれ変わったDNACNV(2026年版)
図3. バイブコーディングで生まれ変わったDNACNV(2026年版)。ダークテーマ、カラーグラデーション、モダンなUIに。機能はオリジナルを忠実に再現しつつ、ブラウザだけで動作する。

研究者として一番大きかった気づき

今回のことで一番印象に残ったのは、「移植できた」こと自体ではない。「サーバーなしでWebに公開できる」という点だった。

2000年代に個人がWebツールを公開しようとすれば、まずサーバーが必要だった。自宅サーバーを立てるか、レンタルサーバーを借りるか、大学や研究所のサーバーを使わせてもらうか。CGIを動かすなら実行環境の管理もついて回る。それなりの手間とコストがかかる作業だった。

HTMLとJavaScriptだけで動くツールなら、こうした制約はほとんど消える。GitHubのPages機能でも、ほかの静的ホスティングでも、無料で世界に公開できる。

これは研究者にとって、思いのほか大きな意味を持つ。

たとえば先日、ゲノム編集の研究で、標的となる配列を検索するプログラムをC言語で書いた。今のところ手元でしか動かせないが、これをJavaScriptに移してHTMLとして公開すれば、論文を発表するときに「こちらのURLで実際に試せます」と添えられる。

再現性や透明性が重視される今の科学において、これは単なる便利な付録にとどまらない。研究そのものの信頼性を支える一部になり得ると思う。

バイブコーディングは、趣味や時短の話というより、研究インフラの一部になりつつある。最近はそんなふうに感じている。


おわりに

振り返ってみると、今回自分がやったことはごく単純だ。古いファイルを2つ渡して、「サーバーなしで動くHTMLにして」と頼んだだけである。

プログラミングの知識はあるに越したことはないが、「何をしたいか」を言葉で説明できれば、とりあえず動くものが手に入る。そういう時代になったのだと思う。

2000年代初頭のWebには、個人が手作りしたツールが世界中の研究者の役に立つ、という空気があった。商用ソフトが高すぎるなら自分で作ればいい、というエネルギーに満ちていた。その精神は今でも有効だと思うし、実現するためのハードルは当時よりずっと低い。

もし手元に眠っている自作スクリプトがあれば、一度AIに「HTMLにして」と頼んでみてほしい。案外あっさり動くはずだ。


今回復活したDNACNVは、こちらで実際に試すことができます: https://tools.nakaix.com/dnacnv/

DNA配列(FASTA形式でも可)をペーストして「Analyze Sequence」を押すだけです。インストール不要、ブラウザだけで動きます。

(おまけ)バイブコーディングの練習として最初に作ったテトリスも、こちらで遊べます(音が出ます。ご注意ください): https://tools.nakaix.com/tetris/


0 件のコメント:

コメントを投稿