ApacheKafka

Apache Kafka 入門:ローカルクラスター構築とサンプルコード実装ガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Apache Kafka の概要と主なユースケース

Apache Kafka は、分散型のストリーミングプラットフォームとして設計されたミドルウェアです。データをリアルタイムで永続化しつつ、複数のコンシューマーへ同時配信できる点が特徴です。このセクションでは、Kafka が提供する高スループット・高可用性の仕組みと、代表的な利用シーンを簡潔に解説します。

  • リアルタイム分析
    IoT デバイスやクリックストリームなど大量かつ高速に生成されるデータを、Kafka に集約して即座に集計・可視化できます。

  • イベント駆動アーキテクチャ (EDA)
    マイクロサービス間の非同期通信基盤として利用し、システム全体の結合度を下げながらスケーラビリティを確保します。

  • データレプリケーション
    データベースの変更ログ (CDC) を Kafka に流すことで、異なるストレージやクラウド環境へリアルタイムに同期できます。

Kafka は「高速・高可用」だけでなく、スキーマ管理やストリーム処理フレームワーク(Kafka Streams、ksqlDB)との連携も標準でサポートしているため、幅広い業務要件に適合します。


2026 年執筆時点の最新安定版 Kafka の取得とインストール手順

この章では、公式サイトからのダウンロード方法、Docker イメージを用いたローカルクラスター構築、そして OS 別パッケージマネージャーでのインストール手順を紹介します。なお、情報は 2026‑03‑15 時点のもの(Apache Kafka Downloads)に基づいています。バージョン番号やイメージタグは定期的に更新されるため、常に公式ページを確認してください。

1. 公式サイトからのダウンロード

Kafka の配布パッケージは Apache のミラーサーバーから取得できますが、JDK は同梱されていません。実行には別途 JDK 17 以上をインストールしておく必要があります(例: sudo apt install openjdk-17-jdk)。

ポイント
- ダウンロード URL は公式ページの「Binary downloads」欄に記載されています。
- kafka_2.13 の「2.13」は Scala バージョンで、Java クライアントはどちらでも利用可能です。

2. Docker を使ったクイックスタート(KRaft モード対応)

Kafka はバージョン 3.4 以降、デフォルトで KRaft (Kafka Raft) モード が推奨されており、Zookeeper が不要です。以下は Apache が提供する公式 Docker イメージ apache/kafka を用いた最小構成例です(執筆時点のタグは 3.5.0‑kafka‑2.13‑latest)。

  • KRaft の利点
  • Zookeeper を別プロセスで管理する必要がなく、構成がシンプルになる。
  • クラスタの拡張やアップグレード時にブローカーだけを追加すればよい。

注意:Confluent が提供する confluentinc/cp-kafka は Apache 本体とは別パッケージで、商用サポートや独自機能が含まれます。純粋にオープンソースの Kafka を試したい場合は apache/kafka を選択してください。

3. Homebrew / Linux パッケージマネージャーでのインストール

OS 推奨コマンド例 補足
macOS (Homebrew) brew install kafka@3.5 インストール後は brew services start kafka@3.5 で自動起動可能
Debian/Ubuntu sudo apt-get update && sudo apt-get install -y kafkacat(Kafka 本体は公式サイトから) Apache が提供する APT リポジトリは無いため、バイナリ展開が一般的
RHEL/CentOS sudo yum install -y java-17-openjdk && wget … JDK のインストールを忘れないこと

各パッケージマネージャーは依存関係(JDK 等)を自動で解決しますが、KRaft モードへの切り替え設定は手動で行う必要がありますconfig/kraft/server.properties に以下の項目を追加してください。


ローカル環境での Kafka クラスター起動と基本操作

本節では、KRaft モードで起動したブローカーの稼働確認からトピック作成、簡単なプロデューサー/コンシューマーのテストまでを順に示します。すべて公式スクリプトまたは CLI ツールを使用しています。

1. ブローカー起動確認

KRaft のコントローラーポート(9093)とブローカーポート(9092)の両方がリッスン状態であることを確認します。kafka-broker-api-versions.sh はブローカーの API バージョン情報を返すので、正常稼働の指標になります。

出力例(省略形):

この JSON が返ってきたら、クライアントからの接続は問題ありません。

2. トピック作成(KRaft 推奨設定)

KRaft 環境では --replication-factor はブローカー数に依存します。単一ノードでテストする場合は 1 に設定してください。

作成後は --describe オプションで設定を確認できます。

3. 簡易プロデューサーとコンシューマーの実行

以下は Bash スクリプトだけで動く最小構成です。JSON メッセージを送信し、同じトピックから受信します。

この手順で、Kafka が正しくデータを永続化し、コンシューマーが取得できることが確認できます。


プロデューサー・コンシューマーの実装サンプル(Java & Python)

実務では言語固有のクライアントライブラリを利用します。ここでは Java 17 + Spring BootPython 3.12 の 2 パターンを示し、シリアライズ方式は共通で StringSerializer(キー)と JsonSerializer(バリュー)を使用しています。

Java 17 + Spring Boot

ポイント
- application.yml に設定を集約するだけで、プロデューサー・コンシューマーが自動的にシリアライズ/デシリアライズされます。
- Spring の DI コンテナが KafkaTemplate@KafkaListener を管理するため、コード量が大幅に削減できます。

Python 3.12 + kafka‑python

ポイント
- kafka-python は純粋 Python 実装なので、追加のネイティブ依存は不要です。
- キーとバリューのシリアライズ関数をラムダで渡すだけで、JSON データの送受信が完結します。


データ連携・スキーマ管理入門(Kafka Connect & Schema Registry)

外部システムとのデータ流通では Kafka ConnectSchema Registry の併用が推奨されます。以下は JDBC Source コネクタと Avro スキーマを利用した最小構成です。

1. Kafka Connect(KRaft 環境向け)

connect-standalone.properties にブローカー情報とシリアライザ設定を書き、jdbc-source.properties で PostgreSQL からトピックへデータを流します。KRaft クラスタでも bootstrap.servers のみで接続可能です。

2. Schema Registry と Avro スキーマ

公式 Docker イメージ confluentinc/cp-schema-registry を利用してローカルで起動します(Confluent のパッケージは商用サポート版ですが、OSS バイナリとしても利用可能です)。

Avro スキーマ例 (order.avsc)

登録コマンド(curl):

プロデューサー側で KafkaAvroSerializer、コンシューマー側で KafkaAvroDeserializer を使用すれば、スキーマのバージョニングと互換性チェックが自動的に適用されます。


運用・監視とよくあるエラーへの対処法

本番環境では可観測性を確保しつつ、障害発生時の原因切り分けが重要です。ここでは CLI ベースの基本モニタリングに加えて、Prometheus + Grafana を用いたメトリクス収集、代表的なエラーとその対処手順をまとめます。

1. 基本的な CLI モニタリング

コマンド 主な目的
kafka-topics.sh --describe パーティション・レプリカ・ISR の状態確認
kafka-consumer-groups.sh --list コンシューマーグループ一覧取得
jcmd <pid> VM.native_memory summary JVM ヒープとネイティブメモリの使用状況把握

例: ISR がすべて揃っているか確認する

出力に Isr: 1(単一ブローカーの場合)が表示されれば正常です。

2. Prometheus + Grafana によるメトリクス可視化

  1. JMX Exporter を各ブローカーの起動オプションに追加
    yaml
    KAFKA_JVM_PERFORMANCE_OPTS="-javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent.jar=5555:/opt/jmx_exporter/kafka.yml"
  2. Prometheusscrape_configs にブローカーの JMX Exporter エンドポイントを登録
    yaml
  3. job_name: 'kafka'
    static_configs:

    • targets: ['localhost:5555']
  4. Grafana で公式ダッシュボード「Kafka Overview」 (ID 758) をインポートすると、スループット・レイテンシ・ディスク使用率が一目で把握できます。

3. 代表的なエラーと対処手順

エラー 主な原因 推奨対策
ブローカー起動失敗 ポート競合、JVM ヒープ不足、ディスク空きなし netstat -tlnp でポート確認、KAFKA_HEAP_OPTS="-Xmx2G -Xms2G" を調整、ディスク容量を確保
コンシューマーグループのリバランスが長時間 パーティション数 > コンシューマ数、古いオフセット保持 コンシューマ数を増やすか partition.assignment.strategy=range を検討、session.timeout.msmax.poll.interval.ms の値を適切に設定
トピック作成時のレプリカ不足 クラスタサイズが 1 のとき replication-factor > 1 指定 開発環境では --replication-factor 1 に変更、またはブローカーを増設してクオーラム確保

ポイント:エラーログは必ず /logs/server.log(Docker コンテナの場合は docker logs <container>)で確認し、スタックトレースに記載されたキーワードで検索すると原因特定が早まります。


まとめ

本稿では、2026 年執筆時点の最新安定版 Apache Kafka の取得方法から、KRaft モードを前提としたローカルクラスター構築、基本的な操作・サンプルコード、さらにデータ連携に必要な Connect と Schema Registry の設定例まで網羅しました。

  • 公式配布は JDK を同梱しないため、事前に JDK 17 以上を用意してください。
  • KRaft が標準であり、Zookeeper は必須ではなくなっています(必要ならオプションで有効化可)。
  • Docker 利用時は Apache の公式イメージ apache/kafkaConfluent 製品イメージ を目的別に使い分けましょう。
  • 運用フェーズでは Prometheus + Grafana による可観測性と、CLI での迅速なトラブルシュートが鍵となります。

これらの手順をローカル環境で実践すれば、Kafka の基礎から本番運用までの流れを体感できるはずです。次は公式ドキュメントや各種ハンズオン教材を活用し、実際の業務シナリオに合わせた PoC(概念実証)へとステップアップしてください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-ApacheKafka