xamarin.ios/android+f#で作る関数型アプリ

12
Xamarin.iOS/ Android + F# でででででで ででで でで でで@moonmile .NET でで Micorosft MVP C# Moonmile Solutions

Upload: moonmile

Post on 01-Jul-2015

702 views

Category:

Documents


8 download

DESCRIPTION

Xamarin Studio 5.0 から実装された F# プロジェクトテンプレートを使って iOS アプリを作成する試み。

TRANSCRIPT

Page 1: Xamarin.iOS/android+F#で作る関数型アプリ

Xamarin.iOS/Android + F# で作る関数型アプ

リ増田 智明( @moonmile )

.NET ラボ  Micorosft MVP C#

Moonmile Solutions

Page 2: Xamarin.iOS/android+F#で作る関数型アプリ

自己紹介&宣伝

増田 智明 [email protected]

Xamarin 本が出ます。C# による iOS 、 Android 、 Windows アプリケーション開発入門日経 BP 社

de:code で発売します。

Page 3: Xamarin.iOS/android+F#で作る関数型アプリ

Xamarin とは?

C# でクロスプラットフォーム開発 Xamarin Studio

Xamarin.iOS

Xamarin.Android

前身が mono MonoDevelop

ASP.NET を Linux で動かすなど 去年の 11 月頃に Microsoft 社と提携

インサイド Xamarin – Build Insider by 榎本 温 氏 http://www.buildinsider.net/mobile/insidexamarin

Page 4: Xamarin.iOS/android+F#で作る関数型アプリ

Xamarin Studio 5.0 beta

iOS/Android アプリを F# で作成できる iOS の storyboard を使える

iOS デザイナ内蔵

Page 5: Xamarin.iOS/android+F#で作る関数型アプリ

F# の特徴

.NET Framework が使える関数型言語

F# code

C#/VB PCL

.NET Framework

既存ライブラリの活用

既存知識の活用

C#/VB code

ライブラリの利用

Page 6: Xamarin.iOS/android+F#で作る関数型アプリ

F# と マルチプラットフォーム開発

Mono と .NET Framework

Windows 環境 iOS 環境 Android 環境 Linux 環境

MonoMicrosoft

.NET Framework

iOS Android Linux Windows

WindowsWinRT

Windows PhoneMonoTouch MonoDroid

Page 7: Xamarin.iOS/android+F#で作る関数型アプリ

F# と C# の組み合わせ

ひと通り、文法 できること、は同じ≒ 基本クラスライブラリ (Basic Class Library)

PCL(Portable Class Library)

C#/VB code F# code

BasicClass

Library

PortableClass

Library

Page 8: Xamarin.iOS/android+F#で作る関数型アプリ

F# で関数電卓を作る( iOS 版)

Storyboard(Interface Builder) を使う Outlet を使う

MVVM パターンを利用する INotifyPropertyChanged

ICommand

MvvmCross

View と Logic を分ける Logic は Android/Window Store App と共用

Storyboard xml[<Outlet>]

ViewModel

Model, Logic

View

PCLiOS/Android/Win

View code

Page 9: Xamarin.iOS/android+F#で作る関数型アプリ

yacc もどき

判別共用体の利用 ラムダ式をリストに保存

type Expr = | ExprVal of Val | ExprVar of Var | ExprFunc of Func | ExprOp of Expr*Op*Expr | ExprB of LB*Expr*RB

let rec evalExpr = function | ExprVal(n) -> evalVal n | ExprVar(n) -> evalVar n | ExprFunc(n) -> 0.0 | ExprOp(e1,op,e2) -> let x = evalExpr e1 let y = evalExpr e2 match evalOp(op) with | "+" -> x + y | "-" -> x - y | "*" -> x * y | "/" -> x / y | _ -> 0.0 // error | ExprB (b1,ex,b2) -> evalExpr ex

Page 10: Xamarin.iOS/android+F#で作る関数型アプリ

UI は MVVM パターンでtype ViewModelBase() = let propertyChangedEvent = new DelegateEvent<PropertyChangedEventHandler>() interface INotifyPropertyChanged with [<CLIEvent>] member x.PropertyChanged = propertyChangedEvent.Publish member x.OnPropertyChanged propertyName = propertyChangedEvent.Trigger([| x; new PropertyChangedEventArgs(propertyName) |])type MainViewModel() = inherit ViewModelBase() let mutable _Text1 = "" member this.Text1 with get() = _Text1 and set(value) = _Text1 <- value base.OnPropertyChanged "Text1"

Page 11: Xamarin.iOS/android+F#で作る関数型アプリ

ちょっとデモアプリは間に合わず orz

FParsec が MonoTouch/MonoDroid で動かない?ので、自前でパーサーを組み始めるのが前日のこと。

途中ですが、コードを紹介します。

Page 12: Xamarin.iOS/android+F#で作る関数型アプリ

参考リンク

Xamarin - Build mobile apps for iOS, Android, Mac and Windowshttp://xamarin.com/

インサイド Xamarin Build Insider http://www.buildinsider.net/mobile/insidexamarin

The F# Software Foundationhttp://fsharp.org/

New York City F# User Group (New York, NY) – Meetuphttp://www.meetup.com/nyc-fsharp/

1) Write cross-platform mobile apps with F# - NYC Mobile .NET Developers Group (New York, NY) – Meetuphttp://www.meetup.com/nycmobiledev/events/176767982/

【速報】 F# + Xamarin.iOS + Xamarin Studio で iPhone アプリを作れるよ | http://www.moonmile.net/blog/archives/5825