コンテンツにスキップ

AI エンジン:単なる翻訳ではありません

なぜ DevLingo は辞書 API を直接使わないのでしょうか?単純な API クエリが返すのは静的でコンテキストのない情報です。DevLingo の AI エンジンは辞書にはできない 3 つのことを行います。

辞書は「deploy」を「デプロイする」と説明します。しかし開発者が知る必要があるのは:

シーン意味例文
アプリのデプロイ本番環境にリリース”We deployed the new version to production.”
リソースの配置リソースの割り当て/有効化”Deploy additional servers to handle traffic.”
配置(軍事用語)展開する、配備する”The team is deployed across different time zones.”

DevLingo AI は、あなたが Xcode でコードを読んでいることを知っているので、最初の意味を強調します。HR ソフトウェアで「deploy」を見た場合は、3 番目の意味がより関連する可能性があります。

{ "sourceApp": "com.apple.dt.Xcode" }
→ AI がレスポンススタイルを調整:技術指向、コード関連の例文を優先
{ "sourceApp": "com.tinyspeck.slackmacgap" }
→ AI がレスポンススタイルを調整:チームコミュニケーション、よりカジュアル

:::tip アプリ認識 DevLingo は NSWorkspace を通じて現在アクティブなアプリの Bundle Identifier を取得し、Claude に渡します。AI はこれに基づいてレスポンスを調整します。 :::

辞書はテキストの塊を返します。DevLingo AI は構造化された JSON を返します:

{
"word": "idempotent",
"ipa": "/ɪˈdɛmpətənt/",
"pos": "adjective",
"definition_en": "Describing an operation that, when applied multiple times, produces the same result as when applied once.",
"meaning_ja": "冪等の;複数回適用しても1回の適用と同じ結果になる",
"examples": [
{
"en": "Ensure your API endpoints are idempotent to handle retry requests safely.",
"ja": "API エンドポイントが冪等であることを確認し、リトライリクエストを安全に処理しましょう。",
"context": "API design"
},
{
"en": "This function's idempotent nature makes it safe to call multiple times.",
"ja": "この関数の冪等な性質により、複数回呼び出しても安全です。",
"context": "Function design"
}
],
"synonyms": [
{
"word": "repeatable",
"difference": "より一般的;任意の繰り返し可能な操作を指します。'idempotent' はより専門的で正確です。"
}
],
"collocations": [
"idempotent operation",
"idempotent function",
"idempotent API"
],
"grammar_notes": "形容詞、不可算。技術ドキュメントでは修飾語または補語として頻繁に使用されます。",
"l1_tips": {
"ja": "日本語のカタカナ語「アイデンポテント」として使われることもありますが、英語での発音はかなり異なります。技術的な議論では英語のまま使用するのが一般的です。"
},
"tech_pronunciation": {
"ipa": "/ɪˈdɛmpətənt/",
"common_mispronounce": "i-DEM-po-tent(誤り;アクセントは DEM にあります)",
"correct_stress": "i-**DEM**-pu-tunt",
"etymology": "数学用語に由来、ラテン語の 'idem'(同じ)と 'potent'(力のある)から"
}
}

各フィールドは UI のカードの異なる領域に対応しています。テキストの塊ではなく、丁寧に整理された学習教材です。

{
"phrase": "rubber ducking",
"type": "compound (noun phrase)",
"register": "informal / tech culture",
"definition_en": "A debugging method where you explain your code to a rubber duck (or any object), often revealing bugs through the act of articulation.",
"meaning_ja": "ラバーダック(またはどんなオブジェクトでも)にコードを説明することでデバッグする方法。説明する過程で問題を発見できることが多い。",
"stress_pattern": "RUB-ber DUCK-ing",
"usage_patterns": [
{
"pattern": "[Subject] [is/uses] rubber ducking",
"example": "I've been rubber ducking this problem for 10 minutes and just found the issue.",
"ja": "10分間 rubber ducking をしていて、やっと問題を見つけました。"
},
{
"pattern": "[Let's] do some rubber ducking [on X]",
"example": "Let's do some rubber ducking on this algorithm.",
"ja": "このアルゴリズムについて rubber ducking をしましょう。"
}
],
"alternatives": [
{
"phrase": "debugging by explanation",
"note": "よりフォーマルな表現;'rubber ducking' ほど文化的な色彩はない"
},
{
"phrase": "talk it out",
"note": "よりカジュアル;デバッグ手法を特に指すわけではない"
}
]
}

入力が開発用語の場合、AI は追加情報を提供します:

単語:latency
標準出力:definition, examples, pronunciation...
追加出力(技術用語のみ):
• 関連する指標:ミリ秒(ms)/ マイクロ秒(μs)
• 対応する概念:throughput, bandwidth
• 実践シナリオ:"P99 latency < 100ms" の意味
• 業界ベンチマーク:一般的なネットワーク遅延 50ms、悪い場合は 500ms+

「猫がマットの上に座っている」ではなく:

単語:concurrent
例文(実際の開発から):
1. "This function is not concurrent-safe; you need to add locking."
→ コードレビューのシーン
2. "We redesigned the system to handle concurrent requests efficiently."
→ アーキテクチャ設計のシーン
3. "Make sure your HTTP client supports concurrent connections."
→ パフォーマンス最適化のシーン

ユーザーの母語に基づいて、AI が一般的な落とし穴を積極的に指摘します:

ユーザー:日本語母語
単語:article / the / a
AI のヒント:
"日本語話者によくある問題:日本語には冠詞がありませんが、英語では definite article (the) と indefinite article (a/an) を区別します。
誤り例:'I saw cat' → 'I saw a cat' または 'I saw the cat'(コンテキストに依存)
記憶法:英語では可算名詞には通常冠詞が必要です。日本語の「猫」はそのまま使えますが、英語では「一匹の猫」か「その猫」と言わなければなりません。"

:::note L1 干渉 これが DevLingo のユニークな点です。標準的な辞書は「あなたがこの単語を間違って使う原因はあなたの母語の背景にある」とは教えてくれません。 :::

DevLingo が Claude を選んだ理由:

  1. 構造化出力能力が高い:Claude はフォーマットされた JSON の生成に優れており、信頼性が高い
  2. コンテキスト理解が深い:Claude はアプリのコンテキスト、コードのコンテキスト、L1 干渉を理解できる
  3. 開発者フレンドリー:Claude の技術用語、コード、開発ワークフローの理解は汎用 LLM を上回る
  4. 制御性:プロンプトエンジニアリングにより、DevLingo は出力の形式と品質を正確に制御可能

DevLingo の Claude 呼び出しには、丁寧に設計されたプロンプトテンプレートが含まれています:

You are an English learning assistant for developers.
The user selected: "{selectedText}"
Mode: {mode}
User's native language: {userLanguage}
Current application: {sourceApp}
Surrounding context: "{context}"
Respond with JSON in the following structure:
{
"mode": "word|phrase|sentence|paragraph|express",
... [detailed schema]
}
Important:
1. Examples must be from software development context
2. Provide 2-3 examples per item
3. For native speakers of {userLanguage}, highlight common interference patterns
4. If applicable, note pronunciation and stress patterns
5. Keep definitions concise (< 20 words)

このプロンプトにより:

  • 出力形式が一貫する
  • 例文が開発コンテキストから取得される
  • L1 干渉が重視される
  • 結果が学習に対して的を絞ったものになる
機能辞書 APIDevLingo AI
基本的な定義
複数の例文○(通常は的を絞っていない)○(すべて技術シーン)
コンテキスト認識×○(使用しているアプリを認識)
L1 干渉のヒント×
構造化出力×(テキストのみ)○(JSON、UI フレンドリー)
技術用語の追加情報×○(語源、業界ベンチマークなど)
同義語の比較×(同義語を列挙するだけ)○(違いを説明)
発音と IPA○(部分的)○(完全 + 4 種類のアクセント)

コストとパフォーマンスのバランス

Section titled “コストとパフォーマンスのバランス”

:::note なぜ階層化で AI を使わないのか DevLingo の階層化クエリシステムにより:

  • よく使われる語彙(ローカルライブラリにヒット):AI 0ms、100% 高速
  • キャッシュヒット(ユーザーが以前にクエリ済み):AI 0ms、100% 高速
  • まれな語彙(AI 呼び出し):<2s で完了、それでも高速

これにより、ユーザーの 95% のクエリに API コールが不要となり、コスト削減と体験向上の両方を実現します。 :::

DevLingo の AI エンジンは「翻訳」のためではなく、「理解と教育」のためにあります。あなたが何をしているか、あなたの言語背景を知り、最も効果的な教え方を知っています。