Visual Studio UserGroup FINALに行って来た。

# 概要
http://event.shoeisha.jp/seminar/20160305
日時：2016/03/05
会場：品川グランドセントラルタワー 日本マイクロソフト　品川本社

# 1.Visual Studioの過去現在未来
MSの井上章さんの講演
Visual Studioの過去を振り帰ったりこれからの話でした。
### VisualStudioの過去
・VS2003とVSS動かしてみよう。
　　→ 今とあんまりかわらないスタイルがこの頃から確立してました。

### MSの開発ツールへのビジョンが大きく変わってきた。
・キーワードはOpeness
・Satya NaddellaがCEOになってから大きく変わってきた。OSS周りの活動を10年くらいやってる。
・.netをOSS化しだした（！）→ 2010/03にjquery採用。MSのOpen化の先駆け

### .NET
・ランタイム、ライブラリ、言語、ツール＝.netだった
・.netも最新は4.6.2になったよ

### .net2015
・従来の.net4.6に.net Core1.0（Win/MacOSX/linuxでもいける・・・？)
・ASp.net　core1.0と.net Core1.0に名称変更。
  → 今月末あたりで発表されそう。
・VS2015でASP.netプロジェクト作ってみると、jsonファイルが増えてきた（従来はXML)
・Team　Foundationのバージョン管理の他にgithub使えるようになった。
　→ pushしたのをMac上のubuntuにcloneして動かせる。
・XamarinでAndroidアプリやiOS/AppleWatchアプリを作れるらしい。
・JSとCordvaでAndroid/iOSで書ける。
・MFCアプリもまだ作れる
・AntベースでAndroidアプリをJavaで書ける（Gradleもいける？)
・スマホ用のネイティブライブラリのテンプレートもある（iOS/Android共有DLLを作れる）
・VSでpythonやnodeJS、R、Unityも書けるようになる。

### Visual Studio vNext(Win上のアプリ)
・インストーラーが軽量化（追加でインストールする）
・今後はフォルダベースでプロジェクト管理されるようになる。UnityとかOSS系を管理しやすくする。
・XCodeみたいなメソッドジャンプもできる。
・ログインで過去の設定環境を覚えている（クラウドにUPされてる？）
・つまり、いろんな言語、開発のIDEとしてのVSという立ち位置になっていく。

### Visual Studio Code：高機能エディタ。IDEではなくエディタ。
・プロジェクトジェネレータがいろいろある。
・loremというダミーテキスト入力支援が強力そう

### VisualStudio team service
・VSSの超進んだ版。コード管理やチーム管理などができる。gitリポジトリ使える。CI機能内蔵。
・application insightでGAのようなこともできる？
・VSTE上にカンバン表示できる。
・VS上でCI構築もできる。事前設定どうやるんだろ？
・ExripseやXCodeの連携も視野にいれてる。

### 最後に
5/24~5/25にde:codeというイベントでフィードバック
channnel9でVSの今を紹介してるよ


# 2.TFS/VSTSの変遷と、DevOps時代に向けての開発
MSの亀川さんのセッション
### TeamFoundationServerの歴史いろいろ。
##### 2005はSubversionとtracとRedmineをあわせたようなの。
・2005->2008で順調に機能拡張。CIもついた。
・2010でProjectとの連携開始。Testマネージャーついた。フリーだとTestLinkくらい？セットアップ簡単に。
・開発がビジネスの価値につながる時代に。

##### クラウド＆モバイル時代
・常に初めて。慣れたころには新しいもの。頻繁にリリース。そんなニーズに合わせてでたのがTeamFoundationServer2012
探索テスト
StoryBoardでモック作成
　
##### 2012年以前と以後で開発が移り変わった。（Openessとか）
・で、TFS2013（team foundation serbver2013)．
・ReleaseManagement機能を買収して統合。

##### そして時代はDevOps
・TFSとVSTS2015
・TFSは日本語、VSTSは英語。
・ロードテスト（負荷テスト）できるようになった。

### TFSとVSTS,どっち使えばいいの？
・ドキュメント管理したいならTFS。
・英語がいやならTFS。
・後はデータの持ち出し可否、外部からの接続の可否、組織内連携の有無で決める。
・会社で使うなら、MSアカウントではなくAzureアカウント使うほうがいいよ。
・外部サービスもいろいろサポートする。
　　→JenkinsとかSVNとか。gitは、もともとある。GradleもCHEFもおｋ。
・VSTSにOpenの開発支援系ツールを入れて使うのもぜんぜんある。

### まとめ
・毎月少しずつ更新される。たくさん機能があるので、困っている処からすこしずつやるのおすすめ。
・基本無料だけど本格的にやるとお金がかかることに注意。

・TFSだと2012以降はボタン１つでバックアップ。ただしTFSにあるものだけ。
・連携する外部サービスのデータをバックアップするのはちょっと大変。
・古いVSとTFSを組み合わせる場合は注意が必要。3バージョンより前は連携できないかも。

# 3.オレたちとVisualStudioとの関係を話そう。
各フォーラムのリーダーがVisualStudioの旧バージョンを振り返りつつ昔話をするセッション。
今となっては･･･の話が多いので簡単に。

・J++が大きな声で言えないけどC#になった。
・Team Systemは2005から。あとマネージドの64bit化やC++/CLI、文字列のunicodeもここから。
・VS2015でjavaを書いてインテリセンスとか利かせるにはアドオン必要。AXMLないのであまり使えないかも。


# 4.VSUGアーキテクト・パネル
MS CTO榊原さん
MS クラウドアーキテクト萩原さん
Gxu鈴木さん
OSK 小井土さん
福井さん
のパネルディスカッション。VSあまり関係なくて、アーキテクチャとアーキテクトに関する話題が中心でした。

### テーマ1：ビジネス要求に対してどのように技術をマッピングするか。

・(萩原さん)最新技術の検証では、技術以前にビジネスとして成立するの（収益性）？を検証しないといけない
・(榊原さん)どんなステークホルダーがいるのか、を一度整理する。どんな要求を持っているかを整理するけど、非機能要求を取りまとめるのを最初にやる。
・(鈴木さん)最近だと、技術の柔軟性が高いので、何を柔軟に設計するのか（どっちにニーズが拡張されていくのか）を考えながらやる。
・(小井土さん)ウリ文句になるようなものを考える。エンドユーザーは使わないけど売るときに必要な機能とかある。機能にはとらわれないでパフォーマンスや拡張性の方が大事。

### エンジニアはどこまでビジネスに踏み込んでいく？
・ビジネスに詳しくないエンジニアはもうステレオタイプ。システム作ると業務知識を意識して咀嚼するかどうか。→ビジネスユースケースをちゃんと書くかとか。
・チームとしてビジネスに踏み込む。→ニーズをつかむ手段はいろいろある。それをコントロールして説明を提供できるかどうか？
・古くから事業をしてるお客のシステムを組みなおすと、お客さんに必要性、不要性を説明して捨ててもらわないといけない。→いまそれいるの？を指摘して顧客に答えてもらえるといいアーキテクチャになる。
・人間時系列にそって説明すると、エンジニアでなくても結構理解してもらえる。
・構造から決めるとやりにくいので、ビジネスピロセスからやるほうがいいけど、例えば契約系だと、業務効率は上がっても売り上げが増えないので、指標が作りにくいし説明しにくい。やってみないとわからないケースとかある。
　
### 投資をしてシステムを作り直すときに、費用対効果をどうステークホルダーに説得する？
・技術者ではない経営者は、エンジニアの言ってる事が理解できないので、猜疑心が強くなる。判断できないので安全側に倒そうとする。ので、シンプルな説明に徹する。
・新技術でいきなりROIが＋に転じることなんて滅多にないので、未来への投資の側面とかでチクチク攻める。
　　→ データ分析をしたいというユーザーがいて、3カ月4回のイテレーションでやってみたら、既存のデータではデータセットがつながらない。ということが分かって、現場の人から提案が上がるようになった。
・パッケージだとツールのレベル感が、現場に近い人が使うものに落ちてきた感がある。
　　　
### テーマ２：どのように新技術をキャッチアップしていく？
・(萩原さん)自分ひとりで全部やるのは無理。１～２個自分の専門を持つほうがいい。
・(萩原さん)今はリアルタイム分析とかやってる。メジャーな論文は大体目を通している。
・(萩原さん)OSSはそろそろ限界。例えばDBならストレージとクラスタだったが、不揮発性メモリからRDMAとかの新ハードが出てきているため、旧来ハードで出来てる既存技術は枯れてきている。
・(榊原さん)アンテナを広げておくの重要。TｗやFBも大事。
・(榊原さん)最新情報ほしかったら英語。
・(榊原さん)面白そうと思ったら試して感覚つかむ。
・(鈴木さん)SNSが多いけど、最先端よりはこなれて価値を生むようになったかどうかの方が大事。ベンダーや意識高い人が使えるって言ってるのはたいてい使えない。なのでトライアルレポートや自分で試してみることが大事。
・(小井土さん)得意分野を一つと、その反対側を見るとたいてい同じことやってるので、対抗する双方をみるといい。
・(小井土さん)自分で発信すると、情報の方からも集まってくる。

### どういう手段で情報の集めたらよい？
・コミュニティをうまく使う。
・qiitaとかいいんじゃない？
・使ってる人に聞く、が一番いい。
・銀の弾丸なんかないのが普通なので、コンテキストが動く条件や制約があるのが普通、というのを前提にして
やろうとしてることがそれにあってるのかの見極めが必要。やってる人に制約聞くのが早いけど、全部はわからないので、最終的には自分で試す。


### おすすめの勉強方法とかあります？
・本を読む。最低限のことは書かれている。
・勉強会みたいな事を週1でもいいから積み重ねる。ショートカットはないよね。０から一人でやるのはつらい。
・複数の同じことを平行で勉強する。言語なら２～３個をまとめたほうが効率が上がる、らしい。
　→ 関連性を覚えるから。雰囲気や文脈を覚える。比較で見てコアは何かを知る。
・既存問題は大体解決されてきていて、その先、違う技術が融合して新しい技術になってきている。既存の技術の両方を知ってて、それを関連させるようなところが要求されそう。関連つけをそうやってつけるといいかも。
・ハッカソンなどで、短い時間で集中してやるのがいいんじゃないか。
　→ あとから「こうしたらできた」みたいなのが出てくる。
・シンプルなところは本に書いてあっても、そこからちょっと外れると急にハードルが上がることが多い。
　→ 触ってみた技術に対して、抱えている問題が本当にマッチするの？を考える癖も大事。
　→ うまくいかなかったことに突っ込んでみる。

### 最近始めた人には抽象度があがって、物理知識が足りてない人が増えてるらしいので、何かキャッチアップする方法は？
・(榊原さん)ラズパイやればいいんじゃない？などを提示してあげることが大事。

### テーマ３：新しい技術をアーキテクチャに適用するタイミングは？
・(小井土さん)ステークホルダーに説明できるかどうかが基本。あんまり複雑になりすぎないようにする。
・(鈴木さん)適用するタイミングには答えがないので、採用することに責任を取る覚悟をするかどうか。採用すると決めたらビジネス側をどう説得するか。できないのなら、できないと謝る覚悟があれば、採用はできる。詳しい人がいるかなどの条件もあります。
・(榊原さん)立場で違うんだけど、大規模でアーキテクトでチーム組んでやる場合、リードするアーキテクトなら顧客を説得してやるべき。そうでないアーキテクトが、採用したほうがよいと信じるならこっそりやれ。一部しか担当してないところで、大きな問題なることなんてあまりない。

### アーキテクチャ選択の勘所とかある？
・(萩原さん)セキュリティとスケーラビリティと信頼性は後付けできないので、最初にやるしかない。
・(萩原さん)スループットなどの局所最適はあとからでもなんとかなる。レイテンシが重要になってきてるので、そっち重視。例えば到着率が低い状態でバッチサイズをあげて不安定になるならアーキテクチャとしては不安定。
・(萩原さん)落ちない、は難しいが、フェイルオーバーやるとレイテンシが下がる。フェイルオーバー時間をいかに短くするか、などを考える。

・(榊原さん)単純に技術でプライオリティつけるのはあんまりうまくいかない。コストが最重視されるから。
・(榊原さん)コストコンシャスな視点は開発者でも必要。
　
・(鈴木さん)ステークホルダーが誰？を見極めないといけない。
・(鈴木さん)全員の希望を叶えることはできないので、バランスをとったこれが一番というのを信じて説明する覚悟がいる。技術の観点じゃなくて、いろんな人の観点から物事を理解するの大事。

・(小井土さん)パッケージは長く使うので、いろんな人がステークホルダー足りえる。幅広い人に説明できる覚悟が必要。

### テーマ４：若い開発者に伝えたいことは？
・(榊原さん)エンジニアなら人生をとおして自己実現をするの大事。
・(小井土さん)ステークホルダーから感謝される。メリットを提供できる。ダメなアーキテクトはすぐわかるけど、いいのはなかなか評価されないので、評価されたいだけなら営業の方がいいかも。
・(鈴木さん)アーキテクトってお客と開発の間に入って調整しないといけない。誰からも「いうとおりにしてよかった」と言われることがない中途半端なものなんだけど、そういうものです。ドMの方が頑張れるし、自分しか知らないシステムのバランスポイントに陶酔できると頑張れると思います。
・(萩原さん)地味な仕事。物量が来た時にどれくらい遅れるかとか、営業トークが本当にその通りなのか、と疑って確認していくような地道な作業を繰り返せるかどうか。
・(萩原さん)うまいアーキテクトには（問題が起きないという意味で）逆転のストーリーがないという意味で地味。

# LT大会

メモ取ってる暇がありませんでした。
登壇者に18歳の高校生がいたり、MS J++の裏話が面白かったり、Xamarin面白そうだけどお金かかるのかうーん、と思ったり。


# まとめ
VisualStudioの利用暦はそれなりの長いのですが、実はVSUG入ってませんでした。
アーキテクト対談に鈴木さんと萩原さんが来る？！という一点だけで参加したのですけど、なんだかんだ言いつつ楽しんでた気がします。
MS製品のIDEから、Eclipseのようなマルチプラットフォーム化していくのは時代の変遷を感じます、というか、Windowsデスクトップアプリケーションというカテゴリーが終焉に向かってる気がするので、正しい選択なのでしょう。個人的にはもう少し立ち上げ早くなって欲しいですが。
デバッグ機能の便利さ加減は、未だ他のIDEの追随を許さないところだと思いますので、今後の発展に期待したいところです。

外部連携の取り込みを頑張ってるようなので（Xamarinとか）、それらが普及するともう少し盛り上がるんじゃないでしょうか。