それでもc#使いたい
TRANSCRIPT
それでもC#使いたい
七瀬
dendai sie; Talk Live! 32014/06/29
自己紹介
•山本裕二郎(HN: 七瀬ともな)
• @nanasetomona
• 長野県出身
• 信州大学大学院理工学系研究科修士1年
• C# をメインに使用
はじめに…
•手書きで楽譜を生成するプログラムを研究中(C#+WPFを使用)
きっかけはShrimp
• 他人と相互作用のあるソフトウェアを作りたい▫ これまではシンセサイザなど…
• Twitterクライアントは格好のテーマ
• Shrimpのソースを見ていくうちに制作願望が蓄積
清楚なTwitterクライアントを作りました!http://shrimp.ga/
@ulicknormanowen氏
どんなクライアント?
• あまりプログラミングしたくない(本音)
▫ 必要最低限のところだけ書いて、ユーザが書けるところは全部投げてしまおう
▫ どのOSでも正常に動くようにしよう
▫ ましてや、プラグインのために新言語開発なんて言語道断
• なによりも、ユーザがインストールで躓かないようにしたい
もうすこし詳しく
• 付加的機能は全てプラグインとして提供
▫ 誰かがプラグインを書いてくれるはず
▫ 最低限動作に必要な機能/インターフェイスのみ提供
• 描画の処理を書きたくない
▫ ブラウザを埋め込んでHTMLで表示すれば万事解決
• クロスプラットフォームな言語で!
▫ 無論、プラグインもクロスプラットフォーム
描画(1)
• C# によるクロスプラットフォームな描画方法…
▫ WinForms
▫ GTK#
▫ Xwt
▫ (Qt)
▫ (HTML)
• どの道を選んでも追加インストール必須、開発も面倒▫ WinForms の WebBrowser は Windows でしかきちんと動かない
描画(2)
• ローカルホストに Web サーバを建て、ウェブブラウザ上で描画▫ 通信が全て文字列ベース(JSONなど)
▫ ウェブブラウザによって動作が異なる場合に妥協しなければならない
▫ TweetDeck と何が異なるのか?
▫ それなら Twitter web でいいのでは?
• もっと手軽に描画ができて、なおかつ予期しない描画は避けたい
Java
「ななせったー」Nanasetter
• マルチプラットフォーム
• プラグインで機能拡張・スタイルの指定が可能
• マルチカラム、マルチアカウント指向
• 言語は Java 8
▫ 主な開発環境はIntelliJ IDEA 13.1
▫ 開発OSは Xubuntu 13.04 or Windows 8
▫ 使用ライブラリに Twitter4J、ControlsFX
• 進捗は...ダメです▫ まだまだ開発中
Java + JavaFX
• Java ならどの OS でも普通に動く
• JavaFX の WebView が Webkit ベースでしかもクロスプラットフォーム!
▫ JavaScript に Java のオブジェクトを渡せる(逆ももちろん可能)
▫ jQuery が普通に動く
▫ プラグインは .js で記述でき、スタイルは .css で記述できる
Java 8
• ラムダ式が書けるようになった
• Stream で LINQ のようなクエリ処理ができる▫ C# の持ち味もいくらか Java で使える
• ジェネリクス(総称型)が慣れない
• プロパティが欲しい
• 型推論ェ…
JavaFX
• C# (.NET) でいう WPF
• FXML = XML + CSS
• まだまだ勉強中(ここでは語りきれない or 語れない)
今やっていること
• プラグインの仕様記述
• ユーティリティクラスの作成
• IDEの使い方に慣れる
• Javaの勉強
• JavaFXの勉強
• Mavenの勉強
C#それでも
使いたい
C# で足りなかったもの
• クロスプラットフォームな GUI 環境そしてHTMLの描画▫ System.Windows 名前空間からしてやる気なし
• でも C# にはいいところがたくさんある▫ VisualStudio
▫ LINQ
▫ Java よりかは高速で、まだ整頓されている
▫ Xamarin 社の活躍
▫ LINQ
▫ LINQ etc...
まとめ
• JavaでTwitterクライアント作り始めた▫ 最近Javaが熱い(私だけ?)
▫ JavaFXが結構便利そう
• ななせったー、進捗ダメです
• C# は使えなかったがいつでも鞍替えしたい▫ 手軽にブラウザ埋め込めて、
JavaScript+DOM操作できるなら自作も・・・?
蛇足
蛇足
• もう少しで300日連続コントリビュート!
http://github.com/nanase
蛇足(2)
• 2年間のMicroプランが来年6月7日に終了
→Shrimpがめでたくパブリックリポジトリに!