はじめに
1988年に開発ツールビジネスに乗り出して、30周年を迎えたグレープシティ。同社が今回「GrapeCity ECHO Tokyo 2018」のテーマとして取り上げたのが、これまで長きにわたりWindowsアプリケーション開発の世界を支えてきた技術「.NET」である。本稿では「.NET Core」の登場以来、クロスプラットフォーム基盤技術として大きな進化を遂げている.NET技術の最新動向を解説した、当日のセッションの模様をレポートしたい。
最新の「.NET Core 3.0」ではWPF、Windows Formsをサポート
「GrapeCity ECHO Tokyo 2018」のイベントの幕を切って落とす、最初の講演には日本マイクロソフトの井上章氏が登場。「.NETの今 ~最新アップデートと2019年の展望」と題し、日本時間2018年12月5日に米国で開催された開発者向けのオンラインイベント「Microsoft Connect(); 2018」での発表内容なども交えながら、.NETにまつわる最新情報を紹介した。
「今日、開発されるアプリケーションのターゲットは、Windowsのデスクトップ環境に加え、iOSやAndroidをプラットフォームとするスマートフォンやタブレットといったモバイル環境で利用されるデバイス、さらに最近ではスマートスピーカーやAR・VR・MRといった領域にも広がってきています。これに対しマイクロソフトでは、『.NET Everywhere』を掲げ、あらゆるデバイス、プラットフォームで動作する.NETの実現を目指しています」と井上氏は切り出す。
そうした取り組みの中核に位置づけられるのが、2014年11月に発表された.NET Coreである。周知の通り.NET Coreにおいてはオープンソース化が図られ、WindowsのみならずLinuxやmacOSでも動作するクロスプラットフォームな基盤へと進化を遂げている。「Microsoft Connect(); 2018」では、その最新版となる「.NET Core 3.0」のリリースがアナウンスされた。この最新版でとりわけ注目したいのは、WPF(Windows Presentation Foundation)およびWindows Formsのアプリケーションを.NET Coreベースで開発し、動作させることが可能となっている点だ。
「もっとも、現段階ではターゲットとなるプラットフォームがWindowsに限られる制約はありますが、.NET CoreならではのメリットをWPFおよびWindows Formsのアプリケーションの開発・運用においても享受できるようになったことは開発者の皆さまにとって朗報と言えるでしょう」と井上氏は語る。具体的には、アプリケーションの動作に必要なランタイムやライブラリを、完全にサイドバイサイドでひも付けてインストールし実行できる点、あるいはそれらライブラリ群を自己完結型のEXEフォーマットとして動作させることができる点などがメリットとしてあげられる。
また、今回の.NET Core 3.0の登場を機に、WPFやWindows Forms、Windows UIのライブラリがオープンソース化されたことも意義深い。「個人的な思いではありますが、オープンソースのコミュニティに参加する世界中の優秀なエンジニアの貢献によってWPFやWindows Formsのアプリケーションが、そのままmacOSやLinuxの上で動く……そんな世界の実現に向けた可能性も広がってくるのではないかと考えています」と井上氏は語る。
また、こうした.NET Coreにかかわる取り組みと並行して、マイクロソフトにおいて推進されているのが、.NETプラットフォームで統一化されたAPI仕様「.NET Standard」の策定である。具体的には、.NET Frameworkと.NET Core、そしてiOSやAndroidといったモバイルプラットフォーム・デバイス向けのXamarinなど、各.NET環境間で共通のBCL(基本クラスライブラリ)のAPIセットの標準定義を行う。それによって、それぞれの環境で共有可能なライブラリの生成を実現しようというのが.NET Standardのねらいだ。現在、「.NET Standard 2.0」が公開されている。
「マイクロソフトでは今後も、オンプレミスのアプリケーションのクラウド移行から、クラウド上での最適化、さらにはクラウドネイティブな環境の実現に至る一連のプロセスを.NETによってトータルにサポートしていくことになります」と井上氏は強調する。
広範なプラットフォームの想定でアプリケーションの可能性が広がる
続く2つ目のセッションにはマイクロソフト開発技術を得意とするフリーランスエンジニアである森博之氏が登壇。「.NET開発者は、なぜクロスプラットフォームに取り組むべきか」と題し、.NET技術にかかわる変革が進む中でソフトウェア開発者は、どのようなスタイルで、どういったツールを活用して開発を進めていくべきかをテーマに、特にマルチプラットフォーム開発にフォーカスするかたちで解説を行った。
.NET Coreが登場して、はや4年。先頃行われた「Microsoft Connect(); 2018」では、.NET Core 3.0のリリースもアナウンスされている。マイクロソフトでは今後この.NET Coreに対し、新たな技術や機能を積極的に実装していく旨を表明している。「新しい技術は、従来の技術に不足していた機能を補完し、内在していた問題を解消したものにほかなりません。特に今日では、プレビュープログラムなどを通じて念入りにブラッシュアップされているために、リリース時点から品質が担保されているというのが一般的。従来のように『枯れる』のを待つことなく、いち早く最新の技術を取り入れていくことが肝要かと思います」と森氏は語る。
特に.NET Coreでは、Windowsに固執することなく、開発者がmacOSやLinuxといった、より広範なプラットフォームを想定してソフトウェア開発に取り組んでいけるオープンな環境が用意されている。開発できるアプリケーションの選択肢そのものが、大きく広がっているわけだ。
「とはいえ、クロスプラットフォーム開発と口では言っても、開発プロセスの複雑さが増大する懸念など、開発者にとっては心理的に高いハードルが存在するのも事実。そこで重要となるのが、いかに最適な開発手法やツールを選択するかということです」と森氏は話す。
例えばソースコード管理ツールでは、オープンソースコミュニティにおける開発において、すでにデファクトスタンダードの地位を獲得している「Git」。さまざまなクラウド基盤サービスにおいても、その利用が前提になっているケースは多い。
Gitの活用においては、feature、develop、release、masterといったブランチを適宜作成してソースコードを適正に管理していくことが重要なカギとなるが、Gitでは「Git-Flow」というブランチモデルが用意されている。
これに関し、Visual StudioやVisual Studio Codeといったツールでは、Git-Flowのモデルに沿ったブランチの運用を支援するための拡張機能が提供されている。「例えば、developブランチからfeatureブランチを派生させて作成した成果物を、developブランチに再びマージする際に問題が発生しないよう、関係者によるレビューを実施するというプロセスを介在させるといったルールの設定も可能です」と森氏は紹介する。
このようにGitとしかるべき開発ツールを組み合わせることで、クロスプラットフォーム開発などチーム開発において複雑化しがちなソースコード管理を円滑に行うことができるのだ。
ビルドパイプラインの作成をツールの活用によってシンプル化
また、CI/CD(継続的インテグレーション、継続的デリバリ)の適用は、DevOpsの実践において重要な要件となる、俊敏な開発、生産性の向上の実現を目指す上で不可欠なものだ。ただし、そのメリットとは裏腹に、ビルドのパイプラインの作成などに関する作業負荷が高いという問題がある。「これについても、適切なツールを活用することで、問題をクリアすることができます。ここで特に紹介したいのが、マイクロソフトが提供している『Azure DevOps』です」と森氏は語る。
Azure DevOpsは、従来「Visual Studio Team Services」として提供されていたもので、機能面での拡充が図られ、現在の名称に変更された。ビルドやテストを自動化し、迅速にデプロイする仕組みを装備。ソフトウェア開発サイクルの高速化に貢献するツールとなっている。内容的には、かんばんボードやバックログ、ダッシュボードなど進捗を管理するための機能を提供する「Azure Boards」をはじめ、ビルドやテスト、デプロイの自動化を行う「Azure Pipelines」、コードのリポジトリとなる「Azure Repos」、テスト計画を構築する「Azure Test Plans」、ビルドなどで生成された成果物を補完する「Azure Artifacts」の5つのサービスが統合されている。
「ビルドパイプラインの作成に関しては、Azure DevOpsの中心的なツールとなるAzure Pipelinesがサポート。.NET Coreなど開発フレームワークごとに用意されたサービスを選択して、リソースの所在などの情報をウィザードベースで入力するだけでパイプラインの作成が行えるようになっています。また、masterブランチにコードがコミットされた際にビルドを自動起動するといった設定も容易に行えます」と森氏は言う。これにより、ビルドパイプラインの作成にかかわる作業がシンプル化され、そこに要する手間を大幅に削減することができるわけだ。
また、このAzure DevOpsと同様の機能を提供するツールとして「AWS CodeStar」もよく知られており、Windowsプラットフォームとの親和性についてはAzure DevOpsに譲るものの、十分な機能性を備えたものとなっている。
「以上のようなツールを適材適所に活用していくことが、クロスプラットフォーム開発の敷居を大きく下げてくれるはずです」と森氏は強調する。
率先して環境変化にチャレンジしその成果をツール製品に注入し提供
この日最後のセッションには、グレープシティの氏家晋氏が登壇。「グレープシティと業務システム開発のモダナイゼーション」と題して講演を行った。
2019年5月には新しい元号への改元が予定されているほか、同年10月1日には新しい消費税率の運用がスタートする。加えて、2019年7月9日にはSQL Server 2008および同 R2、2020年1月14日にはWindows 7、Windows Server 2008、同R2の延長サポート期間がそれぞれ終了の運びとなる。
「ソフトウェア開発の現場は、これらの動きに向けた対応が突き付けられており、大変厳しい状況にあります。ですが、そうしたタスクの合間を縫って、例えばクラウド化やモバイル対応など、今まさに進んでいる業務システムの開発・運用を取り巻く環境変化に追随していくための取り組みも決しておろそかにはできません」と氏家氏は強調する。
開発者の多様なニーズに応え続けることをミッションとするグレープシティにとっても、開発現場に求められている、そうした変化対応に向けた取り組みを支援していくことは重要なテーマである。例えば最近、グレープシティではAzure DevOpsへの自社製品の対応を進める一方で、WPFやWindows Forms製品を活用している同社のローカルの開発・ビルド環境と、Azure ReposとAzure Pipelinesの両サービスを連携してビルドを行うための手順を、技術資料として公開する取り組みも行っている。
これに関して氏家氏は「本来、Azure DevOpsではビルド環境も提供していますが、市販コンポーネント製品のライセンス処理に対応していないため、対処方法を紹介しています。現在はWPFとWindows Forms製品だけですが、他のASP.NETやXamarinなどの関連製品についても、同様の資料の公開を予定しています」と説明する。
加えて、2018年10月にリリースされたWindows Server 2019についての各製品の対応も、現在進めているところだ。これについては、グレープシティのWebサイトのナレッジベースを通じて対応状況をすでに公開しているほか、ブログを通じて紹介していく予定とのことだ。
また今後の取り組みとして、グレープシティでは「Microsoft Connect(); 2018」で発表された「Visual Studio 2019」のプレビュー版をはじめ、最新版の「.NET Framework 4.8」、.NET Core 3.0、そしてUWPのコントロールをWPFやWindows Formsで使うための「XAML Islands」に、各コンポーネント製品を対応させていく。
「多くの開発者の皆さまが、.NET Core 3.0をベースにWPFやWindows Formsが動くようになることに大きな関心を寄せているものと思いますが、これに対し現時点では当社の『ComponentOne(コンポーネントワン)』のコンポーネントでは一部動作が確認できているという段階で、『ActiveReports(アクティブレポート)』や『SPREAD(スプレッド)』『InputMan(インプットマン)』『MultiRow(マルチロウ)』については、有り体に言うなら、ビルドは可能であるもののライセンスの関係で実行時にエラーになってしまうという状況。今後、鋭意対応を進めていくことになります」と氏家氏は現況を報告する。
新たなデバイスやシステムインフラ、プラットフォーム技術の登場など、時代とともに開発者を取り巻く環境は絶えず変化し続けていくことになる。グレープシティでは今後も、そうした新たな環境に自ら率先してチャレンジし、その成果を開発ツールに注入し、製品として提供することで、ソフトウェア開発者を強力に支援しようとしている。