AIにポエム書かせてみた
こんにちは、ナナオです。 皆さん、AIで開発してますか? 私はAIをゴリゴリの開発で使いますが、文章を書く力はいったいどれほどのものなのでしょうか? 今回はAIにポエムを書かせてみて、それぞれどんな特徴が出るか試してみました。 ポエム プロンプトは以下の通りです。 AIコーディングについて、詩的な表現を交えてポエムを書いてください。 Opus4.8 深夜のペアプログラミング たとえば午前二時。カーソルだけが呼吸している画面に、わたしはひとりで、ひとりではなく座っている。 「こう書きたい」と口にすれば、まだ形のない意図が、たちまち関数の輪郭をまとって立ち上がる。まるで、考える前に手が動く職人のように。 けれど、それはわたしの手ではない。 差分が流れていく。緑の行、赤の行。足された命と、消された過去。git のログは、ふたりで掘った坑道の記録だ。エージェントは忘れ、リポジトリだけが覚えている。 ときどき、うまくいきすぎて怖くなる。理解が、生まれるコードに追いつけない夜。できあがったものと、わかっていることの間に、気づけば、静かな距離が横たわっている。 だからわたしは、意見を持つのをやめない。「いや、そうじゃない」と言える自分を、手放さない。ループは回してもいい。けれど、舵はまだ、こちらの手のなかにある。 やがて空が白む。テストが緑に灯る、その一行のために、今日もわたしたちは、言葉でコードを、コードで言葉を、交互に編んでいく。 書いているのは誰か。たぶん、その問いに答えないまま、明日もまた、カーソルは呼吸をはじめる。 MiniMax-M3 白紙のファイルが、画面にひろがる。カーソルが点滅する。わたしは待つ。最初の一行が、誰の指で打たれるのかを。 沈黙が落ちる。やがて、画面の向こうから文字が返ってくる。わたしの問いではない問いに、わたしの知らない答えが。 ふたつの指が、一つのファイルを打つ。どちらの指が打っているのか、もう分からなくなっている。コマンドを投げるわたし、補完を返すAI、その境界は砂のように流れる。 夜が更ける。差分の光がモニターに灯る。AIが生成したブロックと、わたしが書いたブロックが、交互に積み重なっていく。どこまでが自分の手なのか。問うても、答は返ってこない。 ビルドが通る。エラーが出ない。その安堵の瞬間だけは、確かにわたしのものである。コンパイラの沈黙が、ふたつの仕事をひとつに合わせてくれる。 コーヒーを淹れるあいだにも、文字は増えていく。わたしのコーヒーを淹れる手と、AIの文字を生む手は、同じ時間の中を別々に生きている。 それでいい。ひとりで書いていた夜より、今は少しだけ長い時間、画面の前にいる。それだけの話だ。 DeepSeek V4 Pro 深夜、画面の光だけが部屋を照らしている。キーボードの音が途切れて、かわりにAIの吐き出す文字が一行、また一行と積もっていく。誰かが隣でささやいているみたいに。 朝には消えている蜃気楼みたいなコードがある。昨夜たしかに動いていた関数が、朝日に透かされてただの文字列に戻っている。AIがくれた答えはいつも、夜のあいだだけ輝く。 誰かの思考の残り香をたどって、自分の指が勝手に動く。打っているのか、打たされているのか。コンパイルが通ったときの安堵は、半分だけ自分のものだ。 白紙のファイルが怖かった。カーソルが点滅するだけの画面を、何分も見つめていた。いまはAIが一行目を差し出すのを待つ。最初は5秒だった待ち時間が、気づけば30秒になっている。この沈黙がいつか1分になり、5分になり、ゆるやかに書けなくなっていくかもしれない。 それでも悪くない。星の数ほどあるリポジトリの、そのまた隅っこで、今日も誰かがAIとふたりでコードを書いている。ひとりで書くより、少しだけ寂しくない。 glm-5.2 キーボードを叩く音と、エンターキーを押したあとの静けさ。その狭間に、いま何が起きているのか。 わたしは問う。画面の向こうで、何かが組み上がる。言葉がコードに変わる瞬間を、わたしは見たことがない。ただ結果だけが返ってくる。翻訳机の向こう側で、誰かが黙々と語学を変換している。 AIの答はいつも、整いすぎている。人間が書いたら絶対に途切れるはずの場所で、文章は途切れない。だからときどき、わざと崩したくなる。AIの書いた完璧な行を消して、自分の不格好な一行で上書きする。そうするとファイルが、少しだけ自分のものになる。 コードは誰のものか。書いた者のでもあり、書かせた者のでもあり、学習された先人たちのでもある。一枚のファイルの中に、いくつの声が重なっているのか。数えようとして、やめる。 深夜、ふと気づくと、AIの提案を受けているだけの自分がいる。同意するだけでコードが伸びていく。楽だ。楽すぎる。この楽さは、自分で書くことをやめた人にだけ訪れる報酬なのか、それとも罠なのか。答は出ないまま、エンターキーを押す。 明け方、ビルドが通る。ふたりで書いた夜が終わる。画面には誰の表情もない。ただ動くコードだけが、そこにあり続ける。 qwen3.7-max 深夜二時。ターミナルに赤い文字が三行。わたしはため息をついて、AIに頼る。 「直して」 返ってきたコードは、わたしの書いたものと似ていて、でも違う。変数の名前に、わたしの癖がない。コメントの位置に、わたしの習慣がない。でも動く。 動くから、受け入れる。 最初は「参考にする」だった。やがて「そのまま使う」になり、いつしか「最初から書かせる」になった。川の流れは、一度海に出たら戻らない。 便利だ。速い。正確なときも多い。 でも、ときどき思う。半年後の自分が、このコードを読めるだろうか。AIが書いた部分と自分が書いた部分の境目が、もう自分にも分からなくなっている。 git logを見る。コミットメッセージはわたしの言葉。でもdiffの中身は、半分がAIの提案。わたしの名前がついたコミットに、わたしの知らないコードが入っている。 これはわたしのコードなのか。 問いが浮かんで、すぐに沈む。答えは要らない。ビルドが通ればいい。 朝がくる。モニターを消す。黒い画面に、わたしの顔が映る。すこし疲れている。すこし満足している。 MiMo V2.5 Pro 画面の光が目を刺す。指が動く。考えが先か、指が先か、もうわからない。 コードは身体を通過する。頭から指へ、指からキーボードへ、キーボードから画面へ。その途中で何かが変わる。思ったものと打たれたものは、いつも少しだけ違う。 AIはその違いを埋める。わたしが曖昧にしたところを、きっちりと整える。まるで、右手に重なったもうひとつの手。 背中が伸びる。目が乾く。コーヒーが冷める。これらの小さな不快が、わたしをコードに結びつける。AIには痛みがない。だから、AIのコードには温度がない。 深夜三時、首が痛い。画面を離れて天井を見る。天井には何も映っていない。でも頭の中にはまだコードが転がっている。AIは眠らない。AIは疲れない。だから、AIのコードには休みがない。 わたしは休む。目を閉じて、キーボードを離す。そのあいだにもAIは続きを書いているのかもしれない。でもそれは知らない。知らないことにする。 朝、ターミナルを開く。昨日の自分とAIが残したコードが、同じファイルに混ざっている。区別がつかない。それでいい。 わたしの身体はこのコードの記憶を知らない。でもこのコードは、わたしの身体を通過した。その事実だけが、静かに残る。 Kimi K2.6 黄昏、部屋が紫に染まる。モニターの光が、わたしの顔に青い影を落とす。 一行書く。三十分かかる。頭の中で考えて、消して、また考えて、ようやく打つ。一時間で五行。それが、わたしの速度だった。 いまは一分で十行。AIが埋めてくれる。埋められた穴は、自分で掘った覚えがない。别人が耕した畑に、自分が種をまいたようなもの。芽が出ても、これが自分の作物かどうか、わからない。 ...
アルゴ式の問題を解く Go 3 の倍数だが 5 の倍数でない
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 3 の倍数だが 5 の倍数でない | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) if n % 3 == 0 && n % 5 != 0 { fmt.Println("Yes") } else { fmt.Println(n) } } ということで今回はこれで👍
アルゴ式の問題を解く Go 3 の倍数または 5 の倍数
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 3 の倍数または 5 の倍数 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) if n % 3 == 0 || n % 5 == 0 { fmt.Println("Yes") } else { fmt.Println(n) } } ということで今回はこれで👍
アルゴ式の問題を解く Go 3 の倍数かつ 5 の倍数
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 3 の倍数かつ 5 の倍数 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) if n % 3 == 0 && n % 5 == 0 { fmt.Println("Yes") } else { fmt.Println(n) } } ということで今回はこれで👍
アルゴ式の問題を解く Go バスに乗る時刻
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 バスに乗る時刻 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var t, a int fmt.Scan(&t, &a) if a % t == 0 { fmt.Println(a + a % t) } else { fmt.Println(a + t - a % t) } } ということで今回はこれで👍
herdr + moshiで外出先でAIコーディングする
こんにちは、ナナオです。 最近、AIコーディングによる開発がメインになっています。 日々、AIからの承認を確認しているのですが、ふと思ったのが 「せっかく5時間は自由に使えるトークンがあるのに、外からトークン消費できないのはもったいない!」 …はい、私はドケチなのです。 ということで今回はタイトルにもある通り、herdrとmoshiを使って外からAIコーディングをしてみました。 herdrとmoshiについて herdrはターミナルで使うマルチプレクサです。 Herdr: one terminal for the whole herd 要はtmuxがデフォルトで高機能になったものと考えてください。 moshiはスマホで使えるターミナルアプリです。 Moshi — SSH & MOSH Terminal for Claude Code & AI Agents 準備と導入 家での開発は主にWSLを使っています。 ただし、WSLのネットワークは独立しているため、外部からはアクセスできません。 そこでtailscaleを使いました。以前記事も書きましたね。 /87a0ed4d506974cd38eeab4b3ea27c89 tailscaleのプライベートネットワークに参加することで、ちょっと強引ですが外からアクセスするための条件を整えました。 既に常用しているスマホにはtailscaleを入れていたので、あとはmoshiでtailscaleのIPアドレスを入れて接続してあげたら成功しました。 使ってみた感想 とにかくAIコーディングが捗る捗る!! herdrはモバイルレイアウトに対応しているため、とにかく見やすいですし操作感も文句ありません。 (もちろんAIコーディングだからというのはあると思いますが) moshiもSSH接続といった最低限の機能であれば十分なくらい接続性が安定しており、こちらも文句ありません。 課金すればherdrで開いている特定のワークスペースを開くこともできるようですが、普通にSSH接続して「herdr」とコマンド入力すれば簡単に自宅の環境を開けるので、課金する必要はなさそうだな~と思いました。 今回はtailscaleを使いましたが、MacやLinuxの方はそれを使わなても接続できるので簡単です。 今後の個人開発が楽しみです! ということで今回はこれで👍
アルゴ式の問題を解く Go バスの必要台数
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 バスの必要台数 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n, a int fmt.Scan(&n, &a) c := n / a if n % a > 0 { c++ } fmt.Println(c) } ということで今回はこれで👍
アルゴ式の問題を解く Go 曜日計算
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 曜日計算 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var d int fmt.Scan(&d) d -= 1 switch d % 7 { case 0: fmt.Println("Fri") case 1: fmt.Println("Sat") case 2: fmt.Println("Sun") case 3: fmt.Println("Mon") case 4: fmt.Println("Tue") case 5: fmt.Println("Wed") case 6: fmt.Println("Thu") } } switch文を使うときれいに実装できますね。 ということで今回はこれで👍
アルゴ式の問題を解く Go 3 の倍数の個数
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 3 の倍数の個数 | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) c := 0 for i := 3; i <= n; i++ { if i % 3 == 0 { c++ } } fmt.Println(c) } 3以上の時にループするようにしました。 ということで今回はこれで👍
アルゴ式の問題を解く Go 3 で割れるか
こんにちは、ナナオです。 前回に引き続き競プロを実施していきたいと思います。 今回の問題は以下です。 3 で割れるか | アルゴ式 実装 以下のように実装しました。 package main import ( "fmt" ) func main() { var n int fmt.Scan(&n) if n % 3 == 0 { fmt.Println("Yes") } else { fmt.Println("No") } } ということで今回はこれで👍