![developerstv23junblog | Embarcadero RAD Studio Delphi C++Builder Blogs developers tv 23jun blog](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2023/07/developers-tv-23jun-blog-4697988.png?resize=1140%2C694&ssl=1)
2023年6月23日に配信されたYouTubeライブ「エンバカデロ・デベロッパーTV」では、「Delphi / C++Builder マイグレーションの新常識」と題して、旧バージョンで作成されたDelphi / C++Builderアプリケーションの移行に関する話題をお届けしました。
ここ10年ぐらい「マイグレーションプロジェクト」が数多く実施されていますが、さまざまな環境の変化によって、従来は「定番」の手法と言われていたものが、今は通用しなくなっていたり、むしろ回避したほうがいい、という方法だったりするようになってきました。そこで、この番組では、そういった通用しなくなった手法と、それに代わる新しい手法を紹介しました。
Table of Contents
「旧プロジェクトのフォームを移行先でもそのまま再利用する」は誤り
古いUIをそのまま再利用することは、マイグレーション工数を削減する手段かもしれません。しかし、旧プロジェクトを作成した当時と比較して、画面解像度も変わり、UX標準が大きく変化している状況で、OS標準からも逸脱していく懸念があります。古いUIは、アプリケーションの価値が実際よりも低く見られるという事態を招き、開発者のモチベーションにも影響するのです。
最適なUXを実現することを、マイグレーションのひとつの課題として持つべきでしょう。
「Delphi 2007など一旦途中のバージョンに移行しておくべし」は誤り
かつて、バージョン2007がサポートするOSバージョンが有効であったり、ぎりぎり延長サポートにかかっている状況であれば、最後のANSIバージョンである2007への移行は有効であったかもしれません。しかし現在、2007に安易に移行したとしても、そのバージョンが保証するOSバージョンは存在せず、移行先に意味は持ちません。
OS環境が大きく変化した現在、最新バージョンへと一気に移行する前提で、対応箇所を可能な限りツールを援用して効率的にアップデートしていく方式が推奨されます。
「C++Builderの場合、一旦2007でプロジェクトを保存して最新バージョンに移行すべし」は誤り
同じように、古いC++Builderプロジェクトファイルを最近のバージョンのIDEで開くことができないことから、一旦2007で開く手法が広まっています。
これについては、アル・マナリーノ氏がCodeRageのセッションで言及しており、C++Builderプロジェクトの移行については、プロジェクトのデフォルト設定が異なるために予期せぬエラーを誘発しないために、新規プロジェクトを作成して、旧プロジェクトに含まれる既存のフォームを追加していく方法を推奨しています。
C++コンパイラについては、さまざまな変更が随時施されており、プロジェクトのデフォルト設定も変化しています。コンパイラオプションの設定などにより、潜在的な問題を引き起こさないためにも、この手法が推奨されるとのことです。
詳細は、こちらのビデオをご覧ください。
そのほかの新常識
番組では、このほかにも、いくつかの旧常識を採り上げ、その問題点と新しい手法について解説しています。
- 「BDEやADOをそのまま使い続ければシンプルに移行できる」は誤り
- 「カスタムコンポーネントは最新バージョンでビルドできるように移行すべし」は誤り
- 「現在は64bit OSがほとんどなので移行先のアプリケーションは64bit対応しなければならない」は誤り
マイグレーションプロジェクトは、しばしば「移行作業」と捉えがちです。しかし、そこで移行したシステムは、今後何年にもわたって利用され続け、さまざまな追加要求に応えながら、保守していく必要があります。
そのため、「移行できればよい」という点の発想ではなく、「移行してどのように活用していくか」という時系列での発想に切り替えるべきなのです。
番組の録画ビデオは、こちらからご覧いただけます。
エンバカデロ・デベロッパーTVは、毎月月末火曜日の17時からYouTubeでライブ配信しています。
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition