Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

プロトコル バッファ入門(LFS145)は、Linux Foundation Trainingが提供する、Protocol Buffers(Protobuf)の初心者向けオンライン・セルフペース講座です。.protoファイルの作成、protocによるコード生成、Pythonでの利用、複数言語間のデータ交換、スキーマ変更とデータ進化までを、ハンズオン形式で学べます。

標準学習時間は6〜7時間、オンラインコースへのアクセス期間は90日間です。公式の個別ページでは$0、公式カタログでは$79の表示が確認できるため、料金は登録時の最終表示を必ず確認してください。公式講座ページ

LFS145の概要

項目 内容
講座名 Introduction to Protocol Buffers(LFS145)
提供元 Linux Foundation Training
形式 オンライン・セルフペース
対象レベル 初心者
標準学習時間 6〜7時間
アクセス期間 90日間
含まれるもの 教材、ハンズオンラボ、課題、ディスカッションフォーラム、デジタルバッジ
中心となる言語 Python

講座ページには受講者評価として4.6/5も掲載されています。ただし、評価は学習効果を保証するものではなく、評価件数や収集方法も確認できないため、講座選びの参考情報として見るのが適切です。

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

料金は無料なのか

料金表示には注意が必要です。Linux Foundation Trainingの講座個別ページでは$0と表示される一方、公式フルカタログでは$79の表示が確認できます。

地域、ログイン状態、キャンペーン、個人向け・法人向け区分、ページの更新時期などが表示差の理由として考えられますが、公開情報だけでは特定できません。「完全無料」と断定せず、申し込み画面で価格、対象地域、ログイン後の条件を確認してください。

Protocol Buffersとは

Protocol Buffers(Protobuf)は、構造化データをシリアライズするための、言語中立・プラットフォーム中立の仕組みです。データ構造を.protoファイルに定義し、protocコンパイラでPython、Go、Java、C++、C#、Rustなどの言語向けコードを生成して利用します。

たとえば、次の定義ではPersonというメッセージに、名前、ID、メールアドレスを持たせています。

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
syntax = "proto3";

package example;

message Person {
  string name = 1;
  int32 id = 2;
  string email = 3;
}

messageはデータ型、各フィールドの右側にある数字はフィールド番号です。フィールド番号はデータの wire format で使われるため、単なる連番や表示順ではありません。公式の概要とproto3仕様は、Protobuf概要およびproto3仕様で確認できます。

JSONとの違い

観点 Protobuf JSON
形式 主にバイナリのwire format テキスト
スキーマ .protoで明示的に定義 必須ではない
コード生成 標準的なワークフローに含まれる 通常は手作業または別ツール
可読性 バイナリは直接読みにくい 人間が読みやすい
設計上の傾向 サイズや処理効率を重視しやすい 手軽で相互運用しやすい

ProtobufはJSONより常に高速・小容量になると断定できません。データ形状、実装、圧縮、通信方式、JSONへの変換コストなどで結果は変わります。可読性やブラウザーとの直接連携を優先するならJSON、厳密なスキーマとコード生成を重視するサービス間通信ならProtobufが候補になります。公式概要

LFS145で学ぶ内容

  • Protocol Buffersの目的と基本概念
  • 構造化データのシリアライズとデシリアライズ
  • proto3の構文
  • メッセージ、スカラー型、列挙型、繰り返しフィールド
  • フィールド名とフィールド番号
  • protocコンパイラの使い方
  • 生成コードの利用
  • importとpackage
  • Pythonからのメッセージ操作
  • 複数言語間のデータ交換
  • スキーマ変更とデータ進化
  • 高度なProtobufの概念

単にメッセージを定義するだけでなく、既存データを壊さずにスキーマを変更する考え方まで扱う点が、実務導入前の基礎固めとして重要です。講座の範囲はLinux Foundationの講座ページで確認できます。

gRPCとの関係

ProtobufとgRPCは同じものではありません。

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Protobuf:データ構造の定義、シリアライズ、コード生成を担う仕組み
  • gRPC:RPCサービスの定義と呼び出し、通信、ストリーミングなどを扱うフレームワーク

gRPCではProtobufを使ってメッセージやサービスを定義するため、LFS145はgRPC学習の前提として役立ちます。一方、gRPCサーバーの実装、認証・認可、TLS、タイムアウト、リトライ、ロードバランシング、監視などを深く学ぶ講座ではありません。LFS145の後に、gRPCの公式チュートリアルや利用言語別の資料へ進む必要があります。

受講に必要な知識と環境

前提知識

公式には、Pythonの型、変数、条件文などの基礎が前提とされています。完全なプログラミング未経験者向けではありませんが、高度なPython、ネットワーク、分散システムの経験までは明記されていません。

次の操作を自力でできると、演習を進めやすくなります。

  • Pythonスクリプトの実行
  • 変数と基本データ型の利用
  • 条件分岐の記述
  • コマンドライン操作
  • ファイルとディレクトリの操作
  • パッケージのインストール
  • エラーメッセージの確認

推奨環境

  • LinuxまたはmacOS
  • Python 3
  • Visual Studio Code
  • VS Code用のvscode-proto3プラグイン
  • protocコンパイラ
  • 最小4GB程度のメモリ
  • コード、コンパイラ、エディター用に約2GBのディスク容量

Windowsでは、protocの代わりにprotoc.exeを使えば動作する見込みと公式ページに記載されています。ただし、Linux/macOSと同等の正式サポート環境と断定するのは避けたほうがよく、PATH設定や実行ファイルの場所を追加で調整する場合があります。VS Codeの拡張機能を入れても、コンパイラ本体がインストールされるとは限りません。Visual Studio Code公式サイト

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

簡単な実習の流れ

LFS145の学習内容を具体的にイメージするには、次のようなワークフローを理解しておくとよいでしょう。

1. protoファイルを作成する

先ほどの内容をperson.protoとして保存します。

2. Pythonコードを生成する

protoc --python_out=. person.proto

成功すると、通常はperson_pb2.pyのようなPythonコードが生成されます。これは講座固有の実習手順を転載したものではなく、公式ドキュメントが説明する一般的なコード生成の流れを示した例です。Protobuf公式概要

3. 生成コードを利用する

import person_pb2

person = person_pb2.Person(
    name="Alice",
    id=1,
    email="[email protected]",
)

data = person.SerializeToString()

restored = person_pb2.Person()
restored.ParseFromString(data)

print(restored.name)

実行すると、復元されたメッセージの名前としてAliceが表示されます。SerializeToString()の戻り値はバイナリのバイト列であり、UTF-8テキストとして扱うものではありません。

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

スキーマ変更と互換性

Protobufの実務では、最初にメッセージを作れることより、後から安全に変更できることが重要です。

守るべき基本ルール

  • 既存フィールドの番号を再利用しない
  • 削除したフィールド番号や名前を予約する
  • 既存フィールドの型を安易に変更しない
  • 新しいフィールドは既存クライアントとの互換性を考えて追加する
  • 未知のフィールドを古いクライアントが受け取る場合を考慮する
  • JSON変換時の名前や値の扱いも確認する
  • proto3やEditionsにおけるpresenceと必須性の意味を確認する

たとえば、不要になったフィールドを削除する場合は、番号と名前を予約して再利用を防げます。

message Person {
  reserved 3;
  reserved "email";

  string name = 1;
  int32 id = 2;
}

逆に、以前のフィールド番号を別の意味で使うと、古いバイナリデータを新しいフィールドとして誤解釈する危険があります。フィールドの追加・削除が常に安全という意味ではなく、互換性ルールを守り、実際のクライアントやJSON変換を含めてテストする必要があります。公式プログラミングガイド

シリアライズ順序に依存しない

Protobufのバイナリ出力は、既知フィールド・未知フィールドのシリアライズ順序が保証されません。そのため、バイナリを固定文字列のように比較するテストは避け、復元した値や互換性を検証します。Encodingガイド

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

proto3とEditions

LFS145はProtocol Buffers version 3(proto3)を中心に構成されています。proto3は現在も多くのシステムで使われる重要な基礎ですが、2026年時点の公式Protobufドキュメントは、proto2・proto3に加えてEditionsも案内しています。

Editionsでは、従来のsyntax = "proto3";の代わりに、たとえばedition = "2024";のような形式を使います。公式Version Supportページでは、Edition 2024の最低対応protocを32.0、Edition 2023を27.0、proto3を3.0としています。

したがって、LFS145はproto3の基礎を体系的に学ぶ講座として評価し、Editionsを含む最新仕様の確認は公式資料で補完するのが現実的です。新規プロジェクトでEditionsを採用する場合は、使用するprotoc、言語ランタイム、プラグインが対応しているかを確認してください。Editions概要 Editions言語ガイド Version Support

2026年7月13日の公式発表にはEdition 2026のリリース計画も記載されていますが、計画は変更される可能性があるため、リリース済み仕様として扱わず、最新情報は公式発表で確認してください。公式発表

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

生成コードとバージョン管理の注意点

Protobufでは、.protoだけでなく、コンパイラ、生成プラグイン、言語ランタイムの組み合わせが重要です。公式Version Supportページでは、2026年時点でPython 7.35.xがアクティブサポート、6.33.xがメンテナンス対象として掲載されています。

  • protocだけ更新してPythonランタイムを古いままにしない
  • 生成に使ったprotocのバージョンを記録する
  • CIでコード生成を再現できるようにする
  • 依存関係の更新時はコンパイラ、ランタイム、プラグインをまとめて確認する
  • 更新後は生成コードを再生成する

バージョンを確認するには、次のコマンドが使えます。

protoc --version
python --version
python -m pip show protobuf

よくあるエラーと対処

protoc: command not found

コンパイラが未インストールか、実行ファイルのディレクトリがPATHに入っていません。protoc --versionで確認し、公式の導入手順に従ってコンパイラをインストールし、PATHを設定します。Windowsではprotoc.exeの場所を確認してください。Protobuf公式サイト

ModuleNotFoundError: No module named 'person_pb2'

  • 生成ファイルのあるディレクトリから実行しているか確認する
  • --python_outの出力先を確認する
  • Pythonのimportパスとprotoのpackage名を混同しない
  • 仮想環境にPython Protobufランタイムが入っているか確認する

ランタイムやdescriptor関連のエラー

生成コードとPythonランタイムの組み合わせが合っていない可能性があります。protoc、Python、protobufパッケージのバージョンを確認し、公式のサポート表に照らし合わせてください。

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

バイナリを文字列として扱ってしまう

SerializeToString()はバイト列を返します。テキストログや文字列前提の保存先に直接渡さず、必要ならBase64やProtoJSONを使い分けます。

LFS145のメリットと限界

メリット

  • 初心者が学ぶ順番を自分で設計しなくてよい
  • 概念だけでなくラボや課題で手を動かせる
  • Pythonを使ってコード生成からシリアライズまで確認できる
  • gRPCに進む前にメッセージ定義とスキーマを理解できる
  • 言語間相互運用性とデータ進化をまとめて学べる
  • 90日間のアクセスやデジタルバッジが用意されている

限界

  • gRPCのサーバー実装や本番運用を網羅する講座ではない
  • Python中心のため、Go、Java、C++、Rustの実装パターンは追加学習が必要
  • 大規模APIのガバナンス、Buf、互換性自動検証、チーム運用は別途必要
  • 認証、認可、TLS、サービスディスカバリー、リトライ、監視は対象外または補足が必要
  • 最新のEditions仕様を完全に学ぶ講座とは確認できない

公式ドキュメントや独学との比較

選択肢 向いている人 強み
LFS145 初学者、学習順序や演習が欲しい人 体系性、ラボ、課題、アクセス期間、バッジ
Protobuf公式ドキュメント 経験者、最新仕様や細部を調べたい人 無料、仕様・Encoding・Editions・バージョン情報が最新
独学 必要な部分だけ学びたい人 費用を抑え、言語や目的に合わせて順番を変更できる

独学なら、公式概要を読み、protocを導入し、Pythonでチュートリアルを試します。その後、フィールド番号と互換性、ProtoJSON、wire formatを確認し、gRPC公式資料へ進むと理解しやすいでしょう。詳細な資料一覧は公式プログラミングガイドと言語別リファレンスで確認できます。

どんな人におすすめか

LFS145は、次のような人に向いています。

  • gRPCやマイクロサービス開発を始めたい人
  • Pythonの基礎があり、Protobufを順序立てて学びたい人
  • API設計やデータシリアライズの基礎を身につけたい人
  • コード生成やハンズオン課題を使って学びたい人
  • Protobufの導入前に、互換性やスキーマ進化の考え方を知りたい人

反対に、すでにProtobufを業務で使っており、Editionsやwire formatの特定仕様だけを確認したい人は、公式ドキュメントを直接読むほうが効率的です。gRPCの本番実装が目的なら、LFS145を前提学習として利用し、その後にgRPCのサービス実装や運用を別途学んでください。

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.