こんにちは、プラットフォームエンジニアの清水です。
と、いきなりプラットフォームエンジニアを名乗ってみましたが、実はプラットフォームエンジニアリングやプラットフォームエンジニアという言葉について、具体的にはよくわかっていませんでした。
そこで今回は、最近耳にする機会が増えた“プラットフォームエンジニアリング”や“プラットフォームエンジニア”とは、どんなものであるか、どうすれば名乗れるようになるのか、私の理解と合わせて説明させていただこうと思います。
プラットフォームエンジニアリングを提供するプラットフォームエンジニア
まず、プラットフォームエンジニアリングとは、開発者が効率的に作業できるように開発環境やツールを提供するための手法やプロセスをさします。そしてプラットフォームエンジニアは、このような手法やプロセスを提供するエンジニアを言います。
また、この「手法やプロセスを提供」の主眼としているのは、開発者の満足を最優先とすべきという考え方であり、プラットフォームエンジニアリングの特長の一つとなります。
「手法やプロセスを提供」について、もう少し具体的に説明すると、以下のようなものを提供することをさします。
・開発環境の自動化
開発者が簡単に環境を構築できるように、セルフサービスのツールや自動化されたプロセスを提供
・内部開発者プラットフォームの構築
開発者がインフラの詳細を気にせずアプリケーションの開発に集中できるように、統合されたツールチェーンやワークフローを提供
・効率的なコラボレーションの促進
開発プロセス全体の効率を向上させるために、異なるチームや部門間での協力を円滑にするプラットフォームを提供
実際にプラットフォームエンジニアリングに取り組んだ企業の例として、Netflix, Inc.(以下、Netflix)やSpotify Technology S.A.(以下、Spotify)があります。Netflixでは、社内開発者向けのプラットフォーム構築によって、新機能を迅速にデプロイ可能とし、SpotifyではBackstageというドキュメントポータルOSSを使用して、開発者が必要な情報とツールへ簡単にアクセスできるようにしました。そしてこれらの取り組みの結果として、開発者の生産性を向上させることに成功しました。
プラットフォームエンジニアを名乗るには
では、このようなプラットフォームエンジニアリングを提供できるプラットフォームエンジニアを名乗るために、どのようなスキルが求められるのか、まずは試しに生成AI(ChatGPT)に質問してみました。
プラットフォームエンジニアには、以下のようなスキルが求められると言えそうです。
1.プログラミングスキル:
Python、Go、Javaなどのプログラミング言語に精通していることが重要です。
2.クラウド技術の知識:
AWS、Azure、Google Cloudなどのクラウドプラットフォームの利用経験が求められます。
3.インフラストラクチャーの知識:
ネットワーク、サーバー、データベースの設計・管理に関する深い理解が必要です。
4.自動化ツールの使用経験:
Ansible、Kubernetesなどのインフラ自動化ツールの使用経験があると有利です。
5.問題解決能力:
技術的な課題を迅速に解決するための分析力とクリティカルシンキングが求められます。
6.コミュニケーションスキル:
開発チームや他の部門と効果的に連携するための優れたコミュニケーション能力が必要です。
たしかに、これらのスキルを持つことで、プラットフォームエンジニアは開発者が効率的に作業を行える環境を提供し、全体の生産性を向上させることができると思います。
想定はしていましたが、かなり幅広い分野の技術や知識が求められるようです。例えば、「開発メンバー向けの試験環境構築」と一言で言っても、それを行うには単純にネットワークに精通していることが必要なうえに、汎用的な手順で行える技術力や、プロジェクト内の関係者から情報を集められる能力も求められます。そのため、幅広い分野の技術や知識が求められることは十分にうなずけます。
プラットフォームエンジニアを名乗るのはかなり困難なのではないか?!
ここまでプラットフォームエンジニアリングとして提供するもの、そしてそれを提供するプラットフォームエンジニアに求められるスキルを書いてきましたが、これはもう会社の中に数人いるかいないかというレベルの、ほんの一握りのスーパーエンジニアという印象です。
ただ、ここまで書いていて少し思ったところがあります。
求められるスキルを有して環境構築を提供したことはなくても、部分的なところであれば自分も行ってきた経験があると感じます。
例えば、
「開発環境の自動化」まではいかなくても、試験環境への接続手順やログ収集スクリプト手順を作成しメンバーに展開したことはあります。
「開発者プラットフォームの構築」まではいかなくても、 Java言語のプロジェクトでJUnitを使った単体試験や実施方針を提案して顧客である開発者と相談して進めた結果、満足していただけた経験です。
「効率的なコラボレーションの促進」とまではいかなくても、Teamsのチャネルを作成して関係者ごとのチャネル分割やルールの策定をしたことはあります。
そう考えてみると、開発作業メンバーがスムーズに作業を行えるようにするためのちょっとした工夫が、まさにプラットフォームエンジニアリングだと思えてきました。
より作業しやすい環境を提供するために、幅広い知識と技術があるにこしたことはありませんが、小さなものでも開発者のストレスを減らす工夫の経験とスキルがあるのであれば、まずは名乗ってみるところからスタートしてみようと私は考えました。
まとめ
プラットフォームエンジニアリングを提供するプラットフォームエンジニアとはどんなもので、どうすれば名乗れるかについて、私の考えを書かせていただきました。 確かにそうかもしれないな、と思っていただけたら、ぜひ皆さんもプラットフォームエンジニアを名乗ってみてください。
以上、プラットフォームエンジニアの清水でした!
2025年2月
株式会社 日立情報通信エンジニアリング
エンジニアリング事業部 第1本部 第3部 清水 直
※編集・執筆当時の記事のため、現在の情報と異なる場合があります。編集・執筆の時期については、記事末尾をご覧ください。