ポストモーテムは、開くのは簡単で、役に立つものにするのは難しい会議です。会議が開かれ、ドキュメントが書かれ、アクションアイテムが四つ記録され、そして六か月後に同じ障害がふたたび起きます。そのころ誰かが、まったく別のものを探している最中に、あの古いドキュメントを見つけることになります。 この話題では「非難なし」という言葉にほとんどの注目が集まります。その原則は実際に重要なのですが、失敗が起きているのはそこではありません。非難なしを厳格に守りながら、それでも何ひとつ変わらないレビューを回している組織はいくらでもあります。理由は単純で、レビューそのものを成果物として扱ってしまい、成果物を生み出すための手段として扱わなかったからです。 あな...
ソフトウェアエンジニアリング
ソフトウェアエンジニアリングの原則、ベストプラクティス、アーキテクチャ、コード品質、プロフェッショナルな開発技術に関する記事とリソース。
技術ドキュメントは、いつも決まった、そして予測のつくかたちで失敗します。誰かが二週間ほどの落ち着いた時期に大量に書き上げ、そのあいだにシステムのほうが変わり、誰も更新せず、一年も経てば、その文書は自信たっぷりに間違ったことを述べている状態になります。そこから先は、何もないよりも悪い状態です。書いてあることを信じた読み手が、すでに成り立たなくなった情報にもとづいて手を動かしてしまうからです。 これに対するよくある反応は、もっと書こうという号令です。ところがそれは同じ失敗を早めるだけで終わります。役に立つ反応は、書く量を減らし、そのうえで何を書くのかを選ぶことです。ここでの制約は書く手間ではありません。書いたあとに保守し続ける手間のほう...
開発者のオンボーディングは、たいてい入社手続きや研修が何日で終わったかで測られます。しかしそれは、問題の逆側の端を見ています。本当に意味のある数字は別のところにあります。新しく入ったエンジニアが何かを変更し、そのうえで他のどこも壊していないと自信を持って言えるようになるまでに、どれだけの時間がかかるか。多くのチームでこの数字は、日数ではなく月数で測られてしまっています。 その遅れの原因が本人にあることは、めったにありません。原因は、システムのうちどれだけの部分が他人の頭の中にしか存在していないか、そして最初の二週間のうちどれだけの時間が、それを一回の割り込みごとに少しずつ引き出す作業に費やされるか、という点にあります。 追いかける価...
ソフトウェアテスト戦略は、たいていカバレッジという数字で語られます。しかしカバレッジは、この分野全体のなかで最も情報量の少ない数字です。カバレッジ九十パーセントのコードベースであっても、最もよく使われる経路でバグを本番に送り出すことがあります。カバレッジが測っているのは、テスト実行中にどの行が実行されたかであって、その行について意味のある検証が行われたかどうかではないからです。 自分たちのテストスイートを信頼しているチームは、パーセンテージが最も高いチームではありません。本当に壊れているときにテストが落ち、それ以外のときは静かにしているチームです。そしてこの性質は、お金で買うのがはるかに難しいことが分かっています。 どんなテストにつ...
2026年において、エンタープライズ向けのアプリケーションを構築する際、ソフトウェアライセンスモデルの選択は、創業者が下す意思決定の中で最も商業的な影響を及ぼす決定の一つです。誤った契約形態を選択すると、プロダクトの配信網が狭まったり、SaaSのスケールアップが阻害されたり、予期せず自社のコアとなるプロプライエタリ(商用)コードの全面開示を法的義務として迫られたりするリスクがあります。そのため、自社開発したコアな知的財産権(IP)を守りつつ、運営マージンを健全に維持できるライセンス形態を慎重に選定する必要があります。本ガイドでは、ビジネスソフトウェアのライセンス設計に必要な法的フレームワーク、オープンソースの制約、および商用ライセン...
レガシーPHPアプリケーションは、しばしば十数回も増築された建物のソフトウェア版です。動作しており、ビジネスがそれに依存しているにもかかわらず、誰も手を触れたがりません。古いPHPバージョン、テストの不在、混在した関心事、そして長年積み重なった場当たり的な対応が、あらゆる変更をリスクの高いものにします。良い知らせは、レガシーPHPモダナイゼーションは一括の全面書き直しを必要としないということです。全面書き直しは通常、すべての選択肢の中で最もリスクの高いものです。本ガイドでは、より安全で段階的な道筋を示します。 要点(TL;DR) 全面書き直しは最も魅力的で最も危険な選択肢である。段階的なモダナイゼーションのほうが安全で、価値を早く提...
ソフトウェア開発ライフサイクル(通常SDLC)とは、チームがソフトウェアをアイデアから機能する保守済みプロダクトへと導くために従う構造化されたプロセスです。ソフトウェアを開発する側でも発注する側でも理解が重要で、プロセスの質が結果の品質・コスト・適時性を大きく左右するからです。本ガイドではSDLCをわかりやすく解説します。各フェーズとその内容、AgileとWaterfallの違い、プロジェクトが失敗しやすい箇所、そして優れたプロセスがコストとリスクをどう管理するかをご説明します。 まとめ ソフトウェア開発ライフサイクルとは、ソフトウェアの計画・構築・テスト・展開・保守を行う構造化されたプロセスです 古典的なフェーズは計画、要件定義、...
ソフトウェア開発とは何でしょうか? 最もシンプルに言えば、ソフトウェア開発とは、コンピューター、スマートフォン、サーバー、デバイス上で動作するプログラムを設計・構築・テスト・保守するプロセスです。これはアイデアが動くアプリケーションになる方法です。しかし、この一行の定義には多くのことが隠されており、ソフトウェアを発注するビジネスオーナーや、この分野への参入を検討している方にとって、詳細こそが重要です。このガイドでは、2026年のソフトウェア開発が実際に何を含むのか、主な種類、その背景にある言語と役割、そして仕事がコンセプトからリリースまでどのように進むかを説明します。 要点 ソフトウェア開発は要件を動作可能で保守しやすいソフトウェア...
COBOLからC++への移行は、組織が着手できる最もインパクトの大きなモダナイゼーションプロジェクトの一つであり、同時に最も十分な対応がなされていない分野でもあります。現在も本番環境ではおよそ2,200億行のCOBOLが稼働しています。銀行は何兆ドルもの取引を処理し、政府は年金、税金徴収、医療システムを動かし、航空会社はフライトの予約を行っています。そして毎年、そのコードを保守できる人材が退職に近づいている一方で、後継者はほとんどいません。 何十年もの間、組織はモダナイゼーションの必要性を認識してきました。しかし、コストが高すぎ、リスクが大きすぎ、COBOLシステムは動き続けていました。それが今変わりつつあります。メインフレームのラ...
C++とRustのメモリ安全性に関する議論は、ソフトウェアエンジニアリングにおいて最も活発なトピックの一つとなっています。政府機関が見解を示し、カンファレンスでは専用の講演が行われ、双方に強い意見が存在します。 最初にはっきり言っておきます。Rustは素晴らしい言語です。 所有権モデルと借用チェッカーは真に革新的であり、バグの種類をまるごとコンパイル時に検出します。新しいプロジェクトを始めるにあたり、Rustがチームやエコシステムに適しているなら、それは素晴らしい選択です。 同時に、C++は世界で最もパフォーマンスが求められるソフトウェアの根幹であり続けています。オペレーティングシステムのカーネル、ゲームエンジン、ブラウザ、データ...