連載
» 2013年02月19日 15時06分 公開

第1回 .NET技術の断捨離連載:業開中心会議議事録(3/3 ページ)

[一色政彦,デジタルアドバンテージ]
前のページへ 1|2|3       

パネル・ディスカッション『どのようにして古い.NET技術を断捨離すればよいのか?』

 パネル・ディスカッションでは、「言語機能&コーディング記法の断捨離」と「フレームワーク技術の断捨離」という2つのテーマで、断捨離の対象と理由/実践方法/経験談などを議論した。ご登壇いただいたのは、下記の方々である。

 以下は、パネル・ディスカッションで筆者が重要だと思ったポイントである(以下、敬称略)。ここに書き出している以外にも注目すべき発言が多々あったので、興味がある方はぜひUstream動画を視聴してほしい(本稿の最後に埋め込んでいる)。

言語機能&コーディング記法の断捨離

―― 「新技術にプラスの面がたくさんあることは分かっていても、実際の会社の中で使用しようとするとさまざまなハードルがある」という開発者は少なくないだろう。そのハードルとして最初に出てくるのが、「エンド・ユーザー側のWindows OSのバージョンが古い」といった環境の問題ではないだろうか。しかし、グレープシティ社製のコンポーネント利用者のアンケート結果からいうと、次のグラフで示すように、最近ではWindows 7が60%を超えるまでに順調に増えて、その分、Windows XPは順調に減っており、よく言われるほど「エンド・ユーザーの環境は古いまま」ではないといえる。

エンド・ユーザー環境のOSの推移(グレープシティ・テクニカル・サポートでの聞き取り結果)

 また、エンド・ユーザーのPCに搭載されている.NET Frameworkのバージョンは、調査時で最新だった.NET 4が最も利用者数が多く、その次にそれより1つ古い.NET 3.5が多かった(次のグラフを参照)。

エンド・ユーザー環境の.NETバージョンの推移(グレープシティ・テクニカル・サポートでの聞き取り結果)

 開発者のPCにインストールされているVisual Studioのバージョンでは、調査時で最新だったVisual Studio 2010の利用者数が最多だった(次のグラフを参照)。

エンド・ユーザー環境の.NETバージョンの推移(グレープシティ・テクニカル・サポートでの聞き取り結果)

 グレープシティ社のデータ上はこのようになっているが、実際の開発現場で利用する.NETのバージョンも最新版が多いのか?

 .NETを新規に導入する場合は最新版を使えることが多いが、すでに.NETを導入済みのユーザー企業の場合は、それをバージョン・アップしてもらうのは簡単ではない。というのも、「今、使っている古いバージョンで動くのだったら、そのままで行きたい」というユーザー企業の希望があるから。

宮崎 .NET 2.0と3.5 SP1はCLRバージョンが2.0で同じなので、.NET 2.0を使っているユーザー企業の場合、.NET 3.5までは上げるというケースが多い。.NET 4以降までバージョン・アップしないもうひとつの理由として、.NET 3.5 SP1と4.0のサポート期間が(現時点のWindows 7上では)同じことが挙げられる。

―― 新バージョンの新技術を利用するメリットを、上司やほかの開発者に理解してもらえない場合はどうすればよいか?

岩永 (教育に関する一般論として)教育が必要である人自身が、教育の重要性を認識していないという問題がある。全員ができることを基準にすると、最低のレベルにそろってしまう。「言語やツールから新技術のメリットを学ぶ」というのは非常に効率的な学習方法だと思うが、そういった教育の機会さえも奪ってしまっている。「新技術の教育が大変だから」というという理由で、新技術を採用しないのなら、教育する側の責任放棄だと思う。

宮崎 プロジェクト管理者の立場でいえば、例えば「ジェネリック・コレクション」という基本的な機能は導入しやすいが、「LINQ to SQL」などのデータベース・アクセス技術のような機能は、リリース直前になってパフォーマンスの問題が表れたりして困ることがある。そういう問題が起きないように技術を選別し、総合的な観点から「この新技術を使わない」という判断をしているケースもある。

―― C#とVBの主な新機能の歴史を、次の表にまとめてみた。

C#とVBの進化

 この表を見ると、VBの機能導入は少し遅れているものの、最新バージョンではC#とVBに優劣はないように見える。しかし最近、VBはC#と比べて人気が下降しているイメージがある。もうVBは辞めた方がよいのか?

 VBへの熱い思いを語ると、「VBは、電話で話しても相手に通じる“読める言語”であることが最大の売り。つまり、全ての文法が発音できるようになっているため、読みながらロジックを考えられる。あとは、20年近くの歴史と資産があり、そんな昔の業務ロジック・コードでも.NETでけっこう簡単に動いてしまうというメリットがある。ただし、UI関連の部分などはC#の方が書きやすかったりする場合もあるので、そういう部分には適材適所でC#を使えばよい。」

―― C#/VB言語機能の利用率を挙手調査すると、次のような結果だった。

  • ジェネリック: ほぼ全員が使っている。
  • LINQ&ラムダ式: 半数以下に。
  • async/await: 少数しか使っていない。

 残りの半数の人がLINQ&ラムダ式を日常的に使うようになるには、まずはそれらの技術が生まれた背景を理解する必要があるのか?

河合 昔の技術は結局、使わないことになるので、最終的にその最新技術に至るまでの技術変化の流れは知る必要がない。しかも、その過程の古い技術の方が難しいので、今から学ぶなら最新技術を使いながら覚えるだけで十分だ。

岩永 技術の歴史と背景は違って、背景の知識はあってもよいが、確かに歴史の知識は不要だ。でも、例えば「LINQがないと、処理がどんなに面倒になるか」という背景知識はあった方がいい。

―― ラムダ式で書けば、「コードが短くなる」というメリットも得られるが、コードは短い方が正義なのか?

河合 「コード・ゴルフ」という徹底的に短く書くことを競うプログラマの遊びがあるが(例えば10文字でHello Worldを書くなど)、もちろんそういうことを現実の開発で実施するのはよくない。しかし、例えば「forループだと10行のコードなのが、LINQだと1行になる」というように、情報量が圧縮されて短くなり、しかも開発者にとってより分かりやすくなるのであれば、コードは短い方がいい。

フレームワーク技術の断捨離

―― データベース・アクセス技術として、データセットを使っている人は少なくない(デスクトップ・アプリ開発ではいまだに利用者の多いWindowsフォームに密接した技術であることも、その一因だと思うが)。やはり最新のEntity Frameworkに移行すべきか?

岩永 (データの大元になることが多く)データセットには依存してしまいがちという問題がある。Entity Frameworkのコード・ファースト(のPOCO: Plain Old CLR Object)で作れば、何も継承していないクラスからデータベースを作れるので、ほかのデータベース技術とロジックを分離しやすい。コード・ファーストのようなものが使えないにしても、インターフェイスを介したり部分クラスを使ったり、依存性を断ち切る手段はある。データベース技術においても、依存性を断ち切って疎結合にしていく方がよい。

―― デスクトップ・アプリ向けのUI(ユーザー・インターフェイス)技術としては、Windowsフォームの利用者が依然として多いが、WPFに移行すべきか?

岩永 UI技術は陳腐化しやすいので、疎結合に作った方がよい。そして疎結合にしやすいという意味では(データ・バインディングなどの仕組みが強力な)WPFの方がお勧め。しかし、WPFでもイベント・ハンドラにビジネス・ロジックが書かれてしまっているような状態だと、疎結合にならないので意味がない。

宮崎 WPFはいろいろなことができるが、逆にWPFの機能をフルに使い込もうとする人ほど、深みにはまって困った状況になりやすい。

 だから、ある程度のところまでの機能実装で“諦める”という基準を持った方がよい(何でも実現しようとすればするほど、はまりやすい)。

井上 冒頭のグレープシティ社のグラフにあったように、ユーザー環境がWindows XPからWindows 7に移行していっており、PCのスペックも上がってきているので、今後はWPFが使いやすい環境がさらに増えていくことになるだろう。そういった環境に向けてWPFでデスクトップ・アプリを作ってほしい。それによりWPF利用者からのフィードバックが増えれば、マイクロソフトとしてもWPFの機能性や使い勝手などをさらに向上させていけるだろう。

―― Web技術としては、WebフォームとASP.NET MVCは適材適所で使い分けるべきか?

河合 「適材適所」といっても、JavaScriptが重要になってきている今、(HTMLとJavaScriptを最初から書くわけではない)Webフォームの適所は狭まっている。一方、ASP.NET MVCを使えば、HTMLとJavaScriptで素直にWebアプリを記述できる。そういう観点では、Webフォームに本当に未来があるのか、疑問だ。

―― 前回のセミナーでは、「バックエンドは開発生産性のWebフォーム、フロントエンドはHTML5などの新技術を柔軟に組み込めるASP.NET MVC」という適材適所で使い分ける方がよいという意見があった。

井上 Webフォームはまだ死んではいない。マイクロソフトは、「One ASP.NET」というビジョンの基で、ASP.NETコア技術上でさまざまな種類のアプリやサービスが作れるようにしており、今後も適材適所で使えるさまざまなフレームワークを提供していく。

―― 最後に.NET技術を断捨離するためのポイントをひと言ずつ。

岩永 余裕は余裕を、デスマはデスマを生む。余裕のある側に回るには、(個人ではなく)チームで変わるための努力をしよう。

河合 LINQを使おう! 大半の開発者がVisual Studio 2008以降/.NET 3.5以降を使っているようだが、そうであればLINQは使える環境なので、使ってない人はぜひ試してほしい。

 新技術をチームに広げるには、1つ目のひな型サンプルを新技術で正しく作るのが重要。その1つがプロジェクトの中に広がっていくことにもなるので。また、何が何でもVBである必要はなく、VBも含めて技術は適材適所で使えばよい。

宮崎 プロジェクト管理者の立場としても新技術はできるだけ採用したい。そのような意思決定をするためには、ある程度の割合の人に技術知識を広めることが重要。だから、開発者の皆さんは(プロジェクトで使う必要がなくても)最新技術を学ぶようにしてほしい。

井上 保守的にならずに楽しく開発をしてほしい。新しい技術を使うのは、ワクワクして楽しいこと。そういう気持ちを忘れずに、新しい開発案件の中で実際に活用して、楽しみながら便利なアプリを開発していっていただけるとうれしい。

パネル・ディスカッションのUstream中継された過去動画


セッション開始は00:00:10(10秒)から。


 次回の業開中心会議のテーマとしては、「VB開発とVB開発者のための、VB祭り(仮)」を検討中である。4月13日(土曜日)に開催予定なので、ご期待いただきたい(参加者の募集開始は3月中旬の予定)。

「連載:業開中心会議議事録」のインデックス

連載:業開中心会議議事録

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。