見出し画像

AIコーディング時代の glue code と mashup

こんにちは、 CoderDojo神山の本橋です。

CoderDojo神山で作った作品を並べているzariganiゲームスに、ガチャガチャ!というWebアプリを追加しました。カプセルトイのガチャハンドルで3回音を出すとカプセルが出てくるミニゲームです。

スマホだとちょっと崩れる

これは「2回目のガチャ」で、1回目はkintoneカスタマイズとして作ったガチャを回してレコードをポンです。

どちらもまずはnoise-picker という特定の音を検出するJSライブラリを作って、『ガチャハンドルのクリック音を検出する』という機能を組み合わせています。

ガチャハンドル、結構大きい音を出します

最近はこんなことをやって遊んでいたわけですが、APIやライブラリをつなぎ合わせて一つのソフトウェアを作るこの感覚にglue codeとかmashupとか言われていたころを思い出して懐かしくなってました。

AIコーディングの時代にこそ、glueやmashupの考え方を頭の片隅に置いておくとコードを書くのが楽しくなりそう、という記事です。

glue code と mashup のおさらい

glue code(接着剤コード)は、独立した部品同士をつなぐための、それ自体は「機能」と呼ぶほどのものではないコードのこと。AのAPIを叩いて返ってきたデータをBが食える形に整形する、認証トークンを受け渡す、エラーを翻訳する、そういう地味な仕事を担う。Unix哲学の「小さなツールをパイプで繋ぐ」の、繋ぐ部分にあたる。

AIによる解説

mashupは、2000年代後半のWeb 2.0の頃に流行った言葉で、複数のサービスやデータソースを組み合わせて新しいアプリを作る手法を指す。Google Maps APIに不動産データを乗せるとか、TwitterのつぶやきをFlickrの写真と並べるとか、「あるものを組み合わせて新しい遊びを作る」こと。

AIによる解説

こうして並べてみると、mashupを成り立たせるためにglue codeを使うという関係が見えてきますね。glue codeを手軽に書けるからmashupが楽しくなる。mashupが楽しいからどんどん何かを作りたくなる。そんなループです。

2000年代後半というと僕はperlからrubyに移行しつつあった覚えがあります。perlもrubyも手軽にglue codeとして使える楽しいプログラミング言語でした。

そのglue codeを書くコストを劇的に下げた、ということと、ほとんどのプログラミング言語をglue codeとして扱える、という二つがAIコーディングの特徴としてあるように思います。

部品を「mashup可能な形」で残す

mashup可能な形というのは、要はドキュメント付きでgithubリポジトリに置いておこうということです。AIの力添えによってリポジトリを再利用可能にしておく労力が大きく減りました。

今回のnoise-pickerで言えば、以下の準備をしたことで「AIによる再利用性」がぐっと向上しました。リポジトリURLをプロンプトに与えるだけで適切に読み取って使ってくれます。

  • ライブラリのリポジトリを分けて、READMEを残しておく

  • 外から取り込みやすい形に整える(クラスや関数をファイルに切り出す)

  • examplesページを用意して、ブラウザで挙動を確かめられるようにする

3つ目はどちらかというと人間用ですね。これらの「mashup可能な形に整える手間」を支払っておけば、あとは「思いつき」から「動くもの」までプロンプト一発です。これがAIコーディングの楽しさかなぁ、と思いました。

用途のない遊びで、部品の在庫を増やす

前の記事の最後に「用途もなく作る遊びはただ楽しい」と書きました。これは本当にその通りで、ガチャでkintoneレコードを引く機能に実用上の意味はほとんどないと思います。ただ楽しいだけです。

用途のない遊びを作っていると、部品の在庫が増えます。ノイズピッカーも、ガチャハンドル(物理)も、そうです。今後は「音をきっかけに何かを起こしたい」場面が来た時には、またnoise-pickerが部品になってくれます。

そんな「用途のない遊び」を作る余地がとても広い場所が神山メイカースペースです。いま進めているひょうたん畑プロジェクトでひょうたんが実ったら、ひょうたんを叩いて反応するアプリも作れそうです。

そういえばカホンのキットを作るプロジェクトも途中で止まってたことを思い出しました。カホンの中にマイク入れたらnoise-pickerで拾えそう!

ではまた!

いいなと思ったら応援しよう!