1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

小学生用ひらがなプログラミング言語あいな AI コードエディタ(Foundry Local導入のPoC/概念実証版)をAI仕様駆動開発(ステップ2)~Foundry LocalのUI実装~

1
Last updated at Posted at 2026-11-01

はじめに

この投稿では「小学生用ひらがなプログラミング言語あいな(Aina)」という自作コンパイラ言語のAI コードエディタのPoC/概念実証版を実装していきます。今回はローカルAIのFoundry Localを導入します。実際はモデルも入っていますが、記事内容としてはUI中心となります。

「ひらがなプログラミング言語あいな(Aina)」とは

日本語プログラミング言語いずみ(Izumi)の使用可能文字種を「ひらがな」「かたかな」「全角数字」などに制限したバージョンとします。現時点での言語仕様詳細はこちらとなります。

制御構文の開始シンボルとして、◇、〇、□、・などの全角記号を用い、箇条書きされた日本文としての体裁をあおい(Aoi)いずみ(Izumi)の構文と共有します。小学生の方でも直感的に◇、〇が分岐とループだとわかってもらえそうな気がします:joy:

小学生用ひらがなAI コードエディタとは

こどもたちがひらがなでやりたいことをAIチャットゾーンにひらがな入力パネルから入力すると、エディタパネルにひらがなのあいな(Aina)構文が展開されて、それをなんらかのボタン操作でぽちっとやると、なにかがうごく...というイメージでございます。

ひらがなプログラミング言語あいな(Aina)は、基本的に静的型付けシステム言語です。中置記法のかっこ書きが基本となります。

関数名やかっこ内の変数名はこどもたちのおもいおもいのひらがなイメージとなりますがこのあたりはAIモデルの日本語能力による感じですかね。慣れている児童が手書きでプログラミング言語構文を書けるようになる場合は、関数名・変数名はずばりこどもたちが考えた内容となります。

natural
まるをいっぱいうごかしたい でもずっとはや
aoi
・かず いっぱい = 0
〇くりかえす
    ◇いっぱい == 5 のとき
        □やめる
    ◇ここまで
    □(「〇」)を うつす
    □いっぱい = いっぱい + 1 
〇ここまで

※将来的にいずみ(Izumi)やあおい(Aoi)を使っていただくようになると、一般的な静的型付け高級言語との対比がつかみやすいかもという思惑もございます:joy:

ローカルAIはFoundry Local

別件でOllamaを試してみましたところGPUスペックが足らなくて、だいぶ重かったので、今回はFoundry Localで試してみようと考えております。実は現開発環境PCが非常に低スペックでFoundry Localでも荷が重いことが実装検証で判明しております。

あいな AI コードエディタに組み込むAIサービス比較検討結果

下表はMicrosoft Copilotが出力した比較表を要約したものです。

番号 比較項目 Ollama Foundry Local
1 API と SDK OpenAI互換RESTのみ(SDKなし) OpenAI互換REST + C# / Python / JS / Rust SDK
2 モデル管理 OSSモデルが豊富・ollama pullで簡単・Modelfileで軽量カスタム 公式モデル中心・ONNXベースで本格的なカスタム可能・アプリ同梱可能
3 性能(GPU/NPU/CPU) GPU自動利用・NPU非対応・CPU最適化は標準的 GPU/NPU/CPU最適化(ONNX Runtime)・Copilot+ PCで高速

今回の場合は1のAPIとSDKでC#のSDKがあるらしくC#アプリから内部APIで組み込めるという点でFoundry Localを使ってみることにしました。またモデル管理でアプリ同梱可能がよいかもと仮定。

わたしが選定の際に参考にした現状有姿情報の再掲で、この表の事実性を保証するものではありません。

使用AI

GitHub Copilot

GitHub CopilotのPro+版。あおいと本件実装と検証の主担当。

Microsoft Copilot

Windows11アプリケーションのMicrosoft Copilot。GitHub Copilotの使い方スーパバイザとして利用しています。モードは「無料プラン」のsmart。

あいな AI コードエディタ(FoundaryLocal導入のPoC/概念実証版)の実装構成

docs\あいなAIテキストエディタ実装FoundaryLocal.md 一部抜粋

Foundry Local 連携方式

Foundry Local SDK for C#(アプリへ組み込み、利用者側にCLIの別途導入を要求しない方式)を使い、同一プロセス内でネイティブのチャット補完APIを呼ぶ。

ChatPaneView
   ↓
ChatViewModel
   ↓
ILocalChatService(アプリ側の契約)
   ↓
FoundryLocalChatService
   ↓
Foundry Local SDK(Microsoft.AI.Foundry.Local 系)
   ↓
ローカルモデル(ONNX。CPU / GPU / NPU)

今回の実装検証環境のローカルモデルはCPU演算のみ。これがけっこう厳しい感じ。HDD空き容量の関係で大きいモデルは選択できなかったです。

画面構成

右ペインを「コンソール/エディタ/AIチャット」の縦3段にします。チャットゾーンの構成はOllama版を踏襲し、エディタの下段に置く。各段はGridSplitterで高さを調整でき、チャットは開閉できます(閉じたときエディタが広がる)。

┌──────────────────────────────────────────────────────────────┐
│ ふぁいる   へんしゅう   ひょうじ   えーあい                   │
├───────────────────────┬──────────────────────────────────────┤
│ いれるところ ●こーど  │ コンソール出力領域                   │
│  ○えーあいへのおはなし├──────────────────────────────────────┤
│ ひらがな入力パネル    │                                      │
├───────────────────────┤ テキストエディタ                     │
│ フォルダエクスプローラ │                                      │
│                       ├──────────────────────────────────────┤
│                       │ AIチャット  [モデル▼] 状態 [あたらしいかいわ] │
│                       │ ┌──────────────────────────────────┐ │
│                       │ │ 会話履歴(読取専用)             │ │
│                       │ ├──────────────────────────────────┤ │
│                       │ │ こうほコード プレビュー / 状態   │ │
│                       │ ├──────────────────────────────────┤ │
│                       │ │ 添付内容 / 入力欄(複数行)      │ │
│                       │ │ [そうしん][ちゅうし][まつびについか]│ │
│                       │ └──────────────────────────────────┘ │
├───────────────────────┴──────────────────────────────────────┤
│ 状態: ファイルパス / UTF-8 / 未保存 / 行・桁                  │
└──────────────────────────────────────────────────────────────┘

ひらがな入力パネルの出力先切り替え

ひらがな入力パネルの出力先を「コードエディタ」と「AIチャット入力欄」から利用者が選べるようにします。児童が同じパネルでコードも、AIへの話しかけも入力できるようにするためでございます。

ひらがな入力パネル(左上)
┌────────────────────────────────────────┐
│ いれるところ: (●)こーど   ( )えーあいへのおはなし │
├────────────────────────────────────────┤
│ [ひらがな][かたかな][かず][きごう]     │
│ ...(v3の4.1の2行目・3行目)            │
└────────────────────────────────────────┘

日本語入出力の方針

日本語本文は次の全区間で同一内容として保持します。

チャット入力(WPF TextBox)
  → ChatViewModel(.NET文字列=UTF-16)
  → Foundry Local SDKへの要求(メッセージ)
  → ストリーム応答
  → ChatViewModel
  → 履歴表示

あいなAIテキストエディタ実装 Foundry Local 完了レポート 一部抜粋

# あいなAIテキストエディタ実装 Foundry Local 完了レポート
# 追加: Phase 3(Foundry Local との接続)の実施
実施日: 2026-11-01  
方針: このPC上のPoCとして、qwen3-1.7b をそのまま使い、応答長の制限と経過時間
表示で待ち時間を見える化する。より小さいモデルの追加検証は行わない。

G. 結果

項目 結果
ビルド 成功(警告0・エラー0)
通常のスモークテスト(偽サービス) 8件すべて成功
実モデルでのエンドツーエンド確認(--foundry) 成功(送信→2分かけて準備→生成→完了、中断、解放)
実サービス構成でのアプリ起動・終了 起動し、正常終了を確認
WPF画面の目視・手操作確認 未実施
60 秒目標: 読み込み済みでも最初の応答まで約 101 秒かかり、達成できません。
このPCでは、待ち時間の表示と、いつでも止められる中断で補う形です。
日本語の品質: 絵文字や「①髙」を含む入力でも、例外や文字化けはありませんでした。
ただし、ひらがな中心にする指示は守られず、漢字の「お疲れ様」などが出ました。

実行のご様子

粗削りながらAIが自動生成したソースによる実行状態です。

ainacode2-1.jpg

まだモデルが調整できていないので、推論はあさってです。また文字種も安定していません。漢字によみがなをふってくれている場合はあるようです。

ainacode2-2.jpg

とはいっても、まがりなりにも動いたのはちょっとうれしいかも:relaxed:

おわりに

いかがでしたでしょうか?同じことをしようとしている方々の参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?