テクニカルアーキテクト語彙帳

書けなくていい。会議で使える知識を持つ。

このガイドのコンセプト:コードを手書きする必要はない。各技術の「何ができるか・なぜ選ぶか・どんなトレードオフがあるか」を知っていれば、設計会議・クライアント折衝・技術選定の場で話せる。
」に一致する用語は見つかりませんでした
第1章言語特性マップ
🔷 TypeScript
JavaScriptに型を追加。フロント/バックエンド両対応

一言で言うと:「JavaScriptの信頼できる版。Webの実質標準語」

✅ フロントエンド✅ サーバーサイド✅ 型安全 ⚠ 設定が複雑⚠ ビルドが必要

得意な用途:Webフロントエンド・Node.jsサーバー・MCPサーバー・CLIツール・フルスタック開発

選ぶ理由:フロントとバックを同じ言語で書けるためチームの認知コストが下がる。型エラーでバグを事前検出。Webサービス開発では現実的に最有力。

選ばない理由:小さなスクリプトや自動化ツールにはオーバーキル。AIモデル推論など計算集約タスクはPythonの方が圧倒的にライブラリが充実。

さらに詳しく →
🔵 Go(Golang)
シンプルで高速。インフラ・マイクロサービス向き

一言で言うと:「速い・シンプル・並行処理が得意。インフラの言語」

✅ 高速実行✅ 並行処理✅ シングルバイナリ ⚠ AIライブラリが少ない⚠ ジェネリクスが弱め

得意な用途:高トラフィックAPIサーバー・インフラ・CLIツール・マイクロサービス・有名事例

選ぶ理由:大量リクエストを捌くAPIに最適。シングルバイナリでデプロイが楽。Rustほど難しくなく、Pythonより速い「ちょうどいい」言語。

選ばない理由:AIアプリのPoCフェーズでは選ばない。Pythonライブラリ(PyTorch等)のエコシステムに勝てない。ジェネリクスが弱く抽象的な設計が難しい場面も。

さらに詳しく →
🦀 Rust
極限のパフォーマンスとメモリ安全性。学習コスト高

一言で言うと:「速さと安全性を両立する、最難関の言語」

✅ 最高速✅ メモリ安全✅ 組み込み ⚠ 学習コスト最高⚠ 開発速度遅め

得意な用途:組み込みシステム・OS開発・WebAssembly(Wasm)・ゲームエンジン・グラフィクス・暗号・セキュリティ

選ぶ理由:C/C++の置き換えとして「速くて安全」が必要な場面。メモリリークやバッファオーバーフローをコンパイル時に防げる。長期運用するシステムの信頼性が上がる。

選ばない理由:Web・AI案件のPoCには絶対に向かない。所有権・借用の概念習得に数ヶ月必要。チームにRustが書ける人材を確保することが難しい。

さらに詳しく →
🗄️ SQL
データベース専用言語。JOINやインデックスが重要

一言で言うと:「データを取り出す・集計する・更新するための専用言語」

✅ データ取得✅ 集計/分析✅ 汎用性高い ⚠ 大量データでは設計が重要

得意な用途:SELECT(取得)・JOIN(結合)・INDEX(インデックス)・トランザクション

選ぶ理由:自然言語→SQL変換ツールが増えており、生成されたSQLの妥当性を判断するには基礎理解が必須。AIが書いたSQLのレビュー(JOIN方向・インデックス不足)にも知識が必要。**pgvector**のようにPostgreSQLでベクトル検索も可能になり、SQL+AIの組み合わせが広がっている。

さらに詳しく →
🐍 Python
AIと相性◎。書きやすいが実行速度は遅め

一言で言うと:「人間が読みやすい言語。特にAI・データ処理の業界標準語」

✅ AI/ML✅ データ処理✅ スクリプト✅ Web API ⚠ 実行速度⚠ 型の曖昧さ

得意な用途:機械学習・深層学習・LLMアプリ開発・データ分析・可視化・Web API・自動化スクリプト

選ぶ理由:AI・機械学習のエコシステムがPythonに一極集中。PoCフェーズでのスピードが最速。書きやすく読みやすいためチームへの展開も容易。

選ばない理由:**高トラフィックAPI**(毎秒数万リクエスト超)はGoやRustが有利。**組み込みシステム**にはメモリ効率が悪すぎる。

さらに詳しく →
☕ Java
エンタープライズ不動の王者。JVM・Spring・Android

一言で言うと:「1995年生まれ・30年超動いた王道の言語。Write Once, Run Anywhere の原典」

✅ 大規模基幹システム✅ Androidアプリ✅ ミッションクリティカル ⚠ 軽量スクリプトには過剰⚠ 起動が遅い(コンテナと微妙)

得意な用途:エンタープライズWeb(Spring Boot)・Androidアプリ(既存資産)・大規模基幹システム・ビッグデータ・分散処理・クラウドネイティブ(Quarkus / Micronaut)

選ぶ理由:エコシステムが完成しすぎており、ライブラリ・フレームワーク・情報・人材が豊富。**大規模基幹・ミッションクリティカル**は依然としてJava一択。JVM上で動く**Scala/Kotlin/Clojure** など他言語への布石にもなり、新技術(Virtual Threads・GraalVM)も継続投入されている。

選ばない理由:記法が冗長(getter/setter・例外チェック・型宣言)でコード量が多い。**学習コストが高く、軽量スクリプトには過剰**。起動が比較的遅い(GraalVM ネイティブビルドで改善可)。コンテナとの相性でCold Start に課題が出る場面もある。

さらに詳しく →
💎 C#
Microsoft主力言語。.NET・Unity・Azure

一言で言うと:「26年進化するMicrosoft主力言語。.NET・Unity・Azureを縦断」

✅ Web API(ASP.NET Core)✅ ゲーム開発(Unity)✅ Microsoft/Azure環境 ⚠ 超軽量スクリプトには過剰⚠ .NET Framework(Windowsのみ)は新規非推奨

得意な用途:Web API(ASP.NET Core)・ゲーム開発(Unity)・クラウド / Azure 連携・デスクトップ・モバイル(.NET MAUI)・CLI / Worker Service / IoT

選ぶ理由:**Microsoft エコシステム(.NET・Azure・Visual Studio・Unity)との統合度が最強クラス**。ASP.NET Core は TechEmpower ベンチマークで常に最上位。**Nullable Reference Types** による null 安全性・**async/await** の言語サポート・**LINQ** の表現力・**record 型** の簡潔さはモダンな書き心地を実現。Unity 公式・Azure ファーストクラス採用・NativeAOT で起動高速。Visual Studio のデバッグ体験は業界屈指。

選ばない理由:**Microsoft エコシステム外**では .NET の恩恵が薄く、Linux サーバ運用は依然 Java/Go/Rust に劣る場面も。**.NET Framework(Windows のみ)は廃止予定**で新規採用不可、**.NET 8 以降**を選ぶ必要。Mono は歴史あるが .NET 主流への移行が推奨。学習コストは中程度(Java/C++ 経験者には馴染みやすい)。

さらに詳しく →
🐚 Bash
Unix/Linuxの標準シェル。運用自動化・デプロイの必須言語

一言で言うと:「37年動いたUnix/Linuxの標準シェル。サーバー運用とデプロイの共通語」

✅ サーバー運用自動化(systemd・cron)✅ CI/CDパイプライン✅ デプロイ・ビルドスクリプト✅ テキスト処理パイプライン(grep/sed/awk)✅ 開発環境セットアップ ⚠ クロスプラットフォーム GUI アプリ⚠ 大規模アプリケーション本体(中規模以上が限界)⚠ Windows専用ロジック(PowerShell/Python推奨)

得意な用途:サーバー運用自動化(systemd・cron)・CI/CD パイプライン(Harness / GitHub Actions / GitLab CI)・デプロイ・ビルドスクリプト・ログ集計・テキスト処理パイプライン・開発環境セットアップスクリプト

選ぶ理由:**Unix/Linux のデフォルトシェル**で、サーバー運用・CI/CD・Docker・systemd の**共通語**として外せない。**POSIX シェル標準にほぼ準拠**しつつ、配列・`[[ ]]`・プロセス置換等の実用拡張も持つ。**テキスト処理パイプライン**(grep/awk/sed/jq)はパイプで簡潔に書け、ログ集計やアクセス解析では最速クラス。`set -euo pipefail` と **ShellCheck** で堅牢化も可能。`#!/usr/bin/env bash` のシバン1行で即スクリプト化できる学習コストの低さも強み。

選ばない理由:**大規模アプリケーション本体には不向き**(数百行を超えると保守が困難になり、Python/Go へ移行すべき)。**シェル展開・単語分割・引用**のルールが独特で、`$VAR` と `$VAR "` の違いを誤ると**セキュリティ脆弱性**(コマンドインジェクション)に直結する。**Windows サポートは WSL / Git Bash 経由のみ**で、ネイティブ実行は不可。**対話シェルとしての完成度は zsh / fish に劣る**ため、補完・プロンプトを凝りたい用途には向かない。

さらに詳しく →
🟣 Kotlin
Javaの後継・Android公式言語・モダン簡潔・null安全・Coroutines

一言で言うと:「15年動いたモダンJVM。Javaの冗長さを解消し、Android公式となった」

✅ Androidアプリ(現行公式)✅ サーバーサイド(Ktor / Spring Boot)✅ Kotlin Multiplatform(iOS / JS / Desktop 共有コード)✅ Null安全性が重要な業務システム✅ モダンJVM(Java 資産活用) ⚠ ビルド速度が最重要(Gradle 設定の重さが課題)⚠ 現メンバーが Java も Kotlin も読めない⚠ レガシー JVM 環境(古い Android・Java 6 など)で動かす必要がある場合

得意な用途:Androidアプリ(現行公式)・サーバーサイド(Ktor / Spring Boot)・Kotlin Multiplatform(iOS / JS / Desktop 共有コード)・CLI / ツール(Kotlin Script)・data class を多用する業務システム

選ぶ理由:**Java の上位互換**として設計され、既存の Java ライブラリ・フレームワーク(Spring・Hibernate 等)を**そのまま呼べる**。**Null安全**(コンパイル時に NullPointerException を検出)・**data class**(equals/hashCode/toString 自動生成)・**拡張関数**(既存クラスの拡張)・**Coroutines**(軽量スレッド・構造化並行性)・**when式**(スマートキャスト付きのパターンマッチ)など、モダン言語機能を**後付けなし**で備えている。**Android の現行公式言語**(Kotlin-first)で、Jetpack Compose・KMP(iOS/Desktop 共有)と組み合わせれば**モバイル・サーバー・デスクトップを単一言語で統一**できる。**K2 コンパイラ**(Kotlin 2.0)でビルド速度も改善済み。

選ばない理由:**ビルドツール Gradle の重さ**が依然課題(特に Android プロジェクトで初回ビルドが数分)。**学習コストは中**だが、Java に無い概念(拡張関数・スコープ関数・sealed class・inline reified 等)が複数あり、**Java も Kotlin も読めないメンバーには導入コスト**がかかる。**Kotlin 固有機能(拡張関数・演算子オーバーロード・DSL)を多用**すると Java 側から見ると**読みづらく**なる(相互運用時の注意)。**コンパイル時間が Java より長い**ケースがあり、大規模プロジェクトの CI 高速化では課題。

さらに詳しく →
📊 言語特性レーダーチャート

各言語の6軸評価(実行速度 / AI&ML / 学習容易さ / 型安全性 / フロント対応 / スケーラビリティ)

🐍 Python
速度▲ AI◎ 学習◎
🔷 TypeScript
フロント◎ 型安全◎
🔵 Go
速度◎ インフラ◎
🦀 Rust
速度◎ 安全◎ 学習▲
🗄️ SQL
データ◎
☕ Java
スケール◎ エンタープライズ◎
🎯 C#
.NET◎ Unity◎
🐚 Bash
運用自動化◎
🟣 Kotlin
Android◎ モダン◎
第2章AIスタック語彙
🧠 LLM(大規模言語モデル)
GPT・Claude・Gemini等。自然言語を理解・生成するAI

何ができるか:文章生成・要約・翻訳・コード生成・質問応答。会話形式で指示できる。

主要モデル:GPT-4o(OpenAI)/ Claude 3.5 Sonnet(Anthropic)/ Gemini(Google)/ GLM(Z.AI)

選び方のポイント:用途・コスト・レイテンシ・コンテキスト長で選ぶ。「全部GPT」は最適ではない。

限界:学習データのカットオフ日より新しい情報は知らない(→RAGで補完)。長い文章は末尾を忘れがち。

💼 業務自動化💼 サポートコスト削減💼 情報整理効率化
📌 対比して覚える:LLMRAG Fine-tuningプロンプトエンジニアリング
💬 「どのLLMを選べばよいですか?」
用途・コスト・レイテンシ・コンテキスト長で選びます。すべてGPT-4が最適ではなく、軽量タスクにはGPT-4o mini等のコストを抑えたモデルが合理的です
💬 「AIの回答が間違っていた場合の責任はどこにありますか?」
現状LLMは確率的な予測であり誤りが発生します。重要判断には人間のレビューを挟む設計と、ハルシネーション対策(RAG・根拠提示)が必要です
🎯 Fine-tuning(ファインチューニング)
既存LLMを特定タスク用に追加学習させること

何をするか:汎用LLMに自社データ・ドメイン知識を追加学習させ、特定タスクの精度を上げる。

必要なもの:大量の教師データ(入力→正解出力のペア)+GPU計算コスト+MLエンジニア

いつ選ぶか:プロンプトだけでは精度が出ない時・特定の口調や形式を学習させたい時

いつ選ばないか:まずRAGやプロンプトエンジニアリングで試す。Fine-tuningは最終手段に近い。コストが高い。

⚠ コスト高⚠ データ大量必要✅ 高精度化
📚 RAG(Retrieval-Augmented Generation)
外部DBから関連情報を検索してLLMに渡す手法

仕組み:①ユーザーの質問を受け取る → ②関連ドキュメントをベクトルDBで検索 → ③LLMに質問+ドキュメントを一緒に渡して回答させる

なぜ使うか:LLMは学習データにない情報(社内文書・最新情報)を知らない。RAGで「今この文書を見ながら答えて」ができる。

ハルシネーション対策:根拠となる文書を渡すことで嘘をつく確率を下げられる。

✅ 最新情報に対応✅ Fine-tuningより安い🔵 社内文書検索🔵 カスタマーサポート
📌 対比して覚える:RAGFine-tuning RAGプロンプトのみ
💬 「RAGとFine-tuningどちらが必要ですか?」
まずRAGを試します。Fine-tuningはデータが大量に必要でコストが高く、最終手段に近いです。RAGで社内文書・最新情報を参照できれば多くの課題は解決します
💬 「RAGを導入するといつでも正確な回答が得られますか?」
精度は上がりますが100%ではありません。関連文書の品質・検索精度・チャンク設計に依存します。導入後も継続的なチューニングが必要です
📐 Embedding(埋め込み)
テキストを数値ベクトルに変換する技術

何をするか:「東京」「Japan's capital」「首都」→ 似た数値ベクトルに変換。意味が近い文章は数値も近くなる。

用途:類似文章検索・RAGの「関連文書を探す」部分・レコメンドエンジン

主要サービス:OpenAI text-embedding-3 / Cohere Embed / Google Vertex AI Embeddings

✍️ プロンプトエンジニアリング
LLMへの指示文を最適化する技術

主要テクニック

Few-shot:「例を3つ見せてから本番指示」→ 精度向上

Chain-of-Thought:「ステップごとに考えて」→ 複雑な推論に有効

System prompt:「あなたは○○の専門家です」→ キャラクター・制約を設定

Few-shot + CoT:両方組み合わせると最強

重要な考え方:Fine-tuningの前に必ずプロンプトで試す。コストがゼロで改善できる。

🤖 AIエージェント
LLMがツールを自律的に使いタスクを実行する仕組み

通常のLLMとの違い:LLMは「返答するだけ」。エージェントは「ツールを使いながら自律的に行動する」。

:「最新のニュースをまとめてSlackに送って」→ Web検索ツール → まとめ生成 → Slack送信ツール を自動で使う

主要フレームワークLangChainLLMを使ったアプリを素早く組み立てるPython/TSライブラリ。RAG・エージェント機能を提供 / LlamaIndex / OpenAI Assistants / Claude + MCP

課題:ループ・無限実行・コスト暴走のリスク。品質ゲートと予算上限が必須。

🔥 NexusCoreで実装済み
🔌 MCP(Model Context Protocol)
AIエージェントが外部ツールを呼び出す標準プロトコル

何をするか:Claude / Cursorなどのエージェントが外部サービス(GitHub・Slack・DB等)を統一した形式で呼び出せるようにする規格。

USB-Cのような存在:「どのAIでも、どのツールにも繋げられる標準端子」

サーバー側:ツール提供者がMCPサーバーを実装(Python or TypeScript)

クライアント側:Claude Code / Cursor / Continue等が自動でツールを呼び出す

🔥 GLM/MiniMax MCPを自作・運用済み
🗃️ ベクトルDB
Embeddingを保存・検索する専用データベース

通常のDBとの違い:通常のDBは「完全一致・条件一致」で検索。ベクトルDBは「意味が近い順」で検索できる。

主要サービス:Pinecone(クラウド)/ Chroma(ローカル・軽量)/ Weaviate / pgvector(PostgreSQL拡張)

使われる場面:RAGの文書検索・類似商品検索・重複検知

第3章インフラ・クラウド語彙
⚖️ サーバーレス vs コンテナ vs VM
3つの実行環境のトレードオフ
方式メリットデメリット向いてる用途
サーバーレス
(Lambda等)
管理ゼロ
使った分だけ課金
コールドスタート
実行時間上限
イベント駆動・軽量API
コンテナ
(Docker/ECS)
環境再現性◎
柔軟
オーケストレーション学習コスト Webアプリ・マイクロサービス
VM
(EC2等)
自由度最高
長期稼働に強い
管理コスト高
起動が遅い
フル制御が必要な場面
🐳 Docker
アプリをコンテナ化して環境差異をなくす技術

何を解決するか:「自分のPCでは動くのに本番で動かない」問題。アプリと依存関係を箱(コンテナ)に詰めて、どこでも同じ動作を保証。

Dockerfile:コンテナの設計図。「このOSにこれをインストールしてこのコマンドで起動」を定義。

docker-compose:複数コンテナ(アプリ+DB+Redis等)をまとめて管理するツール。

🔥 OpenClaw本番環境で使用中
💼 デプロイ安定化💼 環境コスト削減💼 開発効率向上
📌 対比して覚える:Docker (1台)Kubernetes (大規模)
💬 「なぜDockerを使うのですか?普通に動かせばよいのでは?」
環境差異によるデプロイ失敗を防ぐためです。開発・テスト・本番で同じコンテナを動かすことで「自分のPCでは動く」問題を解消できます
☸️ Kubernetes(K8s)
コンテナを大規模管理するオーケストレーション基盤

Dockerとの違い:Dockerは「1台のコンテナを動かす」。K8sは「100台のコンテナを自動管理する」。

できること:コンテナの自動スケール・障害時の自動再起動・ローリングアップデート

いつ必要か:大規模サービス(数十台以上)になってから。小規模PoCには不要。

⚠ 学習コスト高。PoCでは過剰
☁️ AWS 主要サービス
クラウド最大手。サービス数200以上
サービス一言説明よく使う場面
Lambdaサーバーレス関数実行APIエンドポイント・イベント処理
S3ファイルストレージ画像・動画・ログの保存
RDSマネージドDB(PostgreSQL等)本番DBの定番
ECSDockerコンテナ管理Webアプリのコンテナ実行
BedrockAWS上でLLMを使うClaude/Llama等をAPI経由で利用
API GatewayAPIの入り口管理認証・レート制限・ルーティング
🌐 GCP 主要サービス
Google Cloud。AI/ML系が特に強い
サービス一言説明
Cloud Runコンテナをサーバーレスで実行(AWSのLambda+ECSの中間)
BigQuery超高速な大規模データ分析専用DB
Vertex AIGeminiなどのLLM・MLモデルをAPIで提供
Cloud StorageS3相当のファイルストレージ
⚙️ CI/CD
コードをpushすると自動でテスト・デプロイが走る仕組み

CI(継続的インテグレーション):コードをpushするたびに自動でテストを実行。壊れた変更を早期発見。

CD(継続的デリバリー):テストが通ったら自動で本番環境にデプロイ。人手を介さない。

主要ツール:GitHub Actions(最も普及)/ CircleCI / Jenkins

🔥 NexusCoreのGitHub ActionsでCI/CD稼働中
💼 リリーススピード向上💼 品質保証💼 手動作業削減
📌 対比して覚える:CI (テスト自動化)CD (デプロイ自動化)
💬 「CI/CDがないとどんな問題が起きますか?」
手動デプロイによるヒューマンエラー・テスト漏れ・リリース頻度の低下が起きます。CI/CDで「コードをpushしたら自動で品質確認・本番反映」まで流れるのが理想です
第4章プロジェクト進行語彙
🔬 PoC(Proof of Concept)
実現可能性を検証する試作フェーズ

目的:「本当にこの技術で解決できるか?」を少ないコストで確かめること。本番品質は求めない。

PoCで問われること:技術的実現性・コスト・精度・ユーザー受容性

PoC→本番のよくある落とし穴:「PoCは動いたが本番スケールに耐えられない」「精度90%で合格したが本番データでは70%」

今の自分との関連:アサイン・GNUS等の案件はPoCフェーズが多い。「完璧でなくていい・速さが正義」の段階。

🚀 MVP(Minimum Viable Product)
最小限の機能で市場検証するプロダクト

PoCとの違い:PoCは「技術の検証」。MVPは「ユーザーに使ってもらって価値を検証するプロダクト」。

原則:機能を削りに削って、コアバリューだけを届ける最小単位で出す。

よくある失敗:「あれもこれも実装してからリリース」→ 時間と資金が尽きる。

🔄 アジャイル / スプリント
2週間単位で開発を繰り返す手法

スプリント:1〜2週間の開発サイクル。期間内にやることを事前に決め、終わったらレビュー→次のスプリントへ。

デイリースタンドアップ:毎朝15分の進捗共有。「昨日やったこと・今日やること・詰まってること」を共有。

ウォーターフォールとの違い:ウォーターフォールは「全部設計→全部実装→全部テスト」。アジャイルは「小さく作って小さく届ける」。

バックログ:未着手タスクの一覧。優先度順に並べてスプリントで消化していく。

🏗️ モノリス vs マイクロサービス
アーキテクチャの2大選択肢
モノリスマイクロサービス
構造1つのアプリに全機能機能ごとに独立したサービス群
メリットシンプル・開発が速いスケールしやすい・障害が分離
デメリット大きくなると管理困難運用複雑・通信コスト
向いてる規模スタートアップ・PoC大規模・チーム分割時

💡 「最初はモノリスで作って、スケールしてから分割」が鉄則。最初からマイクロサービスは過剰設計になりがち。

📌 対比して覚える:モノリスマイクロサービス 垂直スケール水平スケール
💬 「マイクロサービスに移行すべきですか?」
チームが10人以上になり、特定機能だけのスケールや別チームでの独立開発が必要になったら検討します。それ以前は移行コストがメリットを上回ります
💬 「マイクロサービスのリスクは何ですか?」
サービス間通信の遅延・障害伝播のリスク・運用複雑性の増大です。分散トレーシングとサービスメッシュの導入も必要になります
🔗 API設計:REST / GraphQL / gRPC
サービス間通信の3方式の違い
方式特徴向いてる場面
RESTURL+HTTP動詞。最も普及Webアプリ・公開API
GraphQL必要なデータだけ取得できるモバイルアプリ・複雑なデータ取得
gRPC高速・型安全。サービス間通信向けマイクロサービス同士の内部通信

💡 迷ったらREST。GraphQL/gRPCは必要になってから検討。

📌 対比して覚える:RESTGraphQL REST (外部公開)gRPC (内部通信)
💬 「GraphQLに移行するメリットはありますか?」
モバイルアプリで通信量を削減したい場合に有効です。ただし学習コスト・キャッシュ設計・N+1問題など複雑さも増します。RESTで困っていなければ不要です
🔐 認証(AuthN)/ 認可(AuthZ)
「誰か」と「何ができるか」の違い

認証(Authentication):「あなたは誰ですか?」→ ログイン・本人確認

認可(Authorization):「あなたには何の権限がありますか?」→ 管理者/一般ユーザーの分岐

JWT(JSON Web Token):ログイン後にサーバーが発行するトークン。次のリクエストに添付して「認証済み」を証明。

OAuth2:「Googleでログイン」「GitHubでログイン」の仕組み。自分でパスワード管理しなくていい。

🌐 CORS
ブラウザのオリジン間リクエスト制限。フロント・バック連携で必ず出る

何が起きるか:フロント(localhost:3000)がバックエンド(localhost:8000)を呼ぶと、ブラウザがブロックする。

なぜ存在するか:悪意あるサイトが別サイトのAPIを勝手に呼び出すのを防ぐセキュリティ機能。

解決方法:サーバー側のレスポンスヘッダーに「このオリジンからのアクセスは許可」と明示する。

会議で出たら:「バックエンドのCORS設定で許可するオリジンを追加する必要があります」で通じる。

第5章開発プロセス語彙
🏃 スクラム
アジャイル開発の最も普及したフレームワーク

スプリント:1〜2週間の開発サイクル。期間内にやることを確定させ、終わりにデモ&振り返りを実施。

プロダクトオーナー(PO):何を作るかを決める役割。ビジネス側の代表者。バックログの優先順位付けをする。

スクラムマスター:チームがスクラムを正しく回せるよう支援する役割。マネージャーではなくファシリテーター。

スプリントレビュー:スプリント終了時にステークホルダーへのデモ。「動くものを見せる」が原則。

レトロスペクティブ(振り返り):スプリント後にチームで「良かったこと・改善すること」を議論。プロセス改善の核心。

✅ 短サイクルで方向修正可能⚠ 形骸化しやすい
📌 対比して覚える:スクラムウォーターフォール スプリント計画バックログ整理
💬 「スプリントの途中で要件が変わったらどうなりますか?」
スプリント中の変更は原則受け付けません。変更要件は次のスプリントバックログに積みます。緊急の場合はスプリントを中断してリプランニングします
💬 「スクラムとカンバン、どちらが合っていますか?」
定期的なリリースサイクルがあればスクラム。運用・サポートなど継続的なタスク処理にはカンバンが向いています
💳 技術的負債(テックデット)
将来の開発速度を下げる「手抜き」の蓄積

何が問題か:「今急いで作った粗雑なコード」は金融の負債と同様に利息が増える。放置するほど修正コストが膨らむ。

具体例:テストのないコード・ドキュメントのない関数・将来拡張を考慮しないDB設計・古いライブラリの放置

なぜ生まれるか:締め切り優先・人手不足・「後でやろう」の先送り文化

対策:リファクタリングの時間をスプリントに組み込む。テックデット専用スプリントを設ける。SonarQubeなどのコード品質計測ツールを使う。

⚠ 放置で開発速度が指数的に低下✅ 早期対処でコスト削減
📌 対比して覚える:技術的負債リファクタリング(返済)
💬 「技術的負債の解消にどれくらい時間が必要ですか?」
まず現状の負債を可視化(コード品質スコア・テストカバレッジ測定)し、優先度をつけます。一般的にスプリントの20%を負債解消に充てることが推奨されます
💬 「新機能追加と技術的負債解消、どちらを優先すべきですか?」
負債が開発速度を著しく下げている場合は負債解消を優先します。「今1週間使えば今後半年の速度が2倍になる」という試算をビジネス側に示すことが有効です
📈 ベロシティ / バーンダウンチャート
開発チームの生産性を測る指標

ベロシティ:スプリントごとに完了したストーリーポイントの平均値。チームの処理能力の目安。「このチームは1スプリントで30ポイントこなせる」。

ストーリーポイント:タスクの複雑さ・リスクを数値化したもの(時間ではなく相対的な難易度)。フィボナッチ数列(1,2,3,5,8,13…)で表すことが多い。

バーンダウンチャート:残タスクが期限に向けて減っていくグラフ。理想ラインより上にあれば遅延のサイン。

注意:ベロシティはチームの生産性を外部から評価する指標ではない。チーム自身のキャパシティ把握と計画精度向上が目的。

✅ 進捗の客観的可視化⚠ 数字だけで評価すると逆効果
💬 「ベロシティが下がっているのはなぜですか?」
技術的負債の増加・メンバーの体調・割り込みタスクの増加・見積もり精度の問題などが考えられます。バーンダウンチャートと合わせて原因を特定します
📋 SLA / SLO / SLI
サービス品質の約束・目標・測定値

SLA(Service Level Agreement):契約上の約束。「月間稼働率99.9%を保証する。下回ったら返金」。ユーザー・クライアントとの合意。

SLO(Service Level Objective):内部目標値。「稼働率99.95%を目指す」。SLAより高い目標を社内で設定するのが一般的。

SLI(Service Level Indicator):実際の測定値。「今月の稼働率は99.97%だった」。

エラーバジェット:SLOとの差分。「99.95%目標なら月0.05%=21.6分まで停止してよい」。このバジェット内で新機能リリースリスクを管理する。

✅ 信頼性の定量化✅ リリースリスクの判断基準
📌 対比して覚える:SLA(対外約束)SLO(内部目標)SLI(実測値)
💬 「このリリース、SLOに影響しますか?」
エラーバジェットの残量を確認します。バジェットが豊富なら問題なし。枯渇気味なら機能フリーズ(リリース停止)を検討します
💬 「SLA違反が発生した場合の対応フローは?」
インシデントレスポンス手順に従い、障害の検知→影響範囲特定→復旧→ポストモーテム(再発防止策)の流れで対応します
🔧 リファクタリング
外部から見た動作を変えずに内部構造を改善すること

なぜ必要か:コードは書いた後も「読まれる・変更される・テストされる」。保守性の低いコードは変更コストが指数的に増加する。

代表的なリファクタリング手法

関数の抽出:長い関数を小さな関数に分割

変数名の改善xuserEmailAddressなど意味のある名前に

重複の除去:同じ処理を共通関数にまとめる(DRY原則)

テストがない状態でのリファクタリングは危険:動作が壊れても気づけない。テスト整備→リファクタリングの順が鉄則。

✅ 保守コスト長期削減⚠ テストなしは危険
📌 対比して覚える:リファクタリング(内部改善)新機能追加(外部変化)
💬 「リファクタリングでユーザーへのメリットは何ですか?」
直接的なメリットは見えませんが、開発速度の維持・バグ発生率の低下・新機能追加コストの削減という形で間接的にユーザー体験が向上します