Spinach Forest

January, 2025

/ Tariffs and Software   / Pop-culture CoT and Writing To Think   / Link: How I program with LLMs   / ... 

Tariffs and Software

新しい大統領は tariff / 関税が好きらしい。

関税は国内産業を保護しアメリカ人の職を守ってくれることになっている。がしかし、ソフトウェア開発者の職はぜんぜん守ってくれそうにない。

なぜか。製造業では、アメリカの会社 (たとえば GM) が工場を国外(たとえばメキシコ)に移転すると、商品(たとえばクルマ)はメキシコで完成するので輸入には関税がかかる。アメリカ国内に工場を維持しつつ部品などは海外調達することにしても、その部品の輸入には関税をかけられる。割と抜け道がない。

一方のソフトウェア。アメリカの会社がアメリカ人向けに開発するソフトウェアプロジェクトを考える。この会社が開発を国外拠点にオフショアするとしても、マネジメントとかがアメリカ国内に存在しアメリカのソフトウェア・サービスとして出荷されれば関税はかからない。高く付く国内のプログラマはクビになる。抜け道。

もちろんソフトウェア寄りの世界にも保護主義的な施策はある。たとえば EU など一部の国はセンシティブな個人情報を国内のデータセンターに置くことを求めている (data localization). これらはプライバシー上の施策だが、保護主義的な面もゼロではない。アメリカのビザ人数制限も保護主義的施策である。いずれにせよ、これらはオフショアからプログラマを守ってはくれない。

2022 年の ZIRP 終了と 2023 年以降の GPU 費用高騰にあわせ、アメリカのテック企業は人件費削減のためじりじりと開発人員の国外移転を進めていることが、風の噂などから知られている。我々ドメなプログラマ困るじゃん?職にあぶれないよう大統領に泣きついて保護政策をピッチしなくていいの?社長の皆様は札束抱えて詣でに行っており、グローバル US 企業の経営者は伝統的に労働者たるアメリカ国民を大切にしないので、このままだと一層クビが危ういですよ?

・・・なんてことを自分はあまり考えていないが(文字通り非国民なので)、団結して権利を主張したいテック労働者の中には保護主義になびく人もでてくるかもしれない。それは、責められたことではない。誰だってレイオフはイヤだから。

My Job Went To India

20 年前、Post-dotcom のオフショア吹き荒れる中でインド人の相手に疲れた大企業プログラマがいた。(インド人に恨みはないが、オフショアはどうしても人の心が腐れるのだよ。)当時 GE のソフトウェア部門に努めていた Chad Fowler である。Chad Fowler はその後 GE を去り, My Job Went to India という本を書いた後スタートアップを転々として、最終的には開発していた TODO アプリが人気を博し Microsoft に買収され、今日は VC 投資家をやっている(LinkedIn など調べ)。

Chat Fowler は本書で「インドに疲弊してないでオープンソースをやるんだ! Ruby サイコーだぜ!」みたいなこと(うろおぼえ)を言って大企業疲弊組を煽った。そんなオープンソース・ムーブメントは数々のインターネット企業を生み出し今日に至っている。

オープンソースの時代に生まれ育ったそれらインターネット企業は、数年前までは、海外拠点を持ってはいてもアメリカ国内の雇用を渋ることはなかった。けれど今日のテック大企業は 2004 年の GE に近づきつつあるのかもしれない。

そんな 2025 年、世の中に Chad Folwer 相似の vibe のを見つけるのは難しくない。生きのいい若者たちは大企業を抜け出し San Francisco に集まって「インドに疲弊してないでエーアイをやるんだ! DeepSeek-R1-Distill-Qwen-7B サイコーだぜ!」と叫んでいる。そんな威勢のいいエーアイ若者がソフトウェア文化の中心を形作るなら、保護主義に擦り寄るなんて発想すらなかろう。

ソフトウェア開発者のための保護主義的政策にはどんなオプションがあるかを考えるのは面白い armchair policy making かもしれないとおもってこの文章を書き始めたけれど、そんなことに頭を使うより何らかのサイコーなものを追い求める方が健全だな。ということでこのスレッドは終了。


少し話を巻き戻し、ちょっとだけ armchair policy making に興じてみたい・・・が、あまりアイデアはないね。

素朴に考えると、アメリカ国民を海外のやすい労働力から守る法律、すなわち Visa の人数制限と給与下限の設定を、US 企業の海外での雇用にまで拡大すればよい。たとえばインド・・・の話ばかりしてるとカドが立つので他の国を使うと、たとえばアメリカの企業が日本のプログラマを雇う人数を制限する。・・・これはとても現実的には思えない。どうやって enforce すんねん。

ではUS企業が日本で雇ったプログラマに課税することは可能だろうか。これも同じ理由でできそうに思えない。

というわけでアメリカのプログラマを保護する法律のアイデアは、素人が 10 分考えた範囲では存在しなかった。チャットにも聞いてみたが特に色良い返事はなかった。下手な考え休みに似たり。もっと楽しいこと考えて生きていきます。はい。

Pop-culture CoT and Writing To Think

GitHub - deepseek-ai/DeepSeek-R1

01, QwQ などの "reasoning model" が生成している "chain-of-thought" テキストって、自己啓発ポップカルチャーでいうところの Writing To Think だよなと思う。曰く:

Practically speaking, writing forces you to take a complicated and ill-defined problem and compress it into something more manageable. This ‘compression’ is useful. Not only does it help you remember your ideas, but it helps you develop new ones.

LLM にとっての chain of thought をポップカルチャー的に解釈するなら、数十、数百GB ある混沌とした記憶の中から眼の前の問題に必要な情報を少しずつ materialize していくプロセスだといえる。眼の前にあるものには "attention" を向けることができるので - テクニカル ... Attention(K,Q,V) ... にも、ポップカルチャー的 ... 意識を向ける所作 ... にも。

そうやって必要な情報を積み上げ、意識を向け、文章の舵をとることで、「正しい」答えにたどりつける。LLM の reasoning はそんなものだと解釈できる。(ポップカルチャー的には・・・しつこいので以下この言い訳は省略。)


むかし自分がよく長いブログを書いていた頃、文章を通じて考えが整理される感覚があった。今の自分にその感覚はない。整理された考えもない。意見もない。惰性で日々を生きているように感じる。それがすごく悪いこととは思わないが、もうちょっと頭を使って考えを整理したほうがいい気もしている。ボケそうなので。

そうした「考えるために書く」所作を取り戻したいとぼんやり願いながら何年も経ってしまった。けれどあるとき Reasoning LLM の吐き出す長々としたテキストを見て、そこからヒトとして学べることはないのかと思うようになった。

テキストは、ただ長ければいいわけではないらしい。DeepSeek R1 の technical report では、長さを促さなくとも数学の問題(など)を RL で繰り返し解かせているうちに段々と長いテキストを吐くようになったという。つまり書いて考えを整理するためには何らかの reward function が必要といえる。

ブログを書いていた頃は、インターネットで誰かに読まれる緊張感から校正に時間をかけていた。校正では文章を削ることもあったが、書き足すことのほうが多かった。

この公の視線は reward としてある程度機能していたが、過剰に検閲をする傾向やウケ狙いに迎合する向きがあり理想的とは言えない。一方で、誰にも読まれない個人的なノートにも問題がある: 論理構造のない箇条書きに終始したりムダに愚痴っぽくなったりで、雑用のメモならともかく考えを整理する装置としては reward の弱さからくる迷走感が否めない。

テキストそのものに目をやると、LLM が出力する reasoning/thinking はモノローグ的で、読みにくい。Reasoning LLM はは、そのモノローグ部分を整理した説明を結論に添えユーザに提示する。これはアイデアをアウトラインしてから原稿を書くプロセスと似ている。

人間(というと主語大きすぎで、自分)はというと、この文章にアウトラインは存在せず、ただリニアに書いている。結果として文章の構成はイマイチである。気がする。


さて、すっかりボケてしまった自分が書くこと通じて考える力を取り戻すために何ができるか、LLM が示唆することはなんだろう。

Reasoning 以前に、「テキストを生成する」というベースの能力が足りていない感がある。ソーシャルメディアなどで回覧されてくるブログなどを見ると、中身の整合性はさておきやたら長い文章を量産している「ブロガー」が一定数いて、こういう人たちはテキスト生成能力という点で優れているなと思う。context window が広い pre-trained model みたいな。

自分もどうでもいい長い文章を日頃から書き散らす必要があるのかもしれない。

・・・と言いたいところだが、LLM に倣うならこの解釈に理はない。モデルのやつらはいくらテキストを生成しても素行が良くなったりはしないわけだから。むしろモデルとしての自分は training が足りていない気もする。つまりこの頃、あまり文章を読んでいない。読むとしてもニュース記事か技術文書か論文くらいで、意見形成を促すような文章は読んでいない。一時期までは NYT の opinion section とかをたまに読んでいたが、大統領選以降はキナクサ過ぎて読むのをやめてしまった。読みたいとも思わない。

NYT に限らず、ブログなどの「意見」に込められた強い感情に晒されると心が疲弊する。じぶんは段々と精神衛生を重視するようになってきており、その結果としてむき出しの感情を突きつけてくるメディアとは距離を置くようになってしまった。同じ理由でソーシャルメディアも見ていない。

人生の総体としてこの判断が悪いとは思わないが、一方で意見生成の助けなっていないもの確かである。自分の意見形成を train するにあたって、まずは何らかの token を脳に流し込む必要はあるんじゃないか。最近の LLM scaling を巡る談話によれば、比較的小さいデータも高品質なら有効な training になるという話なので、自分にも意見の形成に向けて我が身の価値観とあった「高品質」の意見を接種するのがいいのかもしれない。

それ echo chamber と何が違うの? という批判はありうるけれど、自分は商用 LLM じゃない一個人だから別に意見が biased でもいいんですよ。


もともとは「自分も文章を書くにあたり何らかの reward modeling が必要なのではないか」と主張するつもりで書き出した文章だったが、思わぬところに着地してしまった。

Link: How I program with LLMs

https://crawshaw.io/blog/programming-with-llms

The result has been that I now regularly use LLMs while working and I consider their benefits net-positive on my productivity. (My attempts to go back to programming without them are unpleasant.)

そうだよなあと思う。

有料のため利用を渋っていた Github Copilot を去年末から余暇に使うようになり、奇遇にも社内の IDE が似たような機能を追加し、late adopter の自分も LLM 補完/コード生成を使うようになった。最近は仕事でよく Python や SQL を書いており、自分はどちらも特に得意ではないので、ありがたみが身にしみる。補完もそれなりに impressive だったが、それ以上に inline chat が感心。

一方何らかの事情により Android Studio ではその機能が動かないため、今まで楽しみだった Kotlin programming を若干かったるく感じるようになってしまった。もっとズバっと埋めてくれよ・・・と不満になってしまう。あとコードベースが複雑なのもよくないのかもしれない。

CursorWindsurf などは VS Code をフォークして色々やっているらしいが、late adopter としてはそうした攻めた機能のうちヒットしたものを VS Code がパクってくれるのを待ちたい。Devinaider みたいに一段階攻めた agentic な実装も、使えるようになったら VS Code (あるいは関連 GitHub 製品) がパクってくれるだろうと待っている。

こうしたエーアイコード生成をうけプログラマの職を心配する声もあるが、個人的にはそれ以前に勤務先の景気や Android アプリ開発スキルの化石化など目先の未解決不安要素が大きく、遠い未来の心配をする余裕はないのだった。