狠狠撸

狠狠撸Share a Scribd company logo
C# と Android   と+@



第12回 つ部 ミーティング兼忘年会
     昼の部 LT 2012.12.15
   @whale_shark じんべえざめ

                         1
C#って?
? MS社によって開発された
  オブジェクト指向言語

? Javaと同様に中間言語を生成する

? Windows以外でもMonoを導入すれば動く
                            2
Javaと何がちがうの?
? 型推論
  – var x = new List<Human>();
? 自動実装プロパティ
  – class Human { public Age {get; set;} …}
? ラムダ式
  – button.Click += (sender, e) => { <処理> };
? LINQ
  – var y = from p in x where p.Age < 20 select x.Name

                                                         etc...   3
何が良くなるの?
? 多機能
 – かゆいところに届く機能が多い


? AndroidをC#で書き直したら早くなった
                                  (もうプロジェクト終了したけど…

 – http://tatete.blogspot.jp/2012/05/android-osc7-
   xobotoos.html
                                                     4
C# で Androidアプリをつくるには
? IDEで開発するなら
  – WindowsならVisual Stadioをそれ以外ならMonoDevelop
    をいれましょう
  – http://monodevelop.com/
? Mono for Android
  – C#でAndroidアプリを開発できるライブラリ
  – シミュレータは無料
    実機にいれる場合は$399~
  – http://xamarin.com/monoforandroid

                                               5
実際に書いてみる
? C#とJavaを比較できるように、
  Javaでも同じようなコードを書く

? 画面レイアウトや文字のリソースは共通

? 実装は3つのクラス
 – メインアクティビティ
 – データのモデル
 – データの実態

                       6
比較
Java            C#
? メインアクティビティの   ? メインアクティビティの
  ステップ数:117       ステップ数:88




                                7
ステップ数が減った!
? ラムダ式とLINQ
 – Javaだと
       for(SampleDataModel listItem : listItems)
            if(listItem.getAddress().contains(“県”))
                   selectedItems.add(listItems.getName());

 – C#だと
       selectedItems = items
             .Where(item => item.Address.Contains(“県”))
                  .Select(item => item.Name)
                                                             8
リスナーの設定が簡単
 ? イベントリスナーはJavaだと冗長                                                                         (不適切かも)


        – Javaでは
list.setOnItemClickListener(new OnItemClickListner(){
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               <処理>
        }
});

        – C#では
                           list.ItemClick += (sender, e) => {
                                  <処理>
                           };                                                                          9
欠点
? Android上での実行にはMonoのランタイム
  が必要になる
 – Monoランタイムがシミュレータに
   インストールされたものを見た限りだと16MB

? 実機で動かす場合有償
 – 年間$399は高い
                         10
まとめ
? C#で書くとJavaに比べ高機能なので
  複雑な記述を容易にすることが出来る

           これだけで終わり?
?   ランタイムが必要な事や有償であるなど
           C#みたいに使えれば
    敷居が高い

                         11
Xtend
? Eclipseを作っているチームが作成した
  ドメイン固有言語 (CoffeeScriptとかJSXみたいなの)

? XtendからJavaのソースコードが生成され
  る

? ラムダ式や拡張メソッドなどが使える
                                      12
試しに書いてみた
? Xtendを用いて同じアプリを書いてみた

? 比較までにステップ数
 – Java : 117
 – C# : 88
 – Xtend : 65
                         13
まとめ
? どうしてもJavaを使う必要があるならば
  Xtendで世界が変わるかも知れない!

? Androidで動作させるには少しコツが必要
 – ライブラリがたりなかった

? 情報が少ないのが欠点かも
                           14
まとめのまとめ
? C#ならWindows Store アプリと
  ロジック部分が共通に出来るかも

? XtendならJavaの資産をそのまま使って
  ラムダ式とか使える

                           15

More Related Content

つふ?尝罢20121215