
2026/05/11 2:19
ローカル AI が標準となる必要があります。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
開発者は、安定的なアプリケーションと厳格なプライバシーを確保するため、脆弱であるクラウドホスト型モデルよりも、Apple 製の組み込みローカル AI ツール(
SystemLanguageModel および LanguageModelSession など)を優先すべきです。外部サーバーへの依存は、課金問題やサービス停止時にサービスがクラッシュするという致命的な障害点を生じさせると同時に、機密ユーザーデータを保持リスクおよび潜在的な侵害に晒すことになります。対照的に、データ処理を安全にデバイス上で実行することにより、不必要なサーバー経由の迂回とベンダー依存を排除し、アプリケーションを強固なものに保てます。「Brutalist Report」という iOS クライアントは、典型的なクラウドソリューションに見られる複雑なアカウント要件を回避するため、ネイティブ API を使用して完全にローカルで記事のサマリーを生成する優れた例です。長いコンテンツの場合には、テキストをチャンク化(約 10k 文字)し、各チャンクごとに事実のみを含むノートを作成した後、それらをローカルで統合して最終的なサマリーを生成する推奨ワークフローがあります。このワークフローの将来形としては、@Generable および @Guide といった Swift の構造体を使用し、構造化された AI 出力を強制して非構造化データのようなデータをそのまま受け取るのではなく、UI が一貫したフィールドを確実にレンダリングできるようにする方向性が考えられます。この変化により、ユーザーは情報がデバイスから離れることがないと信頼できるようになります。企業にとって、ローカルモデルの導入は、AI をコストが高く予測不能な外部依存体から、サマリー化や分類を効率的に行い、ユーザー所有データを扱いながらレート制限や停止時間への心配なしに運用可能な信頼性の高い低コストサブシステムへと変革させます。開発者は、クラウドモデルを真に必要な場合のみ使用し、ローカル AI をノベルティなチャットボックスではなく、予測可能で信頼できる動作を持つ subsystem として扱うべきです。本文
現代のソフトウェア開発における現在のトレンドの一つは、アプリ内の機能を提供するために、OpenAI や Anthropic などの API コールを簡単に適用することです。その機能がユーザーに本当に価値をもたらしているかどうかについては、理性的な人々が議論を重ねることはありますが、私がここで議論したいのは、アプリケーションに対し、クラウドホストされた AI モデルへの依存関係を抱えるという基本的な概念です。この「怠慢」は、サーバーがダウンしたりクレジットカードの有効期限が切れたりするだけで機能しなくなる脆弱で、プライバシーを侵害し、本質的に破綻した世代のソフトウェアを生み出しています。
私たちは、ローカルデバイス上で処理を行うという習慣に戻る必要があります。ポケットの中に収まっているシリコン(チップ)の性能は、一十年前に提供できたものとは比べ物にならないほど驚くべき速さです。バージニア州にあるサーバーファームから JSON 形式のレスポンスを待つ間、その専用ネURAL エンジン(Neural Engine)はほとんど無効状態にあります。これはばかげています。
たとえあなたの意図が純粋であったとしても、ユーザーコンテンツを第三者の AI 提供者にストリーミングする瞬間、あなたの商品の本質は変化してしまいます。あなたはデータ保持に関する問題と、それに伴うすべての重荷(同意、監査、侵害、政府からの要求、学習データの提供など)を引き受けることになります。さらに、あなたの機能は今やネットワーク状態、外部ベンダーの稼働状況、レート制限、アカウントの課金状況、そして自社のバックエンドの健全性に依存しており、スタックを大幅に複雑化させてしまいました。おめでとうございます!UX 機能を一つの分散システムに変換し、そのためにあなたにお金を払うようにしました。この機能がローカルで実装可能であれば、このような混沌への参加は自己犠牲的な損害です。
「AI ありのすべて」がゴールではありません。「有用なソフトウェア」こそがゴールです。
具体的な例:Brutalist Report のオンデバイスサマリー
数年前、私は 1990 年代スタイルのウェブに着想を得たニュースアグリゲーターサービスである『The Brutalist Report』という楽しいサイドプロジェクトを開始しました。最近では、それを高濃度のニュース閲覧体験を維持するという設計目標を持つネイティブ iOS クライアントとして再構築することに決定いたしました。見出しは簡潔なリスト形式で提示され、ウェブに蔓延している「癌(余計な装飾や広告など)」をstripping したリーダーモードと、オプションとしての記事サマリーを表示する「知性(intelligence)」ビューを備えています。
そのサマリーは、Apple のローカルモデル API を使用してデバイス上で生成されます。サーバーを経由する必要がありません。プロンプトログやユーザーログもありません。ベンダーアカウントも不要です。「あなたのコンテンツを 30 日間保存します」というような注釈も不要です。現在では、あらゆる AI 利用がサーバーサイドで行われているのが普通となっていますが、業界全体としてこの傾向を転換するには依然として多くの作業が必要です。
時にはクラウドホストされたモデルしか提供できない知性を必要とするユースケースが存在することも自明ですが、解決しようとしているすべてのユースケースにそれが必要とは限りません。私たちはここで慎重である必要があります。
私は当初の開発努力を Apple エコシステム内のツールに集中させたため、それに関する話のみ可能です。昨年は以来、Apple は開発者が簡単に組み込みのローカル AI モデルを活用できるようにするために大規模な投資を行っています。コアフローは概ね以下のようになります:
import FoundationModels let model = SystemLanguageModel.default guard model.availability == .available else { return } let session = LanguageModelSession { """ 簡潔で情報密度の高いサマリーを Markdown フォーマットで提供してください。 - 主要概念については **太字** で強調してください。 - 事実は箇条書きで記述してください。 - 冗長な表現は避けてください。事実のみを示してください。 """ } let response = try await session.respond(options: .init(maximumResponseTokens: 1_000)) { articleText } let markdown = response.content
より長いコンテンツに対処するためには、プレーンテキストを約 10,000 クラスター(文字数)ごとに区切り、「事実のみ」の簡潔な注釈を各クラスターにつき生成し、その後、2 回目のパッセージを実行してそれらを最終的なサマリーに統合します。これがローカルモデルが最も得意とする種類の作業です。入力データはデバイス上にあるからです(ユーザー自身がそれを閲覧しているため)。出力は軽量であり、高速かつプライバシーを守られます。それが超人博士レベルの知性ではないとしても問題ありません。なぜならそれは、あなたが今読み込んだページのサマリーを作成するだけであり、世界的な知識を invent する必要があるからです。AI ローカルモデルはそのような用途で特に光を発します:モデルの仕事がユーザー所有データを変換することにある場合であり、宇宙規模の検索エンジンとして振る舞うのではなく。
人々が欲求しているが信頼できないと考える AI 機能は数多くあります。メールを要約する、ノートから行動項目を抽出する、このドキュメントを分類するなどです。通常のクラウドアプローチでは、これらすべてを信頼課題へと転換してしまいます。「データを私たちのサーバーに送ってください。私たちはそれを冷静に扱うことを約束します」と。AI ローカルモデルはそのような状況を変えます。デバイス上にはすでにデータが存在します。我々はここでその作業を行います。プライバシーポリシーを 2,000 語も書くことでユーザーから信頼を買うのではなく、そもそもそれを必要としないことこそが信頼を築く方法です。
プラットフォーム上で利用可能なツールはさらに進んでいます。Apple が最近行った最良の取り組みの一つは、「AI の出力」を構造化されていないテキストの塊から離れ、 typed データへと導くことを推奨した点にあります。「モデルに対して JSON を求めて祈る」のではなく、より新しい且つ優れたパターンとして、望むものを表す Swift struct を定義します。各フィールドに対してモデルに自然言語でガイダンスを与え、その型のインスタンスをモデルに生成させることです。それで十分です。
概念的には、以下のように見えます:
import FoundationModels @Generable struct ArticleIntel { @Guide(description: "一文の要約。大げさは禁止。") var tldr: String @Guide(description: "3〜7 の箇条書き。事実のみ。") var bullets: [String] @Guide(description: "カンマ区切りのキーワード。") var keywords: [String] } let session = LanguageModelSession() let response = try await session.respond( to: "記事から構造化されたノートを抽出してください。", generating: ArticleIntel.self ) { articleText } let intel = response.content
これで、UI が Markdown から箇条書きをスクレイピングする必要もなくなり、モデルが JSON スキーマを覚えていると期待する必要もなくなります。あなたは真正な型に真正なフィールドを持ち、一貫してレンダリングできます。それはアプリが実際に利用できる構造化された出力を生み出します。そしてすべてはローカルで動作しています!これは単なる使い勝手の向上ではありません。エンジニアリング的な改善です。
もしローカルファーストなアプリを開発する場合、これは「AI を novelty(新規技術)として扱う」と「AI を信頼できるサブシステムとして扱う」のどちらを選択するかという違いになります。
「しかし、ローカルモデルほど賢くないのです」 その通りです。でもそれではどうですか?多くのアプリ機能には、シェイクスピアを書くか、量子力学を説明するか、司法試験に合格させるほどのモデルは不要です。彼らが必要とするのは、これらの作業のうちの一つ(要約、分類、抽出、書き換え、または正規化)を確実に実行できるモデルだけです。そしてこれらのタスクに対しては、ローカルモデルが本当に優れている場合があります。
ローカルモデルをインターネット全体の代替品として使用しようとすると失望することになります。しかし、アプリ内にある「データ変換器」として使用すれば、「なぜこのデータをサーバーに送ったのか」と疑問を持つようになります。クラウドモデルを使用するのは、それが本当に必要な場合のみです。ユーザーのデータをその属する場所にあります。そして AI を使用する際は、単にチャットボックスとして貼り付けるだけでは十分ではありません。typed 出力と予測可能な挙動を持つ真のサブシステムとして使用してください。機能を送信しようとしていたのに、分散システムを配信し始めてはいけません。