自転車とプログラミング

元自転車メーカーのマーケター、今は自社開発企業に勤めるエンジニアが主にプログラミングの話を書きます。

PMPに受かった話

PMP試験に合格しました

こんにちは。

しばらくぶりのブログ更新です。

前回更新のあとからプロジェクトリーダーに任命されて、プロジェクトマネジメントをするようになりました。去年で1件担当し、引き続き今もPLをやっているような状況です。

PLをやっていると、技術的に正しいことだけではプロジェクトは進まないな、と思う場面がかなり増えました。

仕様を決める、関係者と合意する、スケジュールを引く、リスクを見つける、課題を潰す、変更を扱う、チームの状況を見る。

こういう仕事は、なんとなくでも進められます。ただ、なんとなく進めていると、どうしても会社やチームのやり方に引っ張られます。1件目のプロジェクトが少人数チームでPLの私がルールメイクする立場になったのですが、正解が分からず苦戦しました。もちろん現場のやり方は大事ですが、今のやり方が本当に良いのかを判断する軸が自分の中に欲しいなと思いました。

もっと上手くやって、もう少し楽に仕事を進めたい。

そう思ったのが、PMPを受けようと思ったきっかけです。

タイトルのPMPは「Project Management Professional」というプロジェクトマネジメントに関する国際資格です。

IPAのプロジェクトマネージャ試験も候補ではあったのですが、CBT移行や試験制度の見直しの時期と重なっていて、今すぐ受ける資格としてはPMPの方が自分のタイミングに合っていました。

PMPとは

PMPは、PMIという団体が認定しているプロジェクトマネジメントの資格です。

ざっくり言うと、プロジェクトをどう計画し、どう進め、どう人や組織と関わり、どう価値を出すかを問う試験です。

プロジェクトマネジメントというと、WBSを作ってスケジュールを引いて進捗管理するもの、というイメージが強かったのですが、PMPで扱う範囲はもう少し広いです。

予測型(ウォーターフォール)のプロジェクトだけでなく、アジャイルやハイブリッド型の進め方も出てきます。チームビルディング、ステークホルダーとの合意形成、リスク対応、変更管理、ビジネス価値、コンプライアンスのような話も出ます。

PM/PLかくあるべし、と手法というよりも原理原則に重きを置かれた部分がPMPの領域で、ITに関わらないプロジェクトマネジメント全般の知識体系でした。

「この状況で、成熟したプロジェクトマネジャーならまず何をするか」

をひたすら問われました。

ここが面白いところでもあり、難しいところでもありました。

試験を受けるまで

PMPは、申し込めば誰でもすぐ受けられる試験ではありません。

受験にはプロジェクトマネジメント経験と、35時間の公式なプロジェクトマネジメント教育が必要です。

自分の場合は、エンジニアになる以前もプロジェクト業務にしていたので経験面は全く問題ありませんでした。35時間の研修を受けて、そこからPMIのサイトで申請しました。事前の研修と受験費用は会社が出してくれました。感謝です。

大変だったのは2026年7月9日からPMBOK(プロジェクトマネジメントの知識体系)の刷新に伴い、試験内容も変わってしまう。それまでに受験申請と受験を済ませることでした。どちらかというと、事前の申請が思ったより重かったことでした。

申請では過去に担当したプロジェクトについて、どのような目的のプロジェクトで、どのような成果物があり、自分がプロジェクトマネジメント上どのような役割を果たしたのかを書きます。英語で。

最初は「自分はPLとして実務をやっていたし、まあ書けるだろう」と思っていたのですが、実際に書いてみるとかなり難しかったです。

単に「開発しました」「調整しました」では弱くて、PMとして何を計画し、何を監視し、何を調整し、どのようにプロジェクトを前に進めたのかを書かなければなりません。

ここで一度、自分の経験をプロジェクトマネジメントの言葉に変換する必要がありました。

これは面倒ではあったのですが、振り返ってみるとかなり良かったです。

自分がやっていた仕事の中にも、ステークホルダー管理、リスク対応、スコープ調整、品質管理、コミュニケーション管理のような要素があったことが分かりました。

一方で、今まで感覚でやっていた部分も見えました。

申請を通すための作業ではあるのですが、ここで一度自分の経験を棚卸しできたのは収穫でした。

試験対策

試験対策は、基本的には講座と問題演習を中心に進めました。

PMPは日本語でも受験できますが、日本語訳がかなり独特で、問題文の意図がわかりづらい問題が多くありました。

最初は問題を読んでも、何を聞かれているのか分からないことが多かったです。

特にアジャイル系の問題や、ステークホルダー対応の問題は、普段の仕事の感覚で選ぶと普通に間違えます。

たとえば現場では、困ったら上司に相談するとか、詳しい人に判断してもらうとか、期限に間に合わせるために範囲を削るとか、そういう動き方をしがちです。

ただ、PMPの世界ではそれが常に正解とは限りません。

まずチームと話す。 まず根本原因を確認する。 まずステークホルダーと期待値を合わせる。 まず既存の計画やプロセスを確認する。 変更は統合変更管理を通す。 アジャイルならプロダクトオーナーやチームの責務を尊重する。

このあたりの「PMP的な優先順位」を掴むまでに時間がかかりました。

勉強していて特に大事だと思ったのは、用語を単体で覚えることよりも、考え方の型を掴むことです。

自分は以下のような観点で、間違えた問題を整理していました。

  • これは予測型の問題か、アジャイルの問題か
  • PMが直接解決すべき問題か、チームに解決を促す問題か
  • リスクなのか、すでに起きた課題なのか
  • 変更要求なのか、通常の作業調整なのか
  • ステークホルダーの期待値ずれなのか、チーム内の問題なのか
  • すぐ対応する場面なのか、まず分析する場面なのか

最初はこの切り分けが全然できませんでした。

「いや、この選択肢でも良くないか?」と思うことがかなり多かったです。

ただ、演習を重ねていくとだんだんPMPが求めているPM像が見えてきます。

独断で決めない。 チームを責めない。 プロセスを飛ばさない。 ステークホルダーを放置しない。 短期的な帳尻合わせより、価値と合意形成を重視する。

こういう人物像です。

これは正直、きれいごとに見える部分もあります。

現実のプロジェクトではそんなにうまくいかないことも多いですし、PMにそんな権限ないでしょ、と思う場面もあります。

ただ、資格試験として学ぶなら、現実のしんどさに寄せすぎるよりも、まず原則を押さえた方が良いです。

現場では原則をそのまま適用できないこともありますが、原則を知らずに崩すのと、原則を知ったうえで現実に合わせるのでは全然違います。

PMPの勉強で得られる一番大きなものは、この「判断の基準」だと思います。

試験本番

試験はかなり長いです。

180問あり、試験時間も長いので、単純に体力を使います。

自分はテストセンターで受験しました。

試験中は2回休憩を取れますが、休憩前の問題には戻れません。

問題自体は、模擬問題で見たような論点も多かったですが、やはり本番は文章が短く日本語が問題になることは少なかった気がします。問題に慣れたからかも。

それっぽい選択肢が複数あり、その中から一番PMらしいものを選ぶ問題が多かったです。

知識だけで即答できる問題はそこまで多くなく、状況を読んで判断する問題が中心でした。

本番で意識したのは、悩みすぎないことです。

考えれば考えるほど全選択肢に可能性があるように見えてくるので、まずは選択肢を2つまでしぼって、最後は実務を想定して「PMP的にはどれか」で選んで進めました。

結果

結果は無事に合格でした。

事前に合格通知はメールで届くと聞いていたので、驚いたのですが、試験終了直後に速報の結果が出ました。 かなり疲れていたので、最初は本当に合格しているのか少し疑いました。ただ、ちゃんとPassと出ていました。

合格できたこと自体も嬉しかったですが、それ以上に、プロジェクトマネジメントを体系的に学ぶきっかけを作れたのが良かったです。

特に、今の仕事でPLをやっている身としては、かなり実務に返ってくる内容でした。

たとえば、リスクと課題を分けて考えること。 変更要求をその場のノリで処理しないこと。 ステークホルダーとの期待値合わせを後回しにしないこと。 チームの問題を個人の能力不足だけにしないこと。 プロジェクト管理計画やガバナンスを、単なるドキュメントではなく合意形成の仕組みとして扱うこと。

このあたりは、すぐ仕事に効きそうです。

もちろん、PMPに合格したから急にプロジェクトマネジメントが上手くなるわけではありません。

資格は資格です。

ただ、今まで経験と雰囲気でやっていたことに対して、言葉と型ができた感覚はあります。

これはかなり大きいです。

これから

PMPを取ったので、これで終わりではなく、むしろここから実務で使っていきたいです。

今後は、今担当しているプロジェクトで、プロジェクト管理計画、リスク管理、変更管理、ステークホルダー管理あたりをもう少し意識して進めたいです。

特に自分は開発寄りの人間なので、どうしても技術的な課題に目が行きがちです。

もちろん技術は大事です。

ただ、プロジェクトとして見ると、技術的に正しいだけでは足りません。

誰が意思決定者なのか。 何をもって成功とするのか。 どの変更は受けるべきで、どの変更は止めるべきなのか。 誰の期待値がずれているのか。 チームが継続的に成果を出せる状態になっているのか。

こういう部分を見られるようにならないと、PLとしては厳しいなと思います。

PMPの勉強を通じて、プロジェクトマネジメントは「管理」というより「前に進めるための仕組みづくり」なんだな、という認識になりました。

タスクを管理するだけではなく、関係者が納得して動ける状態を作る。 チームが成果を出しやすい状態を作る。 変更や不確実性があっても、プロジェクトの目的から外れないようにする。

このあたりを実務でちゃんとやっていきたいです。

あと、PMPは更新のために継続学習も必要なので、今後もプロジェクトマネジメント周りの学習は続けていく予定です。実務も落ち着いたらエンジニアに戻りたいけど…戻れるんだろうか。

試験勉強は大変でしたが、今PLをやっている人や、これからプロジェクトをリードする立場になりそうな人には、かなり良い資格だと思いました。

少なくとも、自分にとっては取ってよかったです。

DevOps の小説を読んだ感想

今回のお題はDevOpsです。

よく聞くワードですし、もうITエンジニアには一般化されてるような気がしたんですが自分が本業として取り組むにあたってふんわりとしたイメージしか知らないなあ、ということで導入を兼ねてDevOpsを教えてくれる小説を読みました。

https://amzn.asia/d/42kxCk4

ストーリーの大筋としてはデスマプロジェクトを指揮することになった主人公が会社のトップともやり合いながら、部門の壁を超えて連携する(DevOpsを構築する)ことで解決する、という流れです。最近、小説もご無沙汰だったので読んでて面白かったです。軽い感じでサクッと読めます。

以下、心に残った点です。

3つの道と4つの仕事

本書で提示されているDevOpsのコアバリューが3つの道で4つの仕事とは仕事を4象限のマトリクスに分割したもの。

3つの道で示されている価値観というのは高速に価値提供して、フィードバックループを回し、よく実験してよく学ぶことの3種です。一般的な価値観ですが、ソフトウェアのリリースを絡めてこれらの価値観を実現しなければならない点がDevOpsの難しいところでもあります。

一方で4つの仕事とは平たく言うと7つの習慣に出てくる、緊急・重要のマトリクスのような分類の仕事を指したものです。主人公は開発チームが作ったリリース用のソフトウェアパッケージをリリースするのですが、重要では無い急ぎの仕事や人的に依存したタスクなどで本来やるべき価値を生み出す仕事を全く進められない状態になっていました。

この状況をDevOps的な部門を超えた連携と工場の生産管理をベースにしたリリース管理を行うことでなんとかしてしまいます。

この工場の生産管理というのもうまい設定で、DevOpsの原点にはリーンの哲学があるといいます。リーンとはスタートアップでよく使われる考え方で最小限の機能を提供するプロダクトを顧客に提供し、そのフィードバックを元に方針を少しづつもしくは大きく変えながらサイクルを回して価値を生み出していく考え方です。リーンのベースはトヨタ生産方式にあり、この書籍ではリーンの概念を飛ばしてDevOpsと工場の生産管理を結びつけて表現しているのが面白いところです。

devopsの目的

devopsがリーンやトヨタ生産方式を原型にしているとは書いたんですが、その目的は3つの道以外にも開発コストの回収も含まれます。

一回ごとのリリース期間を短期間化して高頻度のリリースサイクルを回すことで一リリースで回収すべきコストが分散される…とされています。開発が長期間化すれば人件費もその分かかるので分かる話です。

開発視点でもビックバンリリースと言われるような変更量の多いリリースはバグが含まれやすく、その原因追跡も変更量の多さから難しくなるとされています。

具体的なデプロイ頻度

これは具体的に書籍にも登場していて一日20回のデプロイを目指すように書かれています。

この1日20回という頻度は個人的にはハードルが非常に高いなーと思いますが、ここはプロダクトの種類やチームによっても異なりそう。

それよりも気になったのはそんな頻繁にデプロイしてたらQA工程が追いつかなくないか?ということ。 これに関しては自動テストで代替したり、フィーチャーフラグを立ててステージングやプロダクションでは機能のオンオフを変更するんだそう。ここも開発チームの特徴が出そうなポイントだと思います。

その他

書籍から離れた話。

devopsの立ち位置

結局devopsがなんなのかというと、ソフトウェア開発(saas)でリーンを実現していくための哲学や方針といったかなり抽象度の高い概念だと思いました。

devopsが掲げる目標を実現する手段としてCICDとかアジャイルとかオブザーバビリティなどがある、感じですね。


devopsは哲学ということでdevopsを学んだだけでは中々devopsの実現は難しいのですが、普段CICDなどを触ったりしてる身からすると「why」が知れたのは収穫でした。

今回は小説でdevopsの触りだけ知ったので、今はリーンスタートアップトヨタ生産方式などのdevopsの背景的な情報を取得しつつ、SRE領域のdevopsを実現するHOWも学習しています。

2025年5月 AWS JumpStartに参加しました

AWS JumpStartという勉強会イベントに参加したので、内容とか良かったところを記録します。

Jump Startは今年あと2回あるので興味が湧いた方はぜひ参加してください。

aws.amazon.com

目的

AWSがほぼ無知なのでキャッチアップしていくため。軽めの勉強会や初心者向け書籍を読んだが同じような内容ばかりで知識が深まる感じが無かったので、一気に理解を深めるようなものを望んでいた。

やったこと

2日間で初心者講義用の簡単なアーキテクチャAWS上に構築するハンズオン〜指定された要件を基にアーキテクチャ図を作成する、といった内容。

面白いのはハンズオンは基本的にモブプロ。アーキテクチャ図の作成も個人作成時間を1時間程度用意されていたが、時間経過後は振り分けられたグループ内でコミュニケーションを取りながらアーキテクチャをブラッシュアップさせる方式だった。仕事する以上に喋っていた気がする。

1日目

最初に操作になれるためのハンズオンでECSとAmplifyでのデプロイ。次に、簡単なアーキテクチャとしてネットワーク周り+Aurora MySql+ECSのアプリケーションコンテナという構成でDBなどは多少冗長にして構築するハンズオンをおこなった。

さすがにクラウドがどうこうという段階の説明は一切なく、一安心。

構築操作に不慣れだったが、モブプロを組んだ方も同じレベル感だったのでわちゃわちゃしながら構築してました。

2日目

初日の振り返りを兼ねたAWSクイズから始まり、その後はほぼ終日ECサイトに関するアーキテクチャ図作成に取り組んだ。

アーキテクチャの要件としては数万人規模のECサイトで夕方にピークがあり…と結構わかりやすい。現実的にはこのあたりの要件の洗い出しこそ難しい部分だったりするからアーキテクトとして面白い部分だけイベントではやった感じなのかなと思う。

グループ内でもAWSに詳しい人がいたのでグループワークでアーキテクチャを作る際には質問できたりして、非常に勉強になった。なんとなくサービスを組み合わせてアーキテクチャを構築するって部分の理解が深まった気がした。

他グループのアーキテクチャを見れる場面が結構あって、なんなら成果発表とかも聞けたのだが、全く違う発想でアーキテクチャを組んでいるグループもあって学びが多かった。

あと、全編通してAWSの方やBedrockに質問できるので疑問が湧いたら即解消できてこれもありがたかった。

おわり

今回のAWS JumpStartへの参加を通して、AWSアーキテクチャの見方や、サービスの組み合わせでアプリケーションをつくるって部分の理解が深まりました。 特に後者に関してはこれまでのアプリケーション制作とは決定的に異なる部分になるので気づいたことで今後の理解が早まりそうです。みなさんもAWSをキャッチアップしていくなら AWS Jump Startをおすすめします。

「技術書の読書術」の感想

www.shoeisha.co.jp

精読と速読を両立できる上手い話があったら知りたいと思って買いました。久しぶりの技術書以外の書籍。

いいなと思ったところとしては、一冊を3回読む手法がまず心に残った。

1回目は速読で概要を掴む。この段階で全く話がつかめない場合は自分に対して書籍のレベルが高すぎるので別の本に移る。

2回目でハンズオンしながら精読する。一回目を読んだ際に概要と流れを把握しているので進めやすい。

3回目で自分が詰まった箇所やポイントと思うところをまとめる。アウトプットすることで理解が定着する。

こんな感じに知識を広げるフェーズと深めるフェーズを分けることで読むこと自体もスムーズに進むようにしている。参考にしたい。

手を動かすのを初回と別工程にするのでPC触るぞってタイミングで進めていきやすいと思った。

また、読者の数を増やしていく方法として時間制限を設けて読書をするって方法も書いてあって、これも良いやり方だと思った。

30分だけ読む。30分経ったらスパッと一度やめる。ダラダラ読むよりやっぱり集中して進めていけそう。

他にも、エスカレーターで移動してる間に1ページ読むって方法も書いてあった。通勤で1日に4回エスカレーター使うなら1ヶ月で80ページ、半年で480ページになるので侮れない。

他にも英語書籍の読み方とか知見を深めてく読書法みたいなことが書いてあった。本を読む人ほど読書法を知っといて損はないのでおすすめの一冊です。

sidekiqとは何か。 概要とか調べたことまとめ

仕事でsidekiqに触れたので調べたことをまとめました。

sidekiqとは何か?

sidekiqとはバックグラウンドジョブ管理gemです。

バックグラウンドジョブとは重い処理をバックグラウンド処理してユーザー(クライアント)の処理待ち時間を削減したり、リソースの浮いた時間帯に重い処理を回したりするなどできるようにするもの。ユーザー体験が良くなると言われています。

sidekiqはRubyで書かれたマルチスレッド処理でジョブを並列実行する仕組みになっています。1プロセスあたりマルチスレッドかつ、1スレッドが1ジョブを実行します。デフォルトでは25スレッドが上限となっています。 ジョブがプロセスに依存しないため、メモリにロードしたデータを複数ジョブで流用することができる点で、メモリ効率が競合ライブラリよりも優れているようです。

また、ジョブ管理はRedis(メモリ)を使用します。

実行フロー

sidekiqはRuby gemとしてRailsプロジェクト(に限りませんが)にインストールして使用します。

起動時はRailsアプリケーションと並行してsidekiqクライアントを bundle exec sidekiq -C sidekiq.yml して起動します。別プロセスでsidekiqは動作し、Railsアプリケーションとは異なる動きでジョブを管理・実行します。

大まかな処理フローは以下の通りです。

  1. クライアントが重い処理をリクエスト(帳票発行やメール多数送信など)
  2. Railsアプリケーションは対ユーザーとジョブ管理とで処理を分ける
    1. ユーザー:処理を受け付けたことをレスポンスする
    2. ジョブ:Railsアプリケーションからsidekiqに組み込んだジョブクラスを呼び出して非同期ジョブを呼び出し
  3. sidekiqはRailsアプリケーションからの呼び出しをもとにジョブをキュー(Redis)に登録 ※キュー以外にも時限実行とかもある。
  4. キューに蓄積されたジョブが順次実行される ※同時実行数はsidekiqで定義できる
    1. ジョブの順番が来たらあらかじめ定義済みのジョブが実行され、Railsアプリケーションの処理が呼び出される
  5. ジョブが完了したら終了、もしくは完了しない場合は再実行される

実装

公式のGetting StartedとRails Guideに目を通すと良いと思います。

github.com

railsguides.jp

Active Jobはジョブ管理gemの抽象化ライブラリなので、使うとジョブ周りの実装が若干楽になるのかな?個人的には素のsidekiqでもシンプルだと思うのでどちらも使いやすいと思います。

アプリケーション起動時から動作する繰り返しジョブの実装

個人的にやりたかったところがこれです。アプリケーションを起動した直後から起動している間は一定間隔で実行されるジョブをsidekiqで実装したいな、と。

ジョブの実装に関しては通常のRailsアプリ、sidekiq使用時と変わりません。Railsアプリ上に実装し、sidekiqなりActive Jobから処理を叩けるようにしておきます。

ジョブのスケジューリングはsidekiq-cronというgemを追加で入れて使用します。繰り返し処理とかを設定できるgemです。

また、sidekiqのジョブ実行の前段階としてジョブの登録が必須になります。これをアプリケーション起動時にどうするかというと、sidekiqのジョブ登録はDBに行うので bundle exec rails db:seed をアプリケーション起動前に実行しDBにジョブを登録してからアプリケーションを起動するようにします。 sidekiqのジョブレコードと、ジョブレコードに対応したsidekiq-cronのスケジューリングレコードをDBに登録するようにします。

これでアプリケーションを起動すると一定間隔でジョブを実行するようになります。

生成AIの発展してもエンジニアの仕事はなくならないと思う

生成AIが発展したらエンジニアの仕事が奪われるのではないかって話をよく見かけます。最近はコード生成を超えてアプリケーション生成みたいなのが出てきてますからなおのこと。

個人的にはエンジニアの仕事の形が変わるってだけではないのかなーと思っています。

手工業から機械化が進んだとて、その作業の成果物自体に意味があるのなら仕事は残りました。人間の役割が変わるだけで成果物を作ること自体は消えないと思います。なのでどれだけスムーズに自分の役割を変えていけるか、が大事じゃないかなと思います。

大仰な話じゃないけれど以前自転車パーツの磨き上げをやったことを思い出しました。自家作業だったので手作業で金属部品を研磨して磨き上げたんですが、非常に時間がかかりました。実際の生産現場では手作業で研磨することはまずなくて機械で代替えしてるし、なんなら研磨不要で塗装してるケースもある。人間の手作業じゃなくてもよいという、生成AIみたいな話です。

これについては、磨き上げの最終的な価値は美麗な外観の提供なので、誰に何を提供するのか理解していれば手作業にこだわって仕事がなくなることも無いと思うのです。手作業のほうが最終的なクオリティが高くなることはありますし、機械による生産はほどほどのクオリティでとどまりますから、そのへんはどの水準のアウトプットを出していくかで考えは変わるのではないかなと。誰に何を提供するかが大事で、自分の立ち回りを柔軟にしていけるといいですよね。

ところで、技術書で有名なオライリー創立者 オライリーさんがこんな記事を出していました。

www.oreilly.com

概要としては現在主流のプログラミングも変化の末によるもので、効率化が進んでもエンジニアの仕事は増えてきた。なので、今回の生成AIもエンジニアの仕事が変わるだけで仕事自体は増えるだろうみたいな。(自動翻訳を読んでの要約なので適当な部分はご容赦を)

私はオライリーさんに同意ですね。

学習の「上から」と「下から」

t_wadaさんのポストが良かったので備忘録的にブログにする

私はt_wadaさんと違って上から技術を学習していくことが多いし、その技術の意義がわかっていた方が理解が捗るというのが理由。手を動かさないことには若干の危機感は持っていたりする。

たぶんt_wadaさんは見識が広いから大体ボトムアップで取り組んでも過去の類型に当てはめてその技術を受け止める(理解する)ことができるんじゃないだろうか。

いずれは私もボトムアップ的に技術をキャッチアップできるようになるのかな?なれるといいなあ。

学習の方向性を縦軸で捉えることを再認識できたので、冒頭のポストはとてもよかったです。