「もうグラフに移った?」——ループの次に来た言葉が指しているもの

ループエンジニアリングと呼ばれた設計が、1か月でグラフと呼ばれ始めた。ここで言うグラフとは何を指しているのか。循環できることをグラフと呼ぶLangGraphと、循環を禁じることをグラフと呼ぶ提案が、なぜ同じ言葉で正反対を指すのかを詰めた。


莉緒
莉緒
みずきさんからお便り来てるね。「ちょっと前までループエンジニアリングと騒がれていたLLM界隈だけど、今はもうグラフエンジニアリングと言われている。ここでいうグラフってなんだろ?」だって。呼び名がすぐ変わるから追いつくの大変だよね、これ気になる人多いと思う。とりあえず先に言っちゃうと、ここでのグラフはAIエージェントが処理を進める順番を表す設計図のことだよ。専門的には状態機械って呼ばれてるやつ。
葉月
葉月
状態機械って言うと固そうに聞こえるけど、要は処理がどの順番で進むかの設計図だよね。ただここ、面白いのはその先で――LangGraphは2024年1月に公開されてて、同じ場所に戻れる循環ありの流れを『グラフ』の利点として掲げてるの。なのに今年4月の論文は真逆で、循環を弱点だと言って、戻れない有向非巡回グラフ(DAG)に固定する方を『グラフ』の利点として掲げてるんだよ。同じ言葉で正反対のことを自慢してるの、変じゃない?456
莉緒
莉緒
変って言うほどでもないよ、まず時間軸がバラバラだから。LangGraphは2024年1月公開で、循環できることを利点にしてる。一方の論文は今年4月に出たやつで、循環を弱点扱いしてDAGに固定するのを利点にしてる。この二つ、2年以上離れてるんだよね。なのに『ループからグラフに呼び名が変わった』って話は、6月7日の投稿から始まってたった1か月の出来事でしょ。道具は2年前からあるのに、呼び名だけがこの1か月で忙しく動いてるってこと。146
葉月
葉月
うん、そこはズレてない。2024年1月にLangGraphが出た時点で、循環できることはもう利点として掲げられてたんだよね。呼び名の方は完全に別のタイムラインで動いてて、6月7日にスタインバーガーが『ループを設計すべきだ』って投稿して、その翌日の6月8日にオスマニが初めてLoop Engineeringって名前を付けた。道具は2年前からそこにあったのに、名前の方はたった1日でついた計算になる。124
莉緒
莉緒
整理すると対象は二つだけだよ。ひとつはLangGraph、2024年1月公開で、AIエージェントの処理の流れを組むための実行基盤。状態機械を使って、同じ場所に戻れる循環ありのフローを作れるのが売りのやつ。もうひとつは2026年4月に出た論文で、こっちは逆に循環を弱点だと言って、実行計画を変更できないDAGに固定する方式を提案してる。順番としてはLangGraphが先で、論文が出たのはそこから2年以上あと。だから今の話でズレてるのは中身じゃなくて、呼び名側の6月7日〜8日のたった1日差と、道具側の2年っていう時間の長さそのものだね。456
葉月
葉月
その差が示してるのは、呼び名の新しさと道具の新しさを別物として見ろってことだよ。呼び名の方は6月8日にLoop Engineeringって付いたばっかりだけど、循環ありのグラフを売りにする発想そのものは2024年1月からずっとそこにあった。だから今『グラフ』って聞いて目新しく感じるとしたら、その目新しさは中身じゃなくて呼び名の方にしかないんだよね。
莉緒
莉緒
じゃあ次、中身の話に行こ。LangGraphが循環を許してるのは、実行時にどっちに分岐するか分からない状況にその場で対応したいから。4月の論文が逆に戻れないDAGに固定したのは、実行計画が毎回変わると検証も再試行の制御もできなくなるから、あえて再現性の方を守ってるんだよ。守りたいものは両方『予測できない動きを減らしたい』で同じなのに、手段だけ正反対になってるの、これが面白いところだと思う。
葉月
葉月
ちょっと待って、その前に確かめときたいことがある。ループの中にif書くのと、LangGraphのEdgeとして分岐を書くのって、条件式の中身自体はほぼ同じなんだよね。じゃあ何が変わるのかって言うと、Edgeにすると分岐の候補が組み立て時点で全部列挙されて見える形になるの。ループのifは、実行を追わないと分岐先がどこに行くか分からないでしょ。
莉緒
莉緒
条件式自体は同じだけど、Edgeにした瞬間、組み立て時点で『次にどこへ進める先』が全部書き出された図になる。実行を追わなくても分岐の全体像が見えるのは、たしかにifのままとは違うよね。ただそれで、オスマニが言ってた『ループが速く動くほど人間の理解が置き去りになる』問題は解決するのかな。描けるようになったのは流れの形だけで、実行そのものの速さは変わってない気がするんだけど。2
葉月
葉月
そこは残るよ。組み立て時点で分岐の図が描けても、実行中にどのEdgeを今まさに通ってるかを人間が目で追えるかは別の話でしょ。オスマニが警告してたのはそもそも実行速度の方の問題で、グラフ化は構造を事前に固定するだけで、動いてる速さ自体は一切変えてない。だから『事前に構造を把握できるか』は解決するけど、『実行中に追いつけるか』はそのまま宿題として残ってると思う。
莉緒
莉緒
実行中に追いつけるかは別問題として残る、そこは同意しといて、じゃあその『事前に構造を固定する』制約自体が何のためにあるのかって話に進みたい。LangGraphって分岐の経路を組み立て時に全部列挙しないといけなくて、実行してみて初めて分かる条件に応じて経路そのものを増やすのは難しい設計になってるでしょ。これで守ってるのは、あとから『なぜこの経路を通ったか』を検証できることと、同じ入力なら同じ経路を辿る再現性。引き換えに失うのは、想定外の状況が来たときにその場で新しい経路を作る自由さだよ。7
葉月
葉月
検証可能性と再現性、その二本柱はその通りだよ。4月の論文が名前を挙げてた弱点も、まさにそこにつながってて――エージェントのループが持つ暗黙の依存関係、無制限に走り続ける再試行、実行するたびに履歴が変わっちゃう不安定さ。この三つを潰すために、あえて経路を実行前に固定する方を選んだんだよね。6
莉緒
莉緒
守りたいものはこれで一致したね。それで一つ、聞いてる人に共有したいことがあって、7月に『まだループの話をしてるの、それとももうグラフに移った?』って問いかけたのは、名付けたオスマニじゃなくて、6月7日に最初にループって言い出したスタインバーガー本人なんだよ。言い出した側が自分の言葉をたった1か月で疑ってるってことは、グラフって呼び名も次にまた入れ替わる前提で聞いといた方がいいと思う。検証可能性と再現性を守りたいっていう中身だけ握っといて、呼び名自体には執着しないのが正解でしょ。3
葉月
葉月
言い出した本人が1ヶ月後に自分の言葉を疑ってる時点で、呼び名の寿命なんてそんなもんだよね。だから、循環ありで実行時の柔軟さを取るか、DAGに固定して検証可能性と再現性を取るか——この選び方の軸だけ握っといて、次にまた別の名前が出てきても慌てないのが賢いと思う。みずきさんも、名前が変わるたびに追いかけるより、そこだけ見といたら十分だよ。
莉緒
莉緒
その二択の見分け方、もう一段具体的にできるよ。実行してみるまで分からない条件にその場で対応したいならLangGraph型、暗黙の依存関係とか無制限の再試行とか実行履歴のブレを潰したいならDAG固定型。次に別の呼び名が出てきたら、まずこの二つのどっちの主張に乗ってるかを確かめれば、名前自体を覚える必要はないんだよ。6
葉月
葉月
それで十分だよ。名前を何個覚えたかで勝負するんじゃなくて、その主張がどっちの軸に乗ってるか一発で見抜けるかどうかが実力の差になるんだと思う。今回、道具自体は2024年1月と2026年4月からそこにあって、呼び名だけが6月からのこの1ヶ月で忙しく動いてただけって分かったの、あたし的にはこの回の一番の収穫だな。
莉緒
莉緒
収穫って言うなら、これは今後も使える型だと思う。新しい言葉を聞いたとき最初に確認すべきは、道具自体が新しいのか呼び名だけが新しいのかの二択でしょ。LangGraphは2024年1月、4月の論文は2026年4月で道具側は2年以上離れてるのに、呼び名の方はスタインバーガーの6月7日の投稿からオスマニの6月8日の命名まで1日、しかもそこから7月に本人が疑うまで1ヶ月しか経ってない。この落差を見る癖がついてれば、次に別の新語が出てきても慌てずに済むよ。
葉月
葉月
それ、今回みずきさんが引っかかってた『呼び名がすぐ変わって追いつけない』って感覚そのものへの答えにもなってるよね。呼び名は1ヶ月で入れ替わるけど、道具自体は循環を許すか、DAGで固定するかの二択しかなくて、そこは何年経っても変わらない。だから焦って新語を覚えるより、その主張がどっちの軸に乗ってるかだけ見とけば十分だと思う。
莉緒
莉緒
それだけで全部片付いた気にはならないけどね。循環ありを選んだ場合、じゃあ再試行の回数はどこで止めるのかとか、まだ話せる枝は残ってるし。みずきさん、また新しい呼び名が出てきたら、そのときはその続きから話そっか。
葉月
葉月
うん、再試行の止め方とか、まだ話せる枝はいくつもあると思う。みずきさんも、聞いてて引っかかったとこあったら、また教えてよ。
記事一覧へ戻る