100記事記念:個人技術検証で作ってきたものポートフォリオ
はじめに
Qiita向けに技術記事を書き続けて、今回で100記事目になりました。
別記事では、100記事分の技術検証を通して、どのように関心が広がってきたのかを振り返りました。
この記事では少し視点を変えて、100記事記念として、これまでに 実際に作ってきたもの を成果物ポートフォリオとして並べてみます。
記事数そのものは区切りにすぎません。
ただ、100本分を見直してみると、手順やメモだけではなく、次のようなものが手元に残っていました。
- Dockerで再現できる開発環境
- 複数フレームワークで作ったWebアプリ / API
- Terraformで作るクラウド・仮想基盤
- Hadoop / Kafka / Hive / Icebergを使ったログ分析基盤
- Trino / Grafana / Elasticsearch / Kibanaによる検索・可視化環境
- LLMや画像生成AIと連携するアプリ
- Qiita記事やGitHubリポジトリを管理・検索する仕組み
今回は、これらを「100記事記念の展示会」のような感覚で整理します。
100記事分の成果物一覧
まずは、作ってきたものを大きな分類で並べます。
| 分類 | 作ってきたもの | 主な技術 | 位置づけ |
|---|---|---|---|
| Docker開発環境 | Laravel / Rails / Phoenix / Angular / Vue / React / WordPress / Java Servlet / Terraformなどの実行環境 | Docker, docker-compose | 検証を始めるための入口 |
| Webアプリ / API | JSONパーサーAPI、SPA ToDo、つぶやきサイト、ChatGPT連携アプリ、画像生成Webアプリ | Laravel, Rails, Phoenix, Python, JavaScript | フレームワークやAPI連携の比較対象 |
| クラウド / IaC | AWS / Azure / GCP / OCI / Proxmox VE向けのインフラ構築 | Terraform, AWS CDK, ECS, GKE | アプリや検証環境を再現する仕組み |
| Kubernetes / CI/CD | Raspberry Pi Kubernetes、GKE、Laravel on Kubernetes、自宅CI/CD | Kubernetes, GitLab, GKE | コンテナ運用とデプロイ検証 |
| 自宅ビッグデータ基盤 | Hadoopクラスタ、Hive、Zeppelin、Knox / LDAP、操作ホスト | Hadoop, HDFS, Hive, Zeppelin, Knox | ログ分析基盤の土台 |
| ログ収集・分析基盤 | syslog / authlog収集、Kafka投入、HDFS保存、Iceberg化 | rsyslog, Fluentd, Kafka, HDFS, Spark, Iceberg | 100記事の中で大きく育った中心成果物 |
| SQL分析 / 可視化 | Trino、Grafana、Zeppelinによるログ分析 | Trino, Grafana, Zeppelin | 蓄積したログを見る仕組み |
| リアルタイム処理 | KafkaからFlinkでログを処理し、Icebergへ反映する構成 | Flink, Kafka, Iceberg | 分単位の集計・可視化 |
| 検索基盤 | Elasticsearch / Kibana、Elixir / Flask製検索アプリ | Elasticsearch, Kibana, Phoenix, Flask | ログや記事を検索する仕組み |
| クラウド分析コピー | 自宅HDFS上のIcebergをS3へ複製し、Athenaから分析する構成 | S3, Glue, Athena, QuickSight | 自宅基盤とクラウド分析の接続 |
| AI / LLM連携 | ChatGPT応答アプリ、自然文ログ分析、AWS情報検索、画像生成 | OpenAI API, LLM, Stable Diffusion | 作った基盤を使いやすくする入口 |
| 運用補助 | バックアップ、リストア、容量監視、ローカルAPT/YUMリポジトリ | distcp, shell, pg_rman, pg_dump | 作った環境を使い続けるための仕組み |
| 記事 / リポジトリ管理 | Qiita記事のGitHub管理、記事インデックス、記事検索アプリ | GitHub, Qiita, Elasticsearch | 技術検証そのものを管理する仕組み |
こうして見ると、100記事分の検証は単発の作業ログではなく、いくつかの成果物として残っています。
100記事記念アワード
ここからは、100記事記念らしく、作ってきたものを勝手に表彰してみます。
| 賞 | 成果物 | 理由 |
|---|---|---|
| 一番育ったで賞 | ログ収集・分析基盤 | Hadoop / Kafka / Hive / Iceberg / Trino / Grafana / Flink / Elasticsearch / LLMまで広がった |
| 土台になったで賞 | Docker開発環境 | 新しい言語やフレームワークを試す入口になった |
| 再現性が上がったで賞 | Terraform / Proxmox VE VM構築 | クラウドや自宅ラボの環境を作り直しやすくなった |
| 後から効いてきたで賞 | Qiita記事検索アプリ | 記事数が増えたことで、記事そのものを検索対象にする意味が出てきた |
| 実用に近づいたで賞 | S3 / Glue / Athena分析コピー | 自宅基盤のデータをクラウド分析サービスから使えるようになった |
| 地味だけど大事で賞 | バックアップ / リストア / 容量監視 | 検証環境を一回限りではなく、継続して使うための支えになった |
| 次につながりそうで賞 | LLM自然文ログ分析 | 既存のログ基盤を自然文で扱う入口になった |
一番大きいのは、やはりログ収集・分析基盤です。
最初はログを集めるところから始まりましたが、HDFSに保存し、HiveやSparkで整形し、Icebergでテーブル化し、Trino / Grafanaで見える化し、Flinkでリアルタイム処理し、Elasticsearch / Kibanaで検索し、さらにLLM連携まで広がりました。
100記事の中で、単体の検証が一つの大きな自宅ラボ基盤に育っていった代表例だと思います。
代表成果物カタログ
ここでは、特に印象に残っている成果物を、関連する記事と一緒に整理します。
Dockerで再現できる開発環境
| 作ったもの | 関連記事 |
|---|---|
| Elixir / Phoenix開発環境 | Elixir/Phoenixをdocker環境で立ち上げてみる。 |
| Ruby on Rails開発環境 | ruby on railsをdocker環境で立ち上げてみる。 |
| Laravel開発環境 | php/laravelをdocker環境で立ち上げてみる。 |
| Angular開発環境 | Angular開発環境をdocker環境で立ち上げてみる。 |
| Vue / React開発環境 | Vue/React開発環境をdocker環境で立ち上げてみる。 |
| WordPress開発環境 | wordpressをdocker環境で立ち上げてみる。 |
| Java Servlet開発環境 | Javaサーブレット開発環境をdocker環境で立ち上げてみる。 |
| Terraform実行環境 | Terraformをdocker環境で立ち上げてみる。 |
Docker環境は、後続の検証を始めるための共通部品になりました。
単体では小さくても、100記事分の検証を支える入口として見ると、かなり大きな成果物です。
複数方式で作ったWebアプリ / API
| 作ったもの | 主な技術 | 関連記事 |
|---|---|---|
| JSONパーサーAPI | Laravel | PHP/LaravelでJSONパーサーAPIを作ってみる。 |
| JSONパーサーAPI | Rails | Ruby on RailsでJSONパーサーAPIを作ってみる。 |
| JSONパーサーAPI | Phoenix | Elixir/PhoenixでJSONパーサーAPIを作ってみる。 |
| JSONパーサーAPI | AWS Lambda + API Gateway | AWS Lambda+API GatewayでJSONパーサーAPIを作ってみる。 |
| JSONパーサーAPI | Azure Functions | Azure FunctionでJSONパーサーAPIを作ってみる。 |
| SPA ToDoアプリ | JavaScript | SPA対応させたToDoサイトを作成してみた。 |
| つぶやきサイト | Laravel | Laravel13でつぶやきサイトを作ってみる。 |
同じJSONパーサーAPIを複数の技術で作ったことで、フレームワークごとの違いや、サーバレスとの責務の違いを比較しやすくなりました。
Terraformとクラウド・仮想基盤
| 作ったもの | 主な技術 | 関連記事 |
|---|---|---|
| AWSサイトインフラ | Terraform, AWS | Terraformにて、実践的なAWSサイトインフラを作成する。 |
| Azureサイトインフラ | Terraform, Azure | Terraformにて、実践的なAzureサイトインフラを作成する。 |
| OCIサイトインフラ | Terraform, OCI | Terraformにて、実践的なOCIサイトインフラを作成する。 |
| GKE環境 | Terraform, GCP | terraformでGKEを立ち上げてみた。 |
| Laravel on ECS | Terraform, ECS, Laravel | Terraformを使用してECS環境構築し、Laravelサイトを立ち上げてみた。 |
| Proxmox VE VM構築 | Terraform, Proxmox VE, cloud-init | TerraformでProxmox VEにCloud-init対応VMを複数台作成する |
| AWS CDKリソース作成 | AWS CDK | AWS CDKでAWSリソースを作成してみる。 |
クラウドだけでなくProxmox VEも対象にしたことで、自宅ラボとクラウドを同じIaCの考え方で扱えるようになりました。
自宅ビッグデータ基盤
| 作ったもの | 主な技術 | 関連記事 |
|---|---|---|
| シングルノードHadoop | Hadoop, HDFS | シングルノードhadoopを構築してみた。 |
| シングルノードHive | Hive | シングルノードhiveを構築してみた。 |
| Hadoop / Hive / Zeppelin自動構築 | Ansible | ansibleでHadoop/hive/zeppelinシングルノードを構築する |
| Hadoopクラスタ | Hadoop, HDFS | hadoopをクラスタ化してみた。 |
| Zeppelin導入 | Zeppelin | HadoopクラスタにZeppelinを導入してみた。 |
| Knox / LDAP導入 | Knox, LDAP | Hadoopクラスタにknox/ldapを導入してみた。 |
| HDFS容量監視 | HDFS, shell | HDFS容量監視を実施してみた。 |
| ローカルAPT/YUMリポジトリ | Ubuntu, AlmaLinux | Ubuntu 24.04でローカルAPTリポジトリサーバを構築し、Hadoopクラスタの再現性を高める |
Hadoop / Hive / Zeppelinの検証は、後のログ収集・分析基盤の受け皿になりました。
ここがあったことで、ログを保存し、整形し、分析する流れを自宅ラボ内で試せるようになりました。
ログ収集・分析基盤
| 作ったもの | 主な技術 | 関連記事 |
|---|---|---|
| syslog / authlog収集基盤 | rsyslog, Kafka, HDFS, Hive | 自宅ラボで構築した syslog/authlog 収集基盤(Kafka + HDFS + Hive)の全体像と運用設計 |
| Kafkaクラスタ | Kafka | Kafkaをクラスタ化してsyslogを収集してみた。 |
| Spark / Iceberg基盤 | Spark, Iceberg | ログ収集・解析基盤にSpark/Icebergを構築してみた |
| Trino / Grafana / Zeppelin可視化 | Trino, Grafana, Zeppelin | Grafana&Trino&Zeppelinを使用してログ解析基盤から情報を可視化する。 |
| OSSレイクハウス | Kafka, HDFS, Iceberg | Kafka + HDFS + IcebergでOSS版レイクハウスを構築してみた |
| Flinkリアルタイム集計 | Flink, Kafka, Iceberg | Apache Flink + Iceberg で syslog/authlog の1分集計テーブルを作り、Trino/Grafana を高速化する |
| ログ分析基盤まとめ | Kafka, Iceberg, Flink | Kafka・Iceberg・Flinkで作るsyslog/authlog分析基盤まとめ |
| 小規模SOC活用例 | ログ分析, SOC | 小規模SOCを見据えたログ解析基盤の活用例 |
この基盤は、100記事分の検証の中でも特に「作ったもの」として形になったものです。
構成を短くまとめると、次のようになります。
syslog / authlog
↓
rsyslog / Fluentd
↓
Kafka
↓
HDFS / Hive / Spark
↓
Iceberg
↓
Trino / Grafana / Zeppelin
さらに、検索やリアルタイム処理も追加しました。
Kafka
↓
Flink
↓
Iceberg
↓
Trino / Grafana
Iceberg
↓
Elasticsearch
↓
Kibana / 検索Webアプリ / LLM連携
最初から完成形を決めて作ったというより、必要になった部品を足していったら、結果的に大きな基盤になっていました。
Elasticsearchと検索アプリ
| 作ったもの | 主な技術 | 関連記事 |
|---|---|---|
| Elasticsearch / Kibana設計 | Elasticsearch, Kibana | ログ分析基盤に Elasticsearch / Kibana を追加してみる(設計編) |
| Elasticsearch / Kibana構築 | Elasticsearch, Kibana | ログ分析基盤に Elasticsearch / Kibana を追加してみる(構築編) |
| Elasticsearch / Kibana実践 | Elasticsearch, Kibana | ログ分析基盤に Elasticsearch / Kibana を追加してみる(実践編) |
| Elasticsearch / Kibana運用 | Elasticsearch, Kibana | ログ分析基盤に Elasticsearch / Kibana を追加してみる(運用編) |
| Elixir製Elasticsearch検索アプリ | Elixir, Phoenix, Elasticsearch | 【実践編】GitHubから取得してすぐ使える!Elixir製ログ検索サイトでElasticsearchを検索する |
| Elixir製Iceberg検索アプリ | Elixir, Phoenix, Trino, Iceberg | 【実践編】GitHubから取得してすぐ使える!Elixir製ログ検索サイトでIcebergを検索する |
| Qiita記事検索アプリ | Elasticsearch, Qiita | Qiita記事をElasticsearchへ取り込み、検索Webアプリで参照できるようにする |
ログだけでなく、自分の記事も検索対象にしたところが印象的です。
100記事近くになると、記事そのものが一つのデータになります。
AWS S3 / Athenaへ広げた分析コピー
| 作ったもの | 主な技術 | 関連記事 |
|---|---|---|
| S3 / Athena連携設計 | HDFS, Iceberg, S3, Athena | 自宅HDFS上のApache IcebergをAWS S3へ複製してAthenaで分析する構成を考える【設計編】 |
| S3 / Athena連携構築 | HDFS, Iceberg, S3, Glue, Athena | 自宅HDFS上のApache IcebergをAmazon S3へ複製しAthenaから分析してみる【構築編】 |
| Athena向け運用 | Iceberg, Athena | AWS S3上のApache IcebergをAthena向けに運用する【運用編】 |
| Athena経由の可視化 | Athena, QuickSight | AWS S3上のApache IcebergをAthena経由で可視化する【発展編】 |
| S3から自宅HDFSへ復旧 | S3, HDFS, Iceberg | AWS S3上のApache Icebergコピーから自宅HDFS Icebergへリストアする【復旧編】 |
| rawログS3バックアップ | HDFS, S3, distcp | Hadoop distcpでHDFSのrawログをAmazon S3へバックアップしてみる |
自宅HDFS / Icebergを正本として残しつつ、AWS S3 / Glue / Athena側に分析用コピーを作りました。
自宅ラボだけで閉じていた基盤を、クラウド分析サービスへ接続できた点が大きいです。
AI / LLM連携で作ったもの
| 作ったもの | 主な技術 | 関連記事 |
|---|---|---|
| ChatGPT応答Pythonプログラム | Python, OpenAI API | 1時間という爆速でchatgpt応答pythonプログラム作ってみた。 |
| ChatGPT Webアプリ | Python, Web | ChatGPTとやり取りするWebアプリ作ってみた。 |
| Laravel + ChatGPT連携 | Laravel, OpenAI API | laravel10 & chatgpt連携Webアプリ作ってみた。 |
| 画像生成API | Stable Diffusion | StableDiffusion APIから画像生成してみる。 |
| 画像生成Webアプリ | Python, Web | 画像生成AIから画像作成するWebサイト作ってみた。 |
| LLMログ分析構想 | LLM, ログ分析 | LLM連携による自然文ログ分析の構想 |
| 自然文ログ分析環境 | LLM, Elasticsearch, ログ分析 | LLM連携による自然文ログ分析環境を構築してみた |
| AWS情報検索アプリ | LLM, AWS | LLM介してAWSからサービス最新情報を引き出すアプリ作ってみた。 |
LLM系は、単体で試すところから、既存のログ基盤や検索基盤と組み合わせる方向へ進みました。
作ってきた基盤を人間が扱いやすくするインターフェースとして、今後も広げられそうです。
記事とリポジトリを管理する仕組み
| 作ったもの | 主な技術 | 関連記事 |
|---|---|---|
| Qiita記事のGitHub管理 | GitHub, Qiita CLI | qiita記事をGithubでコンテンツ管理してみた。 |
| 記事インデックス | Qiita | これまで提示した記事のインデックス |
| 公開リポジトリ棚卸し | GitHub | naritomo08 の公開GitHubリポジトリを棚卸ししてみた |
| 未紹介リポジトリ整理 | GitHub | 個別記事から未紹介だった公開GitHubリポジトリを整理してみた |
| Qiita記事Elasticsearch投入 | Elasticsearch, Qiita | Qiita記事をElasticsearchへ取り込み、検索Webアプリで参照できるようにする |
記事を書くだけでなく、記事をGitHubで管理し、インデックス化し、検索できるようにしたことも一つの成果物です。
100記事という数になってくると、記事そのものを検索・再利用する仕組みの価値が出てきます。
作ったもの同士のつながり
100記事分の成果物は、個別に見るとバラバラですが、線でつなぐといくつかの流れになります。
Docker開発環境
↓
Webアプリ / API検証
↓
クラウド / Kubernetes / CI/CD検証
Hadoop / HDFS / Hive
↓
Kafkaによるログ収集
↓
Spark / Icebergによる分析基盤
↓
Trino / Grafana / Zeppelinによる可視化
Kafka
↓
Flink
↓
Iceberg
↓
リアルタイム集計 / 可視化
Iceberg
↓
Elasticsearch
↓
Kibana / 検索Webアプリ / LLM連携
Qiita記事
↓
GitHub管理
↓
Elasticsearch投入
↓
記事検索アプリ
このつながりを見ると、100記事分の技術検証は、次のような小さなポートフォリオになっていました。
- アプリを作る
- アプリを動かす環境を作る
- データを集める
- データを保存する
- データを検索・分析・可視化する
- AIで扱いやすくする
- 記事とリポジトリとして再利用できる形に残す
今見ると資産になっているもの
100記事分の技術検証で、特に資産になっていると感じるものは以下です。
| 資産 | 理由 |
|---|---|
| Docker Composeの検証環境 | 新しい言語やフレームワークを試すときの入口になる |
| Terraformコード | クラウドや仮想基盤を再現しやすい |
| Hadoop / Kafka / Iceberg基盤 | ログ分析やデータ処理の検証環境として使える |
| Elasticsearch / Trino検索アプリ | データ基盤を実際に利用する画面になる |
| S3 / Athena分析コピー | 自宅基盤とクラウド分析を接続できる |
| バックアップ / リストア手順 | 検証環境を継続運用しやすくなる |
| Qiita記事のGitHub管理 | 記事そのものをナレッジとして扱える |
| 記事検索アプリ | 増えた記事を後から探しやすくなる |
作った当時は単発の検証でも、後から見ると次の検証の部品になります。
この「後から使える形で残る」ことが、記事を書きながら作る一番のメリットだと感じています。
次の100記事で作りたいもの
100記事目時点で、次に作りたいものも整理しておきます。
| 作りたいもの | 内容 |
|---|---|
| ログ分析ポータル | Grafana、Kibana、検索アプリ、LLM分析をまとめて使える入口 |
| 小規模SOC風ダッシュボード | authlog、syslog、アラート、ホスト状態を横断して見る画面 |
| LLMによるログ原因分析 | 自然文で聞くと、関連ログや傾向を返す仕組み |
| データ基盤のIaC化 | Hadoop / Kafka / Iceberg周辺をより再現しやすくする |
| 記事ナレッジベース強化 | Qiita記事、GitHubリポジトリ、構築手順を横断検索する仕組み |
| 検証環境の運用テンプレート化 | バックアップ、監視、復旧、更新手順を共通化する |
次の方向性としては、個別に作ったものをさらに統合していきたいです。
特に、ログ分析基盤、検索アプリ、LLM連携、記事検索は相性が良いため、まとめて一つのポータルにしていくと面白そうです。
まとめ
100記事分の技術検証を通して、手元には次のようなものが残っていました。
- Dockerによる再現性のある開発環境
- 複数フレームワークで作ったWebアプリ / API
- Terraformによるクラウド / 仮想基盤
- Hadoop / Kafka / Hive / Icebergによる自宅ログ分析基盤
- Trino / Grafana / ZeppelinによるSQL分析・可視化
- Flinkによるリアルタイム処理
- Elasticsearch / Kibana / Webアプリによる検索基盤
- S3 / Glue / Athenaによるクラウド分析コピー
- LLMや画像生成AIと連携するアプリ
- バックアップ、リストア、監視などの運用補助
- Qiita記事とGitHubリポジトリを管理・検索する仕組み
100記事目のこの記事では、記事の流れを振り返るというより、作ってきたものを成果物として並べました。
個人技術検証でも、継続して記事に残していくことで、単発の検証が少しずつつながり、再利用できる技術資産になっていくことが分かります。
次の100記事では、作ったものをさらに統合し、自宅ラボやログ分析基盤をより実用的な形に育てていきたいと思います。