Excelライクな一覧表示が求められる社内システムをWindows FormsからWPFに移行。WPF開発の学習コスト削減の工夫とは?
株式会社ツクイホールディングス
介護事業、人材事業、リース事業などの介護を要とした幅広い事業展開をしているツクイグループの経営管理などを行う株式会社ツクイホールディングス様。
今回は、SPREAD for WPFとInputManPlus for WPF、ComponentOneを採用し、WindowsフォームからWPFプラットフォームに移行した社内システムについて、萩田さまと大塚さまにお話を伺った。
開発概要
開発案件 | 使用製品 | 主な利用機能 |
---|---|---|
ケアシステム (Windows FormsからWPFへの移行) | SPREAD for WPF | 1レコード複数行、ほか |
InputManPlus for WPF | テキストコントール、日付コントロール、コンボコントロール、ほか | |
ComponentOne | DataGrid、DropDownButton、ほか |
Windows Server 2008のサポート終了がきっかけで新しいシステムを開発することに
―はじめに、今回ご紹介いただく社内システムについて教えてください。
萩田さま
このシステムは、介護保険請求や債権管理、各種申請など、さまざまな機能が搭載された社内の従業員向けシステムです。元々はWindowsフォームとClassicASPで作っていたのですが、システムを移行しないといけないということで、今回WPFアプリケーションに刷新しました。
―「システムを移行しないといけない」というお話しですが、その経緯は何だったのでしょうか?
萩田さま
Windowsフォームのシステムはあるパッケージソフトのアドオンとして利用していました。このパッケージソフトはWindows Server 2008の環境で稼働していたのですが、Microsoftから発表されたWindows Server 2008のサポート終了に伴いこのパッケージソフトも停止することになってしまいました。そこで、新しいシステムの開発に踏み切ったわけです。
―Windowsフォームのシステムには弊社の製品を利用されていたのでしょうか?
大塚さま
はい、Windowsフォーム版のシステムにはSPREADとInputManを使用していました。御社の製品は2002年頃からお世話になっていて、かれこれ20年くらいは継続して利用しています。弊社はExcelライクな画面を非常に好む会社ですので、Excelにかなり近いUIを実現できるSPREADはいまや欠かせない存在ですね。今回WindowsフォームからWPFに移行する際も、迷わずSPREADとInputManを導入させていただきました。
WPFの学習コストは高い!この課題を解決する工夫とは?
―Windowsフォームからの新しい移行先としてWebアプリケーションの選択もあると思うのですが、なぜWPFを採用したのでしょうか?
萩田さま
サーバーサイドのWebアプリケーションに移行することも検討したのですが、パフォーマンスの問題があったのでデスクトップアプリケーションを選択しました。デスクトップアプリの中では、Windows Formsよりも新しいフレームワークであること、柔軟にUIをカスタマイズできるといった観点からWPFにメリットがあると考え、WPFを採用しました。
あと、MVVMパターンでバインディングをすれば高速に開発ができるのもとても魅力でした。MVVMに関しては画面遷移など、一部でPrismなどのフレームワークも活用しています。
大塚さま
MVVMはUIとビジネスロジックを分離させて開発することができるので、開発生産性が向上しとても有用だと感じました。
―WPFの最大の特長といえば、MVVMパターンでアプリケーションの開発が可能なことですよね。WPF開発で苦労した点や大変だった点はありましたか?
大塚さま
新システムのコーディング作業は主に3社の開発ベンダーにご協力いただきながら進めているのですが、開発ベンダー選定の際、Prismを使ったWPFの開発スキルセットをお持ちの人材がなかなか見つからず、ちょっと苦労しましたね。開発者の中には初めてWPF開発に携わる方もいらっしゃったので、学習の部分に時間がかかりました。
WPFは開発しやすく外観が美しく作れるという特長はありますが、その分学習コストが高いので各開発ベンダーに技術を周知するのが大変でした。
―WPFは学習コストが高いとのことですが、この課題を解決するためになにか工夫はされたのでしょうか?
大塚さま
テンプレートとして使えるサンプルを用意して、それを開発ベンダーに渡して実際の開発を行ってもらうことでスムーズに開発が出来ました。
萩田さま
あと、リファレンスというかたちでアイコンやネーミング、画面、コードの規約をMicrosoftのAzure DevOpsのWikiにまとめて、開発ベンダーにはそのWikiを参照いただきながら開発を進めてもらいました。
例えば、InputManの入力制御でテキストボックスを赤くする記述方法や今回独自で作ったスタイルの適用方法、SPREADの全選択/全解除ボタンはこうやってXAMLに書いてねとか、こういったコーディングに関わる情報を規約にまとめています。
元々Azure DevOpsはソースコードの管理でも使用していましたが、このWikiの機能は初期の学習コストを下げるのに非常に有用でした。
WPF開発でUIを柔軟にカスタマイズ。WPFコンポーネントの使い勝手とは?
―今回のリプレースでSPREAD、InputMan、ComponentOneを導入いただいておりますが、どのような機能を利用されているのでしょうか?
大塚さま
基本的には入力系の補完としてInputManを、データの一覧表示でSPREADを利用しています。
InputManはテキストコントロールや日付コントロール、コンボコントロールなどいろいろ使っています。日付コントロールにカレンダーのアイコンを設定するなど、デザインを簡単にカスタマイズできるのが良いですよね。
SPREADでは、「1レコード複数行」を実現する機能をとても重宝しています。先ほども申し上げましたが、弊社ではExcelライクな画面が求められるので、Excelのようにデータを高速に一覧表示できることがポイントでした。セルを自由に配置して柔軟なレイアウト設計ができるので、画面内にデータの一覧を収めるのに有効活用しています。また、SPREADのWPF版はデータバインディングを簡単にできるので、使い始めるのにあまり苦労はしませんでした。
萩田さま
勤務パターンを登録する画面では、タイムラインを表示しているのですが、この部分をComponentOneのDataGridを使って実現しています。Windowsフォーム版のSPREADで似たようなUIを作っていたのですが、WPF版ではなかなか難しく…試行錯誤してDataGridで作りました。
―今回の開発で弊社製品を利用した場合と利用しなかった場合、開発工数は何%削減できたと思いますか?
萩田さま
なかなか難しい質問ですね(笑)元々、SPREADとInputManを長年使ってシステムを開発しているので、もう使わないというのは考えられないです。今から入力規則や書式などを0から作ることは想定できません。
―長年ご愛顧いただきましてありがとうございます。例えば、弊社の製品を使わないと実現できないような機能はありますか?
大塚さま
システム開発において実現できないことはないかもしれないですが、それなりに労力がかかるので機能によっては諦めるものもあるかもしれないです。DataGridを使用して作ったタイムライン表示なんかはまさにそうですね。
今後の展開
―ケアシステムの今後の展望はありますか?
萩田さま
このシステムは2021年2月から稼働する予定なのですが、稼働後にユーザーから要望があればそれを拾って、機能を順次拡大していきたいと思います。
また、まだ先の話しではありますが、同じ介護業界の企業様も共同で利用できるようなシステムを構築していきたいと考えています。
―最後に、弊社へのご意見やご要望があれば教えてください。
萩田さま
今は社内のナレッジが溜まったのであまり苦労していないのですが、MVVMで開発したサンプルや開発方法に関する情報がもっとあるといいなと思いました。
Webアプリケーションも良いですが、クライアントサイドで動くアプリケーションの優位性を考えると、まだまだWPFを選定する企業はあるのかなと感じます。
―貴重なご意見ありがとうございます。お客様にお役立ていただけるような情報を発信できるよう、今後も努力してまいります。本日はありがとうございました。
取材協力:2020年11月
- グレープシティ株式会社は、2023年11月1日よりメシウス株式会社に社名を変更しました
株式会社ツクイホールディングス
所在地 | 〒233-0002 神奈川県横浜市港南区上大岡西1丁目6番1号 |
---|---|
設立 | 1969年6月 |
事業内容 | グループ会社(株式会社ツクイ、株式会社ツクイキャピタル、株式会社DIGITAL LIFE、株式会社ツクイスタッフ、ツクイ・ケアテック投資事業有限責任組合)の経営管理等を行っている |
URL | https://tsukui-hd.co.jp/ |
ご紹介した事例内容をPDF形式でご覧いただけます。