機雷がなんだ! 全速前進!

SEというかプログラマというか、日々のエンジニア生活の中で体験したことなどを中心に書き残しています。

生成AIの再現性と冪等性について

前回の記事「生成AIに関するモヤモヤを年内に一旦整理しておく」で生成AIに関するモヤモヤを一旦整理したのですが、一点重要なモヤモヤポイントを含め忘れていました。今さら至極当然のことではあるのですが「生成AIの再現性と冪等性」についての基本的な理解についても一旦整理しておきます。

概要

複数の生成AIに以下の質問をして得られた回答を比較分析しました。

プロンプト1:

一般的に、生成AIに対して全く同じ命令(プロンプト)を与えた場合、全く同じ回答を得ることはできますか?つまり再現性や冪等性は保証されますか?

プロンプト2:

再現性や冪等性を完全に保証する方法はありますか?

結論

(少なくとも現段階においては)一般的な生成AIにおいて、完全な再現性および冪等性は原則として保証されない。 生成AIは統計的な確率に基づいて次の単語を予測する「確率的モデル」であり、計算プロセスに不可避な揺らぎが含まれるためである。

補足

ちなみに、だから生成AIはダメだとか、これじゃ使えないという意味ではありません。 上記の前提や特徴を踏まえた上で、目的や用途に合った使い方をした方が良いという文脈での結論です。

例えば、稼働中の本番環境のソフトウェアやインフラの生成や修正などで冪等性が求められうようなケースには向いてないというだけです。 そもそも、シンプルかつ確実な手順で実現可能ならIaCやコマンドで対応すべきだと思いますし、単に適材適所の手段を選択するというだけです。 生成AIの特性を踏まえて 加速装置 あるいは 増幅器 としてうまくお付き合いする必要がありそうです。

詳細

各種生成AIから得た回答を、ローカルPC上にセットアップしたAIエージェント(Cline + gemini-3-flash-preview)で比較分析しました。

1. 生成AIと使用モデル

AIサービス 使用モデル (自称/推定) 補足
ChatGPT GPT-5.2 GPT-5.2 を基盤とした ChatGPT
Copilot 非公開 モデル詳細は非公開
Gemini 3.0 Gemini 3 Flash 高速モード
Gemini 3.0 (DeepSearch) Gemini 3 Flash 思考モード
Perplexity AI (無料版) Sonar (Llama 3.1 70Bベース) デフォルトモデル+Pro Searchモード

2. 各レポートの主張内容の比較

全てのレポートにおいて、「生成AIにおいて完全な再現性・冪等性は保証されない」という結論で一致しています。 しかし、その根拠や解決策の提示において、各モデルの特色が現れています。

共通の主張

  • 確率的モデル: 次の単語(トークン)を確率分布からサンプリングするため、本質的に変動する。
  • 温度パラメータ (Temperature): 0に設定することで再現性は高まるが、完全ではない。
  • モデル・環境の更新: モデルのアップデートやインフラ環境の変化が影響する。

特徴的な視点・詳細度

  • ChatGPT: 「生成させない設計(分類・選択のみ)」や「人間確定フロー」など、運用・設計面での回避策を具体的に提示している。
  • Gemini (通常/DS): 技術的な深掘りが目立つ。「GPUの非決定性(浮動小数点演算の誤差)」や「MoE (Mixture of Experts)」、「動的バッチ処理」など、インフラ・計算機科学的な要因を詳しく解説している。
  • Perplexity: 検索特化型らしく、複数の外部モデル(GPT-5.2, Claude 4.5等)のリストアップを含め、情報網羅性が高い。また、初回クエリとフォローアップクエリの対話形式で情報を整理している。
  • Copilot: 最も簡潔で要約された内容。基本的な要因と対策を箇条書きで分かりやすくまとめている。

3. 技術的深掘りの比較(再現性が得られない理由)

要因 ChatGPT Copilot Gemini Perplexity
確率的サンプリング
温度(Temperature)
モデルアップデート
並列演算/GPU誤差 - - -
インフラ/環境依存
MoEの影響 - - -

4. 解決策・代替案の比較

解決策 内容 提唱モデル
キャッシュ/保存 一度生成した結果をDB等に保存し、再利用する。 ChatGPT, Gemini, Perplexity
パラメータ調整 Temperature=0, Seed固定。 全モデル
設計による回避 分類・正規化に限定する、人間が承認する。 ChatGPT, Gemini (構造化出力)
環境固定 セルフホスト環境で演算ライブラリまで固定する。 Gemini

以上

生成AIに関するモヤモヤを年内に一旦整理しておく

近年の生成AIの進歩は目覚ましく日進月歩どころか秒進分歩の様相を呈しています。私も日々の仕事やプライベートで色々と生成AIを使うことが増えてきました。そんな生成AIへの期待は、業種業界を問わず日々高まっており、様々なところで利活用や検討が進められており、国としてもAIや半導体などを含む17の戦略分野に官民で重点的に投資する方針が決定されました。詳細は内閣府が公開している「人工知能基本計画」で確認できます。

 

大いに盛り上がっている生成AIではありますが、中長期的にはきっと想像もつかないような変革をもたらす可能性があると思うものの、猫も杓子も生成AIみたいな風潮に少なからずモヤモヤすることも多い今日この頃です。生成AIに関する様々な情報に目を通す中で、そのモヤモヤを的確に表現してくれている方々がいらっしゃいました。今年のモヤモヤは今年のうちに、、、ということで、これまで断片的に目にした情報を以下にまとめておきたいと思います。

気になった記事

モヤモヤしたポイントをうまく表現してくれていた主な情報は以下のとおりです。また個人的に心に刺さったポイントについても記載しておきます。

    • 生成AIは良くも悪くも加速装置(P.36)
    • 説明責任は残り続ける(P.38)
    • モブプログラミングによって持続性を維持する(P.43)
    • 学習への投資(P.44)

まとめ

前述したとおり生成AIの進化は、中長期的(今後3~10年後)にはきっと想像もつかないような変革をもたらす可能性があると思いますが、少なくとも現段階においては、生成AIは 加速装置 あるいは 増幅器 として積極的に活用すべきだと思います。ただし、生成AIによって作り出された成果物についての 説明責任は人が担う ことになるので、身の丈に合わない利用は極力避けるべきです。加えて、プロフェッショナルとして説明責任を果たすためにも、生成AIを利用する側の人間は、これまでと同様に、論理的思考 や 専門知識 を身に着けておく必要があると思います。

 

それでは良いお年をお迎えください。

*[本]「プロフェッショナルスクラム虎の巻」: ビジネスアジリティ最大化への道

前々回の「ゾンビスクラムサバイバルガイド」更に前回の「プロフェッショナルプロダクトオーナー」に続き、また翻訳者のひとりである たくぼん さんから書籍「プロフェッショナルスクラム虎の巻」をプレゼントしていただきました。いつもありがとうございます。🙇‍♂️

www.maruzen-publishing.co.jp

概要

スクラムの共同開発者であるケン・シュエイバーは、プロフェッショナルとは、報酬を得て、その職業の規範に従う人物のことであると述べています。また、プロフェッショナルであるということは、一連の倫理基準を受け入れることを意味するとも付け加えています。この本はスクラムを習得し、よりプロフェッショナルになるための実践的なアドバイスが得られる所謂プロフェッショナルスクラムのサポートブックです。俗説を払拭し、誤解を正し、組織がスクラムを活用して高品質のプロダクトと体験を顧客に届けられるよう助けることを目的としています。

対象読者

この本は、多くのことを正しく行っているものの、改善したいと思っているスクラムの実務的な知識がある人を対象としています。重要なのは、改善したい、改善する必要があるという思いです。(※注:スクラムの未経験者や初心者向けの内容ではありません)

本書の構成

本の構成は、下記のような章立てになっています。

<構成>
デイヴ・ウェストによる序文
日本語版刊行に寄せて
はじめに

第1章 スクラムの実践を継続的に改善する
第2章 強力なチームの土台を創り出す
第3章 「完成」したプロダクトインクリメントを届ける
第4章 届ける価値を向上する
第5章 計画づくりを改善する
第6章 スクラムチームの開発と改善を助ける
第7章 改善するために組織を活用する
第8章 結び、そして次なる一歩
付録A 現在地を理解するための自己評価
付録B 完スクラムに関するよくある誤解

 

印象に残った点

印象に残った点や共感できた点、思ったことなどを以下にメモしておきます。

はじめに

【Page:xii】

スクラムの共同創設者であるケン・シュエイバーが言うように、「スクラムは理解は容易だが、習得は困難」です。

この本は、2017年版のスクラムガイドを使ってスクラムを説明しています。(※現時点での最新版が2020年版であることに注意してください)

第1章 スクラムの実践を継続的に改善する

強いチームにはチームのアイデンティティがある

【Page:5-6】

基盤となる段階では、アイデンティティの確立とは、チームが高いパフォーマンスを目指す旅へと導く、三つの大きな問いに答えることです。

1.私たちはなぜここにいるのか?(目的)

2.私たちにとって大切なことは何か?(価値)

3.私たちが望んでいるものは何か?(ビジョン)

アジャイルサムライで紹介されていたインセプションデッキの「我々はなぜここにいるのか?」に近いものを感じました。

技術的卓越性

【Page:11】

スクラムは、優れた開発チームになる方法を教えてくれるわけではありませんし、優れたプロダクトオーナーになる方法を教えてくれるわけでもありません。それぞれの役割で必要となるアプローチ、スキル、ツールは、あなたが働いている状況に完全に依存します。スクラムは、技術的卓越性を示すために、どのようなものが必要なのかは定義していませんが、スクラムを上手に行うには、技術的卓越性を示すことが絶対に必要です。技術的卓越性には、エンジニアリングプラクティスからプログラミング言語まで、プロダクトマネジメントプラクティスから品質保証まで、機械工学からユーザーエクスペリエンスデザインまで、多くのものが含まれます。

最も痛みを感じるのは何か?

【Page:13-16】

一度にすべてを解決することはできません。多くのことを同時に変えようとすると、エネルギーと集中力が薄れてしまい、何か一つでも意味のあることを達成するのが難しくなります。すぐに効果が得られないと、組織の人たちは興味を失い支援を取りやめる傾向があります。(中略)

その代わりに、時間をかけて継続的に少しずつ変更し、学びを深めながら調整を加えていきましょう。(中略)

実際には:スクラムでよくある七つの機能不全

私たちの経験から、チームや組織がプロフェッショナルスクラムでビジネスアジリティを完全に実現するのを妨げている、七つの間違いがあります。これらの間違いは、どんなに良い意図を持っていたとしても起こりえます。

1.完成させられないスクラム

2.メカニカル(またはゾンビ)スクラム

3.独善的スクラム

4.フリーサイズスクラム

5.ウォータースクラムフォール

6.これで十分スクラム

7.うちは特別スクラム

成功か失敗か?

【Page:22】

結局のところ、問うべきことは二つです。

  • その時点で知っていたことを使ってベストを尽くしただろうか?
  • どのようにすればもっと良くなるのか?

 

第2章 強力なチームの土台を創り出す

スクラムチームはどのようにワーキングアグリーメントを作り上げるのか?

【Page:32-33】

開発チームの「完成」の定義は、チームメンバーがプロダクトインクリメントの品質と完全性をどのように担保するかについてのワーキングアグリーメントでもあります。

実際には:チームのパーパスステートメント

チームが自分たちのパーパスステートメントを作成するのを助けることは、チームを一つにまとめ、ワーキングアグリーメントに明確さと透明性を与える有効な方法です。パーパスステートメントは、次の要素に対処するものです。

  • 何を:チームが満たそうとしている顧客のニーズ
  • どのように:チームがそのニーズを満たすために使う手法や技術
  • 誰が:主要顧客についての説明
  • なぜ:顧客のニーズを満たすことが重要である理由
  • 魅力や強み:チームの差別化ポイント

チームのパーパスステートメントの例

使いやすいコンテンツ管理ソリューションを提供することで、ユーザーは、規制・法律・セキュリティ基準をすべて遵守していることを保証しながらより効率的に業務を遂行し、顧客にサービスを提供できるようになります。

アジャイルサムライで紹介されていたインセプションデッキの「エレベーターピッチ」に近いものを感じました。

スクラムチームはどのように協働するのか?

【Page:39-40】

実際には:信頼を築く

信頼とは、弱さを見せることをいとわない気持ち、すなわち自分にとって大切なものが誰かの行動の影響を受けやすくなることをいとわないことです。信頼の雰囲気の中で働く人は、ものごとをより早く低コストで成し遂げる建設的な協働ができます。逆に信頼がなくなれば、信頼できない相手から自分を守るために時間を費やすため、ビジネスは停滞し、コストは上昇します。

 

第3章 「完成」したプロダクトインクリメントを届ける

「完成」の定義の作り方

【Page:57-58】

実際には:DoDの作成と改善のために「Now、Next、Future」を用いる

この手法は、チームが協働して最初のDoDを作り、時間をかけて改善するのに役立ちます。また、あまりよくないDoDに悩むチームが、今最も重要なことに集中し、前進するための意図的な行動をとるのにも役立ちます。

入れ子関係のイメージ

(Future:将来の改善点(←Next:次の改善点(←Now:今できること)))

良いスプリントゴールを作成する

【Page:59】

良いスプリントゴールを作るための完璧な公式はありません。どのスプリントゴールも状況に大きく依存します。

スプリントゴールの例

  • レポートのロード時間を2秒以内に改善する
  • スプリントの終わりには、本番環境と同様のインフラを使用したサイトのランディングページを公開する
  • 決済オプションを拡張して、より多くの支払い方法に対応する

 

第4章 届ける価値を向上する

ペルソナと成果

【Page:90-91】

ペルソナと成果は、明確な目的やターゲット層を持たないフィーチャーへの解毒剤です。

実際には:インパクトマップを使って優れたプロダクトのインサイトを得る

PBIが達成しようとする目標とPBIを結び付けるのに、インパクトマッピングは有効な手法です。拡張されたインパクトマップを使って、達成しようとしているビジネス目標を、サービスを提供するペルソナ、ペルソナが達成したいと望む成果、成果を達成した場合の組織へのインパクト、成果を達成するためにプロダクトで届けるPBIに結び付けられます。

拡張されたインパクトマップは、PBIの目標とPBIを結び付けるのに役立つ

https://scrumorg-website-prod.s3.amazonaws.com/drupal/inline-images/2019-08/extended%20impact%20map%202.jpg

(参照元)Extending Impact Mapping to Gain Better Product Insights | Scrum.org

【Page:92】

実際には:PBIを仮説または実験として表現する

仮説駆動型開発(Hypothesis-Driven Development:HDD)は、ペルソナ、成果、測定値、期待される結果を明示する方法でPBIを表現する方法です。

ユーザーストーリー

【Page:93-94】

実際には:プロダクトバックログのよくある落とし穴

どんなPBIのフォーマット(ペルソナ、成果、ユーザーストーリー、その他)を採用しているかにかかわらず、よくある罠に気を付けましょう:

1.PBIは決まったフォーマットに従わなければならないと思い込んでいる:よくあるユーザーストーリーのフォーマットは、オリジナルのフォーマットではなく、また必須でもない。スクラムチームがフォーマットを使うことは役に立つかもしれないが、PBIをフォーマットに合わせる努力をしなくてもよい。意味のあることを書こう。結局のところ、カードは会話をするためのリマインダーにすぎないのだから

2.PBIに描かれたユーザーや顧客にとってのメリットが不明確である:(省略)

3.価値を明確化していない:(省略)

4.PBIを契約として扱う:(省略)

5.実装の詳細を含む:PBIは「どのように」よりも、「何を」に焦点を当てるべきである。あまりに早い段階で実装を決めると、選択肢を狭めてしまう可能性がある。また、実際に実装する時に変更される可能性が高いものを詳細に記述することで、無駄を生む可能性もある

 

第5章 計画づくりを改善する

「成功を計測する

【Page:103】

プロジェクトマネジメントの三角形(鉄の三角形または三重の制約とも呼ばれている)に由来します。

プロジェクトマネジメントの鉄の三角形

  • スコープ
  • コスト
  • スケジュール
整合性を生み出す

【Page:106-107】

デイリースクラムは、スプリントゴールに向けた前進するための24時間の計画です。

プロダクトデリバリーを計画するには、組織内のさまざまなレイヤーを通じた整合性が必要です

会社のビジョン

ビジネス戦略

プロダクトビジョン

プロダクト戦略

リリース計画

スプリント計画

日々の計画

(デイリースクラム)

プロダクトバックログリファインメント

【Page:108】

私たちのトレーニングクラスでは、なぜプロダクトバックログリファインメントはスクラムのイベントではないのかとよく質問されます。「この活動は状況に大きく依存するため」が答えです。これはスクラムチームのプロセスの一側面であり、最も効果的なプラクティスとタイミングを決めるのはチームに任されています。

多くのスクラムチームは、プロダクトバックログリファインメントのリズムを見つけるのに苦労しています。よくある質問は、どれくらいの頻度で行うのか、どれくらいの時間この活動に費やすのか、どれくらいの詳細まで踏み込むのか、誰が関わるのか、どのプラクティスを使うのか、などです。繰り返しになりますが、これはスクラムチームが決めるべきであり、実験し、検査し、適応することで学ぶのが最善です。

 

第6章 スクラムチームの開発と改善を助ける

改善点をあぶり出すのにスプリントレトロスペクティブを利用する

【Page:124-125】

実際には:「フォースフィールド」分析を使って変改に対するモチベーションを理解する

変化に対するチームのモチベーションを発見する一つの方法は、簡単なフォースフィールド分析をグループで行うことです。このプロセスによって変化に影響を与える要因の概要が示されます。

阻害要因を特定し取り除く

【Page:127】

開発チームとプロダクトオーナーは、おそらくスクラムマスターのコーチングやファシリテーションの支援を受けながら、阻害要因を自分たちで解決できますし、そすしべきです(例えば、説明責任を果たすための作業の進め方など)。スクラムチームメンバーが自力で解決できない阻害要因は、スクラムマスターが引き受けます。 

阻害要因に取り組む

【Page:132-133】

実際には:ベロシティにこだわらない

多くの組織は「スピード」を上げるためにアジリティを求め、そのためにベロシティの向上に注力します。ベロシティは経験的証拠であり、過去の事実であり、スクラムチームにとってのみ有用なものです。(中略)私たちの経験では、すべきことは阻害要因や無駄の除去への集中です。ベロシティに焦点を当てると、「より速く」と急ぐあまり、手抜きをしたり品質を落としたりすることを招きかねません。反対に、無駄や阻害要因の除去に集中することで、そもそも実際に品質が向上し、仕事を正しく行う余裕が増えると同時にデリバリースピードも向上します。

スクラムマスターの成功を計測する

【Page:139-140】

実際には:スクラムマスターが長期的な成功を犠牲にしていそうなサイン

スクラムマスターは、「早く改善したことを示せ」というプレッシャーによくさらされます。このような困難な環境は、スクラムチームの成功を実際に損なう振る舞いを引き起こす可能性があります。

  • スクラムマスターがデイリースクラムをファシリテートしたり、スクラムボードを更新したりして、「すべてを軌道に乗せる」よう手助けする。自己組織化チームは、自分たちで進捗管理し計画を更新する能力を持つチームのことだ。初期にはスクラムマスターがファシリテーションの手法を教え、集中を作り出し合意を得るための質問をする必要があるかもしれない。しかし、時間の経過とともにスクラムマスターの直接的な関与は徐々に減らすべきだ。実際、ものごとが「軌道から外れた」ら、その失敗はスクラムチームにとって最も強力な学習経験になるかもしれないのだ
  • スクラムマスターがチームメンバー間にコンフリクトが生じたときの仲裁役になる。人は自分たちのコンフリクトを直接解決することを学んだ方が良い結果を生む
  • スクラムマスターがオフィスにいないとき、スクラムチームはスクラムのイベントをスキップする。これは、目的の理解不足(つまり、まだ経験主義を受け入れていない)か、スキル不足(例えば、誰もスプリントレトロスペクティブのファシリテーションに慣れていない)かのどちらかを示している可能性がある

このような振る舞いはそれぞれ、スクラムマスターへの依存を示しています。実際には、スクラムマスターは自分の役割が不要になることを目指すべきです。チームは常に新たな課題に直面し、改善の機会があるため、実際にそうなることはありません。しかしスクラムマスターはスクラムチームがさらに自立するためのより良い方法を、常に模索すべきです。

優れたスクラムマスターは状況に応じてアプローチを変える

【Page:142-143】

  • コーチングする

実際には:優れたスクラムマスター(とリーダー)は、チームの成果のために個人をコーチする

私たちの経験では、スクラムチーム内の個人(とスクラムチーム外の個人)とコーチングを伴う会話の時間を定期的に作ることは有用です。そのような定例の会話は、自らをよく理解することに役立ちます。コーチングは、自分の目的を見つけ出し、価値観やビジョンを明確にすることを助けます。また、自分の選好、モチベーション、振る舞いを理解することを助け、他者とのやり取りを効果的にマネジメントできるようにします。

【Page:144】

  • 積極的に何もしない:

一人でできるのに何かをしてあげると、その人の力を奪うことになる。経験主義と学習文化の中心は実験であり、行動して学ぶことだ。チームメンバーが学ぶためには自ら行動する必要がある。これは意識的な決断であり、常に他者の学習と成長に奉仕するものである。「積極的に」とは、チームが学び探求している間、活発に観察し続けるという意味だ。そして起こったことに基づいて、今のアプローチを続けるか、他の選択肢をとることができる

 

第7章 改善するために組織を活用する

鉄の三角形の真の力

【Page:156-157】

この三角形を理解するうえで大切なのは、複雑な仕事を扱っているため、コスト、スケジュール、スコープの三つの制約をすべて固定することはできないということです。

スコープ、スケジュール、コストのすべてを見積もり、保証することを求める多くの組織では、この点がどこかで見失われています。鉄の三角形の真の力は、組織がこれらの変数をすべて固定できないと認識し、代わりに与えられた機会を追求する(または追求し続ける)ために決定に影響を与える制約について、率直かつ正直に、適切な会話をしたときに現れます。

(中略)

三角形の2点しか固定できないという古い格言があります。スクラムは、鉄の三角形の「ルール」に従うことを非常に簡単にしてくれます。スプリントを考えてみれば、それは固定された時間と固定されたコスト(スクラムチームのメンバーとキャパシティが変化しあいと仮定して)です。したがって、スクラムで時間とコストを固定するのは非常に簡単であり、スコープに柔軟性を持たせることができるのです。

アジャイルであることはゴールではない

【Page:162-163】

多くの組織が「アジャイルトランスフォーメーション」を追求しています。みなさんもその一人かもしれません。よりアジャイルになりたいと思うことは、通常良いことですが、「アジャイルする」ことがゴールの場合は別です。アジャイルなマインドセット、アジャイルフレームワーク(スクラムなど)、アジャイルプラクティスは、組織の目標達成を助けることができます。しかし、特定の場合での意味がどうあれ、真のゴールは組織が届ける価値の向上です(またはそうあるべきです)

では、「アジャイルトランスフォーメーション」に注力することの何が不都合なのでしょうか。主に、焦点がぼやけることに加え、自分たちがやっていることやその理由を本当に理解することなく、ただ形だけをなぞる「ゾンビスクラム」に陥るリスクがあるのです。達成したいことが顧客の言葉で明確に表現されていれば、そこに到達するために必然的に必要となるトレードオフをより効果的に行うことができます

実際には:「100% アジャイル」が悪いゴールである理由

「アジャイルであること」がゴールでないなら、「100% アジャイル」であることはさらに悪いことです。経験主義やイノベーションを必要としない人たちやチームにアジャイルアプローチを押し付けることになるためです。

(中略)

「アジャイルが良いことなら、至るところでやろう」という罠に嵌った組織は、自分たちが何を達成しようとしているのかを見失っています。また先走りしすぎです。アジリティが機能するのは、権限を与えられ、自己組織化し、高度に専門化したチームが、アジリティを利用して自分たちのプロダクトと作業の進め方の両方を継続的に検査し、適応し、改善するからです。このようなパフォーマンスの高いアジャイルチームを構築するためには、時間とお金、さらに適切な人材への投資が必要です。

拡大する前にやり遂げろ

【Page:164】

組織はときにせっかちになり、より多くの価値を届けるためにスクラムチームを増やしたくなります。しかし既存のチームが、顧客やユーザーが価値を感じるリリース可能なプロダクトインクリメントを確実に届けるのに苦労しているなら、拡大(スケール)は良い案ではありません。より多くを届けたいという理由でチームを増やして拡大しようとすれば、実際には既存の課題を広げるだけであり、無秩序と混乱を増幅することになります。

代わりに、スクラムチームが素晴らしい状態になるように助けることに集中しましょう。多くの場合、組織的な阻害要因を取り除くこと、チームのプロセス改善を後押しすること、ビジネスと顧客に対するより良い理解を作り出すことが、複数チームによる複雑さの追加コストなしに、望ましい価値のフローをもたらします。

 

第8章 結び、そして次なる一歩

ビジネスアジリティには創発的ソリューションが必要だ

【Page:168】

ここまでで、次の重要な教訓を学んでいただけていればうれしいです。

  • 知識豊富で、スキルがあり、献身的な人たちなしには、スクラムは機能しない
  • チームは組織からの支援が必要である
  • マインドセットが文化を形作り、文化がプロセスに活気を与える
  • スクラムを熟達することは旅であり、目的地ではない

感想

この本は、私がこれまでセミナーや書籍やコミュニティなどで学んできたスクラムとプロダクトオーナーに関する重要なポイントが分かりやすく纏められていました。さらに、これまで私が学んできた中には無かった新たな重要なポイントについても具体例を交えて解説してくれており、今後の現場で役立ちそうな知識の引き出しが増えたように思います。翻訳された文章も非常に読みやすかったです。一方で、冒頭の対象読者の節でも触れたように、スクラム未経験者や初学者が読んで理解するにはハードルが高いとも思えましたが、この点はまさに狙い通りといったところでしょうか。ある程度の知識と経験がある人にとっては難し過ぎず、ページ数や情報量も多過ぎず、程よいサイズという点においても良い一冊だと思えました。

余談

発売日(2025/07/25)前に予約注文していたことを完全に失念しており、結果手元に2冊の書籍が、、、そんな訳で、後日職場の後輩に1冊プレゼントしました(笑)😅

デジタルウォッチ、テキストの画像のようです

AWS 認定ソリューションアーキテクト – プロフェッショナル(SAP)を更新(再認定)しました

AWS 認定ソリューションアーキテクト – プロフェッショナル (SAP-C02)を【再】取得しました。前回は期限ギリギリで受験しましたが失効のリスクも加味して今回は1ヵ月以上余裕を持って受験しました。また、AWS認定資格の再認定後の有効期限の考え方については別の記事で書いているのでよかったらご覧ください。

AWS認定について

AWS認定の情報はググればわんさか出てくるので、敢えてここで詳細を語る必要もないかと思います。AWS認定の詳細は以下の公式ページに記載されています。詳細はこちらをご覧ください。

再認定について

再認定の詳細は以下の公式ページに記載されています。詳細はこちらをご覧ください。

aws.amazon.com

SAP試験対策について

前回は駆け込みギリギリで旧バージョン(SAP-C01)で受験しましたが、今回は新バージョン(SAP-C02)での受験でした。基本的な考え方は変わらないと思いますが、参考までに今回の受験対策として実施したことを以下に記載しておきます。(※これは3年後に再受験する自分に向けたタイムカプセルの意味もあります)

 

  • Udemy:AWS SAP-C02模擬問題集|全420問を詳細解説!ソリューションアーキテクト プロフェッショナル【2025年版】(※有償:¥1600)※セール割引価格
    • 420問(60×2set + 75×4set)の問題集(解説付き)です。こちらはざっと一周解いてみた後、少し時間を空けてから間違えた問題のみ復習しました。

      https://www.udemy.com/course/aws-sap-c02420-2025/

 

以上の対策を実施した結果、今回は1回でパスすることができました。準備期間は約3週間といったところでした。ちなみにスコアはギリギリでもハイでもなく、そこそこでしたが、それなりにコンピテンシーを網羅できてるのが良かったです。

おわりに

既に所持している資格を更新する試験の対策というのは、新規取得時とは違ってなかなかモチベーションが上がらず(受験前は特に)メンタル面のハードルが高いなぁと毎回感じてしまいます。しかし、終わってみれば、知識をアップデートする良い機会だったなぁと思うことも多く、AWSを含むITの技術が日進月歩であることを考えると、妥当なシステムなんだろうなと勝手に納得してしまいます。

次回の更新は3年後の2028年のようです。それでは、いったんお疲れ様でした。

M4 MacBook Airを自分用にカスタマイズした際の作業記録

前回の記事で記載したごご高齢MacBook Airだが対応OSが既にサポ切れ(macOS Big Sur:2024年末まで)したことで、使っていたGoogle Chrome ブラウザなどのサポートも打ち切られてしまったようです。もうしばらくはオモチャとしては使えそうですが、スペックもさることながらバッテリーの持ちもかなり悪くなっているので、流石に世代交代せねばということで、新しいM4チップのMacBook Airに乗り換えることにしました。

いったん自分好みに諸々カスタマイズしたのですが、とある事情で再初期化するハメになってしまい、何をどうカスタムしたか思い出すのがなかなかの苦痛でした。再々初期化するようなことはもう無いと思います(そう願いたいです)が、また同じ苦痛を味わわないための精神的な保険としてここに作業記録を書き残しておきます。

デバイス

対象のデバイスは以下のとおりです。

基本方針

当たり前のことではありますが、インストールしたアプリの管理をしやすくするため可能な限りコマンドベースのパッケージ管理ツール(Homebrew)を使ってインストールしました。

設定内容

ランチャー:Raycast

公式:Raycast - Your shortcut to everything

Homebrew:raycast — Homebrew Formulae

備考:デフォルトのランチャー Spotlight の代わりに使用する(Command + Space)

【↓】競合を避けるためデフォルト設定はチェックを外しておく

 

マウス設定:Mac Mouse Fix

公式:Mac Mouse Fix

Homebrew:mac-mouse-fix — Homebrew Formulae

備考:5ボタンマウス(M-XGM10BBB)ホイール設定(縦スクロール反転+拡大縮小)

【↓】マウスボタン設定はチェックを外す(ブラウザBack+Forwardを利用するため)

※これまでお世話になった Scroll Reverser とはサヨナラ👋しました

 

キーボード設定:Karabiner-Elements

公式:Karabiner-Elements

Homebrew:karabiner-elements — Homebrew Formulae

備考:外部キーボード(JIS配列)のキーマッピング変更

【↓】外部キーボード(JIS配列)の場合はキーを入れ替える(Command ↔︎ Space)

 

ターミナル:iTerm2

公式:iTerm2 - macOS Terminal Replacement

Homebrew:iterm2 — Homebrew Formulae

備考:これを機に WARP にしようか迷ったが一旦使い慣れてるツールを継続利用する

 

ターミナル入力補完:zsh-completions

公式:GitHub - zsh-users/zsh-completions: Additional completion definitions for Zsh.

Homebrew:zsh-completions — Homebrew Formulae

備考:インストール指示通り ~/.zshrc を修正して再読込すると警告が出るので

% source ~/.zshrc
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]? y

以下のコマンドで原因のパスを特定して

% compaudit
There are insecure directories:
/opt/homebrew/share

パーミッションを変更する必要がある

% chmod -R go-w /opt/homebrew/share

その後、再度 ~/.zshrc を再読込する

 

Appleメニュー設定:MenuMate

公式:なし

Homebrew:なし

Mac App Store:「MenuMate」をMac App Storeで

備考:大きな外部ディスプレイでAppleメニューまでの移動を省略する(マウスのホイールボタンのクリックで呼び出せるよう設定)

 

スクショ画像編集:Monosnap

公式:Monosnap

Homebrew:なし

Mac App Store:「Monosnap - screenshot editor」をMac App Storeで

備考:外部キーボード(JIS配列)の配置をWindowsと同じにしておく

 

さいごに

このメモを書いていて、マウスとキーボードを外した時、つまり、ラップトップ単体で使いやすい状態になっているのか、という確認をしていないことに気付きました。おそらく、ここに記載した設定だけだと不都合が出る気がします。なんとなくトラックパッドを含むマウスまわりは大丈夫だと思うのですが、キーボード設定まわりがとても怪しいです。後日、ラップトップ単体での動作確認と設定のチューニングもすることになりそうですが、もう疲れたので今日はこんなところにしておきます…😓お疲れ様でした。

ご高齢MacBook AirにPython3をセットアップしたときのメモ

気付けばもう軽く10年以上使っているMacBook Air (13-inch, Mid 2013)でちょっと遊んでみようとPython3をセットアップしようとしたら意外と面倒だったので作業記録を残しておくことにします。

デイバス

  • モデル:MacBook Air (13-inch, Mid 2013)

  • 機種ID:MacBookAir6,2

  • 最終対応のオペレーティングシステム:macOS Big Sur(※2024年末でサポ切れ🥺)

  • 技術仕様:MacBook Air(13-inch, Mid 2013)

作業記録

Homebrewば現時点での最新バージョンまで上げました。

mba:~$ brew --version
Homebrew 4.5.2
Homebrew/homebrew-core (git revision c5976bed6c1; last commit 2025-05-11)
Homebrew/homebrew-cask (git revision 2e4492a5808; last commit 2025-05-11)

pythonは、もはやいつインストールしたか覚えてない古いのが入ってました。

mba:~$ python --version
Python 2.7.16(2021年7月15日サポ切れ)

ということでpython3をセットアップします。

mba:~$ brew install python3
python@3.13 3.7.5 is already installed but outdated (so it will be upgraded).
Warning: You are using macOS 11.
We (and Apple) do not provide support for this old version.

This is a Tier 3 configuration:
  https://docs.brew.sh/Support-Tiers#tier-3
Do not report any issues to Homebrew/* repositories!
Read the above document instead before opening any issues or PRs.

==> Fetching dependencies for python@3.13: mpdecimal, ca-certificates, openssl@3, readline, sqlite, xz, pkgconf, lzip and expat
==> Fetching mpdecimal
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/m/mpdecimal.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-4.0.1.tar.gz
##################################################################################################################################################################################################### 100.0%
==> Fetching ca-certificates
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/manifests/2025-02-25
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/blobs/sha256:8f46fb05f753f80f2bc398c0a24b10d680bd77d496e2b931de0b61998e37aebc
##################################################################################################################################################################################################### 100.0%
==> Fetching openssl@3
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/o/openssl@3.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://github.com/openssl/openssl/releases/download/openssl-3.5.0/openssl-3.5.0.tar.gz
==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/7634677/2eea5d52-f337-454f-ba38-2e866f5994e0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseasse
##################################################################################################################################################################################################### 100.0%
==> Fetching readline
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/r/readline.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-001
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-002
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-003
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-004
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-005
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-006
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-007
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-008
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-009
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-010
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-011
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-012
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-013
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz
##################################################################################################################################################################################################### 100.0%
==> Fetching sqlite
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/s/sqlite.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://www.sqlite.org/2025/sqlite-autoconf-3490200.tar.gz
##################################################################################################################################################################################################### 100.0%
==> Fetching xz
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/x/xz.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://github.com/tukaani-project/xz/releases/download/v5.8.1/xz-5.8.1.tar.gz
==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/553665726/b4e0a8ab-1ca0-4700-96c0-5f40d8f0ae89?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseas
##################################################################################################################################################################################################### 100.0%
==> Fetching pkgconf
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/p/pkgconf.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://distfiles.ariadne.space/pkgconf/pkgconf-2.4.3.tar.xz
##################################################################################################################################################################################################### 100.0%
==> Fetching lzip
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/l/lzip.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://download-mirror.savannah.gnu.org/releases/lzip/lzip-1.25.tar.gz
##################################################################################################################################################################################################### 100.0%
==> Fetching expat
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/e/expat.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://github.com/libexpat/libexpat/releases/download/R_2_7_1/expat-2.7.1.tar.lz
==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/80314213/8620f79a-521e-43fa-a280-ea2239b0c167?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseass
##################################################################################################################################################################################################### 100.0%
==> Installing python@3.13 dependency: lzip
Error: Your Xcode (10.1) at /Applications/Xcode.app is too outdated.
Please update to Xcode 13.2.1 (or delete it).
Xcode can be updated from the App Store.

Error: Xcode alone is not sufficient on Big Sur.
Install the Command Line Tools:
  xcode-select --install

はい、エラー(x2)です。各個撃破していきます。

まずはXcodeから。

言われたとおりXcodeをバージョンアップしたいのですが、残念ながら古くなったXcode 13.2.1はApp Storeからはもう取得できないようなのでAppleのDeveloperサイトダウンロードページから該当バージョンのものを探してインストールする必要があります。

巨大なファイル(10.01 GB)なのでダウンロードも解凍もすごく時間がかかります。気長に作業しましょう。

次は指示どおりコマンドラインツールを実行してインストールします。

mba:~$ xcode-select --install
xcode-select: note: install requested for command line developer tools

ここまで完了したらPython3インストールをリトライします。

mba:~$ brew install python3
Error: You have not agreed to the Xcode license. Please resolve this by running:
  sudo xcodebuild -license accept

おっと、またエラーです。

指示通り先ほどインストールしたXcode 13.2.1のライセンスのアクセプトを完了させます。

mba:~$ sudo xcodebuild -license accept
Password:●●●●●●

気を取り直してPython3インストールを再リトライします。

mba:~$ brew install python3
==> Downloading https://formulae.brew.sh/api/formula.jws.json
==> Downloading https://formulae.brew.sh/api/cask.jws.json
python@3.13 3.7.5 is already installed but outdated (so it will be upgraded).
Warning: You are using macOS 11.
We (and Apple) do not provide support for this old version.

This is a Tier 3 configuration:
  https://docs.brew.sh/Support-Tiers#tier-3
Do not report any issues to Homebrew/* repositories!
Read the above document instead before opening any issues or PRs.

==> Fetching dependencies for python@3.13: mpdecimal, ca-certificates, openssl@3, readline, sqlite, xz, pkgconf, lzip and expat
==> Fetching mpdecimal
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c537a72ca9e5af8a2922b2f0b8083b543582c9cb/Formula/m/mpdecimal.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-4.0.1.tar.gz
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/de81d45d656755dc758aa95bb88e99cc95bd3c0bbc7c3fc6c852576f4e5b01cc--mpdecimal-4.0.1.tar.gz
==> Fetching ca-certificates
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/manifests/2025-02-25
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/6c1debb525d4dc6007afae4cd2b772105111632b22fc28506550f6dfe27c6d52--ca-certificates-2025-02-25.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/blobs/sha256:8f46fb05f753f80f2bc398c0a24b10d680bd77d496e2b931de0b61998e37aebc
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/50c52ec06796c09a75e7a9484e6db3205765a935a486322e3795612fd23b405e--ca-certificates--2025-02-25.all.bottle.tar.gz
==> Fetching openssl@3
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c537a72ca9e5af8a2922b2f0b8083b543582c9cb/Formula/o/openssl@3.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://github.com/openssl/openssl/releases/download/openssl-3.5.0/openssl-3.5.0.tar.gz
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/7671fc790a3b588e6d502fc00d334cdb86d8c677cf4358323cc3e7648cf4241d--openssl-3.5.0.tar.gz
==> Fetching readline
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c537a72ca9e5af8a2922b2f0b8083b543582c9cb/Formula/r/readline.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-001
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/8f4cd1b000569d71bbb49566dc53fa3774e04f9f8829402ea2ee8283d0fe04a1--readline82-001
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-002
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/0d6e5043bc5aef4dc90cfc70625aeb16e7ac3f0b921750ff655b29bccfedfbea--readline82-002
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-003
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/02b4ff2dcede6771ffd73279413faa777ba4682446ba6a79bb9e8a71d8b03caf--readline82-003
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-004
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/fc9301ab2f04d3aeda625c18007a69fb1ab37a4d45813bd9baec7745a78c6ab9--readline82-004
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-005
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/00a0b8f3cb3bafa66c11534e34123ae5b53eb2653015f60b2266be17cba95ea1--readline82-005
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-006
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/b4e6cfe4609276d4eda1987b1b83e2cf22ec013baf9c8c95eac7c3fcf295a750--readline82-006
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-007
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/323518491bffe6a24bbe7d91c888eff86cf90d6803bc77bda99b165cf6218d18--readline82-007
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-008
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/626d12f6255507a2d06a29e60b09ac0005a8a7c22dabfa04a456e4e293713bb0--readline82-008
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-009
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/25c999bb7a8df4cd2037958483901f2a595e1a2c0668cbc033ddb3e251df8223--readline82-009
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-010
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/ca913fa24988bb1f278b2de32d3a830f2ff79564944e19c214c2f3492ba549a4--readline82-010
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-011
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/1d69210897bc6b911e6fe25cb19e7073b36d121100fe19528fae9490fad05013--readline82-011
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-012
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/9ad62b844fe8cfb5f3fa6c425fb9f4e78a471a172e5973be7dea349d8bfe1c33--readline82-012
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2-patches/readline82-013
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/ba00d79322014c18925b3ca3e306d0c37acbff6e2ceb199e2a752c468f8da54f--readline82-013
==> Downloading https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/36ad701a297ee809015add3ddd50c365157d54017e6bec9668d61b0b3382daf3--readline-8.2.tar.gz
==> Fetching sqlite
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c537a72ca9e5af8a2922b2f0b8083b543582c9cb/Formula/s/sqlite.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://www.sqlite.org/2025/sqlite-autoconf-3490200.tar.gz
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/eea37f6ef8bb993e015a4d0e0aca0a4c859e99deccb58f8f8e36f27a383f76f7--sqlite-autoconf-3490200.tar.gz
==> Fetching xz
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c537a72ca9e5af8a2922b2f0b8083b543582c9cb/Formula/x/xz.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://github.com/tukaani-project/xz/releases/download/v5.8.1/xz-5.8.1.tar.gz
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/f716b14a72b232f1726d651f8710fc1286738f58673b8a8ed70c34674e0a06e2--xz-5.8.1.tar.gz
==> Fetching pkgconf
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c537a72ca9e5af8a2922b2f0b8083b543582c9cb/Formula/p/pkgconf.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://distfiles.ariadne.space/pkgconf/pkgconf-2.4.3.tar.xz
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/d4f63c2624e72b785c96c8ab998eff9dbad8f874a1edbead950eb7ba67875384--pkgconf-2.4.3.tar.xz
==> Fetching lzip
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c537a72ca9e5af8a2922b2f0b8083b543582c9cb/Formula/l/lzip.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://download-mirror.savannah.gnu.org/releases/lzip/lzip-1.25.tar.gz
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/01b3ba1475fe67700ae14a0a2841dd12eafcf0f4296a050a1d6ba20ca31f7ffd--lzip-1.25.tar.gz
==> Fetching expat
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c537a72ca9e5af8a2922b2f0b8083b543582c9cb/Formula/e/expat.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://github.com/libexpat/libexpat/releases/download/R_2_7_1/expat-2.7.1.tar.lz
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/a40a44a47be31067cd2e8504e0e38e3c6316275564e12eec602fb8e4c79110f3--expat-2.7.1.tar.lz
==> Installing python@3.13 dependency: lzip
==> ./configure CXX=clang++ CXXFLAGS=
==> make check
==> make install
🍺  /usr/local/Cellar/lzip/1.25: 11 files, 233.6KB, built in 1 minute 14 seconds
==> Fetching dependencies for python@3.13: mpdecimal, openssl@3, readline, sqlite, xz, pkgconf and expat
==> Fetching python@3.13
==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-core/c537a72ca9e5af8a2922b2f0b8083b543582c9cb/Formula/p/python@3.13.rb
##################################################################################################################################################################################################### 100.0%
==> Downloading https://raw.githubusercontent.com/Homebrew/formula-patches/8b5bcbb262d1ea4e572bba55043bf7d2341a6821/python/3.13-sysconfig.diff
##################################################################################################################################################################################################### 100.0%
==> Downloading https://files.pythonhosted.org/packages/69/59/b6fc2188dfc7ea4f936cd12b49d707f66a1cb7a1d2c16172963534db741b/flit_core-3.12.0.tar.gz
##################################################################################################################################################################################################### 100.0%
==> Downloading https://files.pythonhosted.org/packages/70/53/b309b4a497b09655cb7e07088966881a57d082f48ac3cb54ea729fd2c6cf/pip-25.0.1.tar.gz
##################################################################################################################################################################################################### 100.0%
==> Downloading https://files.pythonhosted.org/packages/a9/5a/0db4da3bc908df06e5efae42b44e75c81dd52716e10192ff36d0c1c8e379/setuptools-78.1.0.tar.gz
##################################################################################################################################################################################################### 100.0%
==> Downloading https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz
##################################################################################################################################################################################################### 100.0%
==> Downloading https://www.python.org/ftp/python/3.13.3/Python-3.13.3.tgz
##################################################################################################################################################################################################### 100.0%
==> Upgrading python3
  -> 3.13.3
==> Installing dependencies for python@3.13: pkgconf, mpdecimal, ca-certificates, openssl@3, readline, sqlite, xz and expat
==> Installing python@3.13 dependency: pkgconf
==> ./configure --disable-silent-rules --with-pkg-config-dir=/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/pkgconfig:/usr/local/Homebrew/Library/Homebrew/os/mac/pkgconfig/11 --with-system-i
==> make
==> make install
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/pkg-config
Target /usr/local/bin/pkg-config
is a symlink belonging to pkg-config. You can unlink it:
  brew unlink pkg-config

To force the link and overwrite all conflicting files:
  brew link --overwrite pkgconf

To list all files that would be deleted:
  brew link --overwrite pkgconf --dry-run

Possible conflicting files are:
/usr/local/bin/pkg-config -> /usr/local/Cellar/pkg-config/0.28/bin/pkg-config
/usr/local/share/aclocal/pkg.m4 -> /usr/local/Cellar/pkg-config/0.28/share/aclocal/pkg.m4
/usr/local/share/man/man1/pkg-config.1 -> /usr/local/Cellar/pkg-config/0.28/share/man/man1/pkg-config.1
==> Summary
🍺  /usr/local/Cellar/pkgconf/2.4.3: 27 files, 424.5KB, built in 1 minute 26 seconds
==> Installing python@3.13 dependency: mpdecimal
==> ./configure
==> make
==> make install
🍺  /usr/local/Cellar/mpdecimal/4.0.1: 22 files, 631.1KB, built in 1 minute 4 seconds
==> Installing python@3.13 dependency: ca-certificates
==> Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/manifests/2025-02-25
Already downloaded: /Users/xxxxxxxxx/Library/Caches/Homebrew/downloads/6c1debb525d4dc6007afae4cd2b772105111632b22fc28506550f6dfe27c6d52--ca-certificates-2025-02-25.bottle_manifest.json
==> Pouring ca-certificates--2025-02-25.all.bottle.tar.gz
==> Regenerating CA certificate bundle from keychain, this may take a while...
🍺  /usr/local/Cellar/ca-certificates/2025-02-25: 4 files, 235.9KB
==> Installing python@3.13 dependency: openssl@3
==> perl ./Configure --prefix=/usr/local/Cellar/openssl@3/3.5.0 --openssldir=/usr/local/etc/openssl@3 --libdir=lib no-ssl3 no-ssl3-method no-zlib darwin64-x86_64-cc enable-ec_nistp_64_gcc_128
==> make
==> make install MANDIR=/usr/local/Cellar/openssl@3/3.5.0/share/man MANSUFFIX=ssl
==> make HARNESS_JOBS=4 test TESTS=-test_afalg
==> Downloading https://formulae.brew.sh/api/formula.jws.json
🍺  /usr/local/Cellar/openssl@3/3.5.0: 7,554 files, 36MB, built in 24 minutes 6 seconds
==> Installing python@3.13 dependency: readline
==> Patching
==> Applying readline82-001
==> Applying readline82-002
==> Applying readline82-003
==> Applying readline82-004
==> Applying readline82-005
==> Applying readline82-006
==> Applying readline82-007
==> Applying readline82-008
==> Applying readline82-009
==> Applying readline82-010
==> Applying readline82-011
==> Applying readline82-012
==> Applying readline82-013
==> ./configure --with-curses
==> make install SHLIB_LIBS=-lcurses
🍺  /usr/local/Cellar/readline/8.2.13: 51 files, 1.7MB, built in 1 minute 3 seconds
==> Installing python@3.13 dependency: sqlite
==> ./configure --enable-readline --disable-editline --enable-session --with-readline-cflags=-I/usr/local/opt/readline/include --with-readline-ldflags=-L/usr/local/opt/readline/lib -lreadline
==> make install
🍺  /usr/local/Cellar/sqlite/3.49.2: 13 files, 4.7MB, built in 1 minute 41 seconds
==> Installing python@3.13 dependency: xz
==> ./configure --disable-silent-rules --disable-nls
==> make check
==> make install
🍺  /usr/local/Cellar/xz/5.8.1: 96 files, 2.5MB, built in 1 minute 59 seconds
==> Installing python@3.13 dependency: expat
==> ./configure --mandir=/usr/local/Cellar/expat/2.7.1/share/man
==> make install
🍺  /usr/local/Cellar/expat/2.7.1: 23 files, 660.9KB, built in 53 seconds
==> Installing python@3.13
==> Patching
==> Applying 3.13-sysconfig.diff
==> ./configure --enable-ipv6 --datarootdir=/usr/local/Cellar/python@3.13/3.13.3/share --datadir=/usr/local/Cellar/python@3.13/3.13.3/share --without-ensurepip --enable-loadable-sqlite-extensions --with-o
==> make
==> make install PYTHONAPPSDIR=/usr/local/Cellar/python@3.13/3.13.3
==> make frameworkinstallextras PYTHONAPPSDIR=/usr/local/Cellar/python@3.13/3.13.3/share/python@3.13
==> /usr/local/Cellar/python@3.13/3.13.3/bin/python3.13 -m venv /private/tmp/pythonA3.13-20250512-34034-8vs88d/Python-3.13.3/whl_build
==> /private/tmp/pythonA3.13-20250512-34034-8vs88d/Python-3.13.3/whl_build/bin/pip3 install -v --no-binary :all: --no-index .
==> /private/tmp/pythonA3.13-20250512-34034-8vs88d/Python-3.13.3/whl_build/bin/pip3 install -v --no-binary :all: --no-index .
==> /private/tmp/pythonA3.13-20250512-34034-8vs88d/Python-3.13.3/whl_build/bin/pip3 install -v --no-binary :all: --no-index .
==> /private/tmp/pythonA3.13-20250512-34034-8vs88d/Python-3.13.3/whl_build/bin/pip3 wheel -v --no-binary :all: --no-index --wheel-dir=/usr/local/Cellar/python@3.13/3.13.3/libexec .
==> /private/tmp/pythonA3.13-20250512-34034-8vs88d/Python-3.13.3/whl_build/bin/pip3 wheel -v --no-binary :all: --no-index --wheel-dir=/usr/local/Cellar/python@3.13/3.13.3/Frameworks/Python.framework/Versi
==> /usr/local/Cellar/python@3.13/3.13.3/bin/python3.13 -Im ensurepip
==> /usr/local/Cellar/python@3.13/3.13.3/bin/python3.13 -Im pip install -v --no-index --upgrade --isolated --target=/usr/local/Cellar/python@3.13/3.13.3/lib/python3.13/site-packages /usr/local/Cellar/pyth
==> Caveats
Python is installed as
  /usr/local/bin/python3

Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, are installed into
  /usr/local/opt/python@3.13/libexec/bin

See: https://docs.brew.sh/Homebrew-and-Python
==> Summary
🍺  /usr/local/Cellar/python@3.13/3.13.3: 9,261 files, 205.6MB, built in 22 minutes 3 seconds
==> Running `brew cleanup python@3.13`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /usr/local/Cellar/python/3.7.5... (4,009 files, 61.4MB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/python@3.13--flit-core--3.12.0.tar.gz... (52.4KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/python@3.13--patch--e1c2699cf3e39731a19207ed69400a67336cda7767aa08f6f46029f26b1d733b.diff... (1.7KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/python@3.13--pip--25.0.1.tar.gz... (1.9MB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/python@3.13--setuptools--78.1.0.tar.gz... (1.3MB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/python@3.13--wheel--0.45.1.tar.gz... (105KB)
Warning: The following dependents of upgraded formulae are outdated but will not
be upgraded because they are not bottled:
  socat
  putty
==> No outdated dependents to upgrade!
==> Checking for dependents of upgraded formulae...
Disable this behaviour by setting HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> No broken dependents to reinstall!
==> `brew cleanup` has not been run in the last 30 days, running now...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /usr/local/Cellar/pkg-config/0.28... (10 files, 588.4KB)
Removing: /usr/local/Cellar/readline/6.3.8... (46 files, 2MB)
Removing: /usr/local/Cellar/readline/7.0.3_1... (46 files, 1.5MB)
Removing: /usr/local/Cellar/readline/8.0.1... (48 files, 1.5MB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--1ea434957d6ec3a7b61763f1f3552dad0ebdd6754d65888b5cd6d80db3a788a8... (5.6KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--24f587ba46b46ed2b1868ccaf9947504feba154bb8faabd4adaea63ef7e6acb0... (1.2KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--3d9885e692e1998523fd5c61f558cecd2aafd67a07bd3bfe1d7ad5a31777a116... (2.2KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--5911a5b980d7900aabdbee483f86dab7056851e6400efb002776a0a4a1bab6f6... (1.4KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--622ba387dae5c185afb4b9b20634804e5f6c1c6e5e87ebee7c35a8f065114c99... (1.5KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--6c8adf8ed4a2ca629f7fd11301ed6293a6248c9da0c674f86217df715efccbd3... (2.8KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--758e2ec65a0c214cfe6161f5cde3c5af4377c67d820ea01d13de3ca165f67b4c... (2.6KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--79572eeaeb82afdc6869d7ad4cba9d4f519b1218070e17fa90bbecd49bd525ac... (1.7KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--a177edc9d8c9f82e8c19d0630ab351f3fd1b201d655a1ddb5d51c4cee197b26a... (1.7KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--bbf97f1ec40a929edab5aa81998c1e2ef435436c597754916e6a5868f273aff7... (1.2KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--c7b45ff8c0d24d81482e6e0677e81563d13c74241f7b86c4de00d239bc81f5a1... (3.0KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--e0013d907f3a9e6482cc0934de1bd82ee3c3c4fd07a9646aa9899af237544dd7... (1.8KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/readline--patch--e06503822c62f7bc0d9f387d4c78c09e0ce56e53872011363c74786c7cd4c053... (1.1KB)
Removing: /usr/local/Cellar/sqlite/3.30.1... (11 files, 3.9MB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/trivy--0.24.4.tar.gz... (15.4MB)
Removing: /usr/local/Cellar/xz/5.2.4... (92 files, 1MB)
==> Autoremoving 1 unneeded formula:
gdbm
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/portable-ruby-2.6.8.yosemite.bottle.tar.gz... (8.8MB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/pip_cache... (10 files, 3.1MB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/357177b96309c7b84f9b3782b6e005d3106bdc47/Formula/expat.rb... (2.8KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/357177b96309c7b84f9b3782b6e005d3106bdc47/Formula/lzip.rb... (2.0KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/357177b96309c7b84f9b3782b6e005d3106bdc47/Formula/mpdecimal.rb... (2.4KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/357177b96309c7b84f9b3782b6e005d3106bdc47/Formula/openssl@3.rb... (7.3KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/357177b96309c7b84f9b3782b6e005d3106bdc47/Formula/pkgconf.rb... (3.8KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/357177b96309c7b84f9b3782b6e005d3106bdc47/Formula/readline.rb... (5KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/357177b96309c7b84f9b3782b6e005d3106bdc47/Formula/sqlite.rb... (3.2KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/357177b96309c7b84f9b3782b6e005d3106bdc47/Formula/xz.rb... (2.4KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/expat.rb... (2.8KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/lzip.rb... (2.0KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/mpdecimal.rb... (2.4KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/openssl@3.rb... (7.3KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/pkgconf.rb... (3.8KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/readline.rb... (5KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/sqlite.rb... (3.2KB)
Removing: /Users/xxxxxxxxx/Library/Caches/Homebrew/api-source/Homebrew/homebrew-core/c5976bed6c1703d4233a97d117934eaf0750274b/Formula/xz.rb... (2.4KB)
Removing: /Users/xxxxxxxxx/Library/Logs/Homebrew/trivy... (120B)
Removing: /usr/local/lib/python3.7/site-packages/__pycache__/easy_install.cpython-37.pyc... (283B)
Removing: /usr/local/lib/python3.7/site-packages/__pycache__/sitecustomize.cpython-37.pyc... (1.4KB)
Removing: /usr/local/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc... (26KB)
Pruned 4 symbolic links and 57 directories from /usr/local
==> Caveats
==> python@3.13
Python is installed as
  /usr/local/bin/python3

Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, are installed into
  /usr/local/opt/python@3.13/libexec/bin

See: https://docs.brew.sh/Homebrew-and-Python

やっと成功したようです。

内容を確認してみます。

mba:~$ brew info python
==> python@3.13: stable 3.13.3
Interpreted, interactive, object-oriented programming language
https://www.python.org/
Installed
/usr/local/Cellar/python@3.13/3.13.3 (9,261 files, 205.6MB) *
  Built from source on 2025-05-12 at 00:44:04
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/p/python@3.13.rb
License: Python-2.0
==> Dependencies
Build: pkgconf ✔
Required: mpdecimal ✔, openssl@3 ✔, sqlite ✔, xz ✔, expat ✔
==> Caveats
Python is installed as
  /usr/local/bin/python3

Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, are installed into
  /usr/local/opt/python@3.13/libexec/bin

See: https://docs.brew.sh/Homebrew-and-Python
==> Analytics
install: 281,199 (30 days), 795,137 (90 days), 1,961,168 (365 days)
install-on-request: 101,394 (30 days), 280,367 (90 days), 555,344 (365 days)
build-error: 607 (30 days)

大丈夫そうですね。

最後にパスを通せば完了です。

mba:~$ vi ~/.bash_profile
--
### for Python
export PATH="/usr/local/bin/python3:$PATH"
export PATH="/usr/local/opt/python@3.13/libexec/bin:$PATH"

最新の設定を読み込ませます。

mba:~$ source ~/.bash_profile

これでPython3が使える状態になりました。

mba:~$ python --version
Python 3.13.3

AWS認定の再認定後の有効期限に関する豆知識

現状のAWS認定資格の有効期限は取得から3年間ですが、数年単位で時間が空くと毎回調べたことを忘れてしまいますので、次回から調べなくても良いよう今回調べた内容を書き留めておきます。

疑問

AWS再認定時の疑問ズバリそれは、再認定時に更新される認定期間についてです。

  1. 再認定の対象となる現認定資格の満了時から3年間
  2. 再認定受験して合格した日から3年間

いつも、どっちだっけ?と調べているような気がします。

結論

正解は【 2. 再認定受験して合格した日から3年間 】です。

根拠

再認定の公式サイトに以下のように記載されています。

AWS による認定は、取得した日から 3 年間有効となります。

確かにAWS認定アカウントの画面で確認してみたらそうなってますね。

例:AWS Certified DevOps Engineer - Professional

2020-11-29:初回取得

↕ 認定期間 #1

2023-11-11:再認定取得

↕ 認定期間 #2

2026-11-11:有効期限

参考

今回の調査で参考にした情報です。