読者です 読者をやめる 読者になる 読者になる

CORDEA blog

Programming及びFedora21等のLinux OSのことが多めです。

F# で Android アプリ開発いいよねって話を今更。

Xamarin Android

Xamarin と F# 使って Android アプリ開発の話。

最近 F# とか blackberry とかやってて完全に変人扱いされています。
ですが、Rx とか流行ってるし、次にくるのは F# だと信じています。


Android Java or Kotlin はもちろん、
Xamarin C# に比べても人口も情報も圧倒的に少ないですが
でも IDE があって、サポートされているだけでも上々ですよね。

F# のよさを語るよりも実際にコードを見ていただいたほうが魅力が伝わるかと思いますので、
おなじような実装を Java, C#, F# でしてみました。

Java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    ListView listView = (ListView) findViewById(R.id.list_view);
    listView.setAdapter(adapter);

    Context context = this;
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context, TestActivity.class);
            startActivity(intent);
        }
    });
}

C#

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);
    SetContentView (Resource.Layout.FirstView);

    var toolbar = FindViewById<Toolbar> (Resource.Id.toolbar);
    SetSupportActionBar (toolbar);

    var listView = FindViewById<ListView> (Resource.Id.list_view);
    listView.Adapter = adapter;

    FloatingActionButton fab = FindViewById<FloatingActionButton> (Resource.Id.fab);
    fab.Click += (sender, e) => {
        StartActivity (typeof(TestActivity));
    };
}

F#

override me.OnCreate (bundle) =
    base.OnCreate bundle
    me.SetContentView Resource_Layout.Main
    
    let toolbar = me.FindViewById<Toolbar> Resource_Id.toolbar
    me.SetSupportActionBar toolbar
   
    let listView = me.FindViewById<ListView> Resource_Id.list_view
    listView.Adapter <- me.adapter
    
    let onClick e =
        let intent = new Intent(me, typeof<TestActivity>)
        me.StartActivity intent
        
    let fab = me.FindViewById<FloatingActionButton> Resource_Id.fab
    
    fab.Click.Add(onClick)


どうでしょうか。
個人的には brace ないだけでもかなり見通し良いと思っています。

Xamarin を使用されている方もいない方も、ぜひ一度 F# を。



F# でもうちょっとちゃんと実装してあるものはこちらのリポジトリにあります。
github.com
blackberryiOS なども突っ込まれててカラフル。