健全なソフトウェア設計の第一歩! 既存のPHPソースコードからクラス図を自動生成しよう
PHPカンファレンス実行委員プレゼンツ PHPの最前線 第5回
PHPに関する日本最大のカンファレンスである「PHPカンファレンス2024」が2024年12月22日(日)に開催されます。カンファレンス盛り上げ企画として、開催までの5カ月間にわたりPHPの技術記事の連載を企画しました。この記事をお読みの皆さんには、PHPのさまざまな技術に触れながらカンファレンス当日を楽しみにしていただければと思います。第5回目の今回は、オープンソースのツールである「PlantUML」「php-class-diagram」を使って、既存のPHPのソースコードからソフトウェア設計の把握や改善に役立つクラス図を自動生成する方法を紹介します。
複雑なシステムの課題
PHPは伝統的に、シンプルなWebサイトを迅速に立ち上げるためのツールとして威力を発揮してきました。
迅速に立ち上げられたシステムも、機能追加を繰り返しながら運用を続けていると、プログラムが複雑化して修正や機能追加を行うのが難しくて危険な作業になります。いわゆるレガシーコード化した状態です。レガシーコードの維持は時間が経つにつれて難しくなります。
また、複雑な業務の問題をPHPで解決する場面では、開発の初期段階から複雑なプログラムを作成し維持し続ける必要があります。
複雑なシステムをより上手く維持していくために必要なソフトウェア設計の第一歩は、まず現在のソースコードの構造を可視化することです。これにより、改善のためのアイデアが見つかるかもしれません。
幸いなことに、PHPの型宣言の進化によって、ソースコードに型情報が含まれるようになったことでソースコードの表現力が向上しています。これにより、ツールを使ってソースコードを静的解析する上で以前より有利な状況が整っています。
PHPの型宣言の進化
それでは実際、PHPの型宣言はどのように進化してきたのでしょうか。
動的型付けの言語は、型を定義する必要がなく早い段階でプログラムを実行できるという利点がありますが、その一方で実行してみないと変数などの型に関する間違いに気がつくことができないという欠点があります。かつてのPHP(PHP4以前)は他の動的型付け言語と同様に、クラスのプロパティやメソッドに型を指定する方法がありませんでした。
PHP 5.0.0から、タイプヒンティングの導入により、関数の引数にクラス名やインターフェース名、selfを指定できるようになりました。それ以降、バージョンが上がるごとに指定可能な型や型を定義できる箇所が拡張されてきました。
PHPマニュアルの型宣言のページを参照すると、最近でも型宣言に関する機能が増え続けていることが確認できます。
PHP8では、より柔軟かつ詳細な型指定が可能になり、またIDEのサポートも進化したことで、型を指定することにより安全なプログラミングが可能になりました。今どきのPHPのソースコードには、型についての情報が豊富に含まれていると言えます。
現在のPHPは、言語そのものの機能や周辺のエコシステムによって、現代の複雑な要件のシステム開発において十分威力を発揮できる言語に進化しているのです。
この記事は参考になりましたか?
- PHPカンファレンス実行委員プレゼンツ PHPの最前線連載記事一覧
-
- 健全なソフトウェア設計の第一歩! 既存のPHPソースコードからクラス図を自動生成しよう
- PHPパッケージ管理ツール「Composer」の処理の仕組みを見てみよう!
- PHPで並行処理をやってみよう!「Phluxor」で学ぶアクターモデル入門
- この記事の著者
-
しめじ(smeghead)(シメジ)
ソフトウェア設計に興味を持ちつつ、日々レガシーコードの改善を続けているプログラマーです。携わっている主なOSSプロジェクトは、php-class-diagramとphel-langです。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
