Malcolm Groves氏の最近のWebセミナー「Converting a 20-Year-Old Legacy Application to Microservices and Containers(20年前のレガシーアプリケーションをマイクロサービスとコンテナに移植する)」、お客様やテクノロジーパートナー、特にDelphi ParserのOren Aviram氏との多くの議論から、モダナイゼーションに関する簡単な記事を書くことを思いつきました。現在、私たちのコミュニティが直面する最大の課題のひとつは、レガシーアプリケーションのアップグレードを進めることです。病院、大企業、警察、軍事、銀行などで、数多くの基幹システムがDelphiよって構築され、利用され続けています。その多くは古く(時には使いにくく)、しかし確実かつ高速に動作しています。Delphiが使用されていることを秘密にしておく選択をする人も多く、そのアップグレードを実施することには消極的です。

ここ何年も、Delphiで構築されたアプリケーションを、他の言語によって書き直そうとする企業の恐ろしい話をいくつも聞いてきました。そのいくつかは既に共有させていただきましたので、ここでは繰り返しませんが、皆さんも、何百万ドルもの費用をつぎ込んだにもかかわらず、同様の失敗をしたケースを聞いたり、経験しているのではないでしょうか。この結果、こうしたプロジェクトの実施について、より慎重になっています。そして、先に進むのではなく、現状維持に甘んじているのです。現状稼働するアプリケーションを利用し続け、コストをかけることを回避し、さらには、そうしたプロジェクトを組織/管理することを先延ばしにすることは、より簡単な選択でしょう。これは私たちも同様であり、多くのレガシーシステムを抱えています。ボーランド時代の古いテクノロジーが現在も(動作しなくなるまでは)正常に機能しているのです。

しかし、モダナイズを実施するのは「今」です!私たちには、そのためのテクノロジーがあります。代替案はそのメリットが失われつつある一方で、Delphiは健在なのです。

モダナイズのためのテクノロジー

RAD Studioは進化を続けており、日々改良されています。やるべきことは常にありますが、私たちが進歩を続けていることには異論はないと思います。IDEはよりモダンになり、品質は向上しています。卓越したビジュアルフレームワークがあり、Windows向けは特に際立っています。大規模かつ複雑なプロジェクトに関係する重要な領域についてもアップデートを行っています。これは、新しい言語機能を段階的に導入しながら、進化するテクノロジー全体のサポートのために必須となることがらです。

Webに関するテクノロジーは、さらに積極的な進化を進めるべき分野のひとつでしょう。パートナーのエコシステムを通じて、いくつもの堅牢なソリューションが用意されています。Object Pascalを用いたもの、JavaScriptのフレームワークから、仮想化ソリューションまでです。Windows向けに適切に設計されたVCLアプリケーション(ここでは「適切に設計されている」という点が重要です)を、Amazonなどのパートナー/プロバイダーでシームレスに実行できるようにするいくつもの選択肢があります。現在、私たちの製品管理チームでは、WebAssemblyなどによって私たちのビジュアルフレームワークをネイティブ拡張するテクノロジーについて検討を進めています。ぜひ、RAD Studioを最も強力なIDEのひとつとして、注目し続けていただきたいと思います。重要なのは、Delphiのテクノロジーが他の代替案よりも優れているという事実です。

代替案のメリットは多くありません

Delphiは卓越したパフォーマンスを発揮します。特定の状況で他の選択肢の方が高速であるケースもあり得ますが、一般的に見れば、標準のユースケースでは非常に高速です。私たちはそれをあまり強調してきませんでした。Delphiは、CやC++などといった低レベルのコンパイル言語と同等であり、かつ、Javaファミリの言語と同等のでもあります。その書き換えの候補となる言語/プラットフォームは、Javaや.NETですが、どちらも不確実性に直面しています。今日のクラウドへの過大な傾倒は、アーキテクチャとコストの両面で、これらのテクノロジーに多大な影響を与える可能性があります。

.NETのWindowsフォーカスとともに、そのWeb機能は多くのお客様にとって論理的な選択肢のひとつでした。Webサポートは、対応すべき主要な課題のひとつであり、しばしば、.NETアプリは既存のDelphi WindowsアプリのWeb対応版という位置付けになりました。多くのケースではVCLはWindows上の.NETよりもパフォーマンス的に優れています。特に、多くのリソースの処理を必要とする場合には顕著です。現在では、.NETによるWeb対応プロジェクトの数は激減しています。私たちの最近のWeb調査によれば、JavaScriptのフロントエンドが、はるかに好まれているという結果になっています。このことは、サーバーのコアとしてDelphiは依然健在であるということです。しかし、これには、アーキテクチャの再考と(潜在的に膨大な)コードのクリーンアップが必要です。コストメリットによる分析によって、こうした「再考」が十分に価値があると判断されることは、よいニュースでしょう。DelphiのコアとWindowsクライアントは、引き続き重要であり、アップグレード可能であるとともに、すべきものであると言えます。

比較的新しい選択肢のひとつに、「ローコードソリューション」があります。そのマーケットのブームは、Delphiと全く同じで「生産性」に由来します。ほとんどのローコードソリューションのIDEは、RAD Studioをモデルにしています。私たちはローコードソリューションに注目しており、そのマーケットは急速に拡大し続けると考えています。エンバカデロと同じグループに属するLANSAは、素晴らしい製品を持っています。ローコードソリューションはいくつかのユースケースに最適ですが、一方で制限もあります。RAD StudioそしてDelphiは、その両方の長所を兼ね備えています。開発者は高い生産性を発揮でき、無限の柔軟性を備えたアーキテクチャの高性能アプリケーションを提供ですることができます。Delphiの開発者の人口は、他の一般的な言語よりも少ないかもしれませんが、ローコードソリューションのプラットフォームは、一般的にもっと少ない開発者人口です。実際、Delphiコミュニティは、これらのローコードソリューションのエコシステムと比較して、巨大です。

Delphiは健在

現在のDelphiコミュニティを見れば、強力で活気に満ち、成長しており、多くの興味深いプロジェクトがあることがわかります。Delphiの「ルック&フィール」はよりモダンで、Delphiをより活性化する多くのイニシアチブがあります。

  1. Embarcadero Academy: さまざまなクラスによって専門的な学習機会を提供しています。
  2. Community Edition: 学習、趣味、または非営利目的で使用するDelphiの無料バージョン。過去12ヶ月で、10万回以上ダウンロードされています。
  3. LearnDelphi.org: 最近オープンしたこのサイトは、アカデミックラーニングを対象としており、クラスルーム、あるいはクラスルーム外でのDelphi教育のための無料の学習リソースを簡単に探せるようにすることを目的としています。

こうした取り組みには時間がかかります。現実には、他の一般的な言語と比較するとDelphi開発者の人口が少ないため、大規模なDelphiプロジェクトを実施しようとすると、それが大きな制約になる可能性があります。多くの企業には、Delphi開発者の小さな「忍者」チームがいますが、それを拡大する方法を持っていません。むしろ、翌日には40人の開発者候補が集められると分かっているので、20人のC#開発者に開発を依頼するべく外注業者に当たった方が簡単でしょう。これを解決する魔法の弾丸はありません。ただ、少なくともDelphiを採用した場合、通常20人の開発者は必要なく、5人で済むのです。これは大きな違いです。

解決策の1つは、バランスの取れた開発者を採用し、Delphiを学習させることです。最近、中規模のDelphi ISVのオーナーと話をする機会がありました。Delphi経験のない6人の開発者を採用したところ、2ヶ月以内に生産性の向上が見られたとのことです。Embarcadero Academyと社内トレーニングを組み合わせて利用したそうです。彼のチームでは、非常に洗練されたプロジェクトを構築しています。他の言語やフレームワークを習得し、優れた開発者になれたという経験を持つ人であれば、Delphiが強力かつ開発者にとって楽しい言語であるという理由もあって、すぐにマスターできるようです。

アップグレードプロジェクトにはより大きなハードルがあるため、より専門的なトレーニングが必要です。Delphi ParserのOren氏は、「100万行のコードを最新バージョンに移行するには特別なスキルが必要です。それはすべての人が適任というわけではないのです」と言っています。エンバカデロのテクノロジーパートナーやMVPと協力して、より多くの成功事例やガイドを、皆様んにご案内していこうと考えています。

主任ソフトウェアコンサルタントを務めるAl Mannarino氏は、「アップグレードはそれほど難しい作業ではなく、単に時間がかかるだけです。大量のタスクを自動化するツールを用い、コードのクリーンアップを実行すれば、将来性を備えたよりよい成果が得られます」と言っています。永いことメンテナンスされていないプロジェクトがある場合には、最新バージョンにアップデートする以外に、コードのクリーンアップとメンテナンスが必要になります。プロジェクトを将来的にわたって保証し、技術的な債務を最小限に抑える最適な方法は、プロジェクトを常に最新の状態に維持することです。バージョンを1つないしは2つ以上遅れる状態にしないことです。

モダナイズへの道程

その道は、お客様ごとに異なるでしょう。その労力を小さく見積過ぎないことが重要です。そのかわり、代替案との比較という観点を加えてください。もし、モダナイズという選択肢が代替案よりも優れており、より低コストであるということを完全に理解できているなら、その決定は簡単です。その投資対効果は絶大であるということは、すでに保証されています。Delphiのエキスパートは、賢明なDelphi開発者であれば、UXのアップデート、アーキテクチャのクリーンアップ、マイクロサービスの導入に備えるべきであると語っています。こうした作業は、継続的に行うことができ、実際そうすべきです。オーストラリアのCode Partners、ハンガリーのKER-Soft Kft、イタリアのBitTimeなど、多くのエキスパートがおり、Delphiアプリケーションのモダナイズに取り組み、将来に備えた方法論を開発してきました。Marco Cantuは、これについてもいいブログ記事「Application Architecture Modernization with 10.3(10.3によるアプリケーションアーキテクチャのモダナイズ)」を書いています。 10.3はすばらしいバージョンであり、いくつもの重要なアップデートが含まれています。特に、10.3.2はこれまでで最大のポイントリリースであり、開発環境をすべてのアップデートで段階的に開発していくというビジョンに沿ったものです。ぜひ、もっとすばらしいDelphiアプリケーションを世の中に送り出しましょう。今がまさにその時です!

この記事は、Atanas PopovによるThe Time to Modernize Is NOW!の抄訳です。

Anonymous