SlideShare una empresa de Scribd logo
1 de 12
Xamarin.iOS/Android +
F#で作る関数型アプリ
増田 智明(@moonmile)
.NET ラボ Micorosft MVP C#
Moonmile Solutions
自己紹介&宣伝
 増田 智明 masuda@moonmile.net
 Xamarin本が出ます。
C#によるiOS、Android、Windowsアプリケーション開発入門
日経BP社
 de:code で発売します。
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
Xamarin Studio 5.0 beta
 iOS/Android アプリを F# で作成できる
 iOSのstoryboardを使える
 iOSデザイナ内蔵
F# の特徴
 .NET Framework が使える関数型言語
F# code
C#/VB PCL
.NET
Framework
既存ライブラリの活用
既存知識の活用
C#/VB code
ライブラリの利用
F# と マルチプラットフォーム開発
 Mono と .NET Framework
 Windows 環境
 iOS 環境
 Android 環境
 Linux 環境
Mono
Microsoft
.NET Framework
iOS Android Linux Windows
Windows
WinRT
Windows Phone
MonoTouch MonoDroid
F# と C# の組み合わせ
 ひと通り、文法≒できること、は同じ
 基本クラスライブラリ(Basic Class Library)
 PCL(Portable Class Library)
C#/VB code F# code
Basic
Class Library
Portable
Class Library
F# で関数電卓を作る(iOS版)
 Storyboard(Interface Builder)を使う
 Outletを使う
 MVVMパターンを利用する
 INotifyPropertyChanged
 ICommand
 MvvmCross
 ViewとLogicを分ける
 Logic は Android/Window Store App と共用
Storyboard xml
[<Outlet>]
ViewModel
Model, Logic
View
PCL
iOS/Android/Win
View code
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
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"
ちょっとデモアプリは間に合わず orz
 FParsec が MonoTouch/MonoDroid で動かない?ので、自前でパーサーを組み
始めるのが前日のこと。
 途中ですが、コードを紹介します。
参考リンク
 Xamarin - Build mobile apps for iOS, Android, Mac and Windows
http://xamarin.com/
 インサイド Xamarin Build Insider
http://www.buildinsider.net/mobile/insidexamarin
 The F# Software Foundation
http://fsharp.org/
 New York City F# User Group (New York, NY) – Meetup
http://www.meetup.com/nyc-fsharp/
 1) Write cross-platform mobile apps with F# - NYC Mobile .NET Developers Group
(New York, NY) – Meetup
http://www.meetup.com/nycmobiledev/events/176767982/
 【速報】F# + Xamarin.iOS + Xamarin Studio で iPhoneアプリを作れるよ |
http://www.moonmile.net/blog/archives/5825

Más contenido relacionado

Similar a Xamarin.iOS/android+F#で作る関数型アプリ

Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」Yoshito Tabuchi
 
Xamarin+MVVMCross のあれこれ
Xamarin+MVVMCross のあれこれXamarin+MVVMCross のあれこれ
Xamarin+MVVMCross のあれこれShinichiAoyagi
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介Yoshito Tabuchi
 
Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発友太 渡辺
 
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発Fujio Kojima
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメYoshito Tabuchi
 
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたXamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたHironov OKUYAMA
 
Xamarin Dev days 2 xamarin.forms ja
Xamarin Dev days 2   xamarin.forms jaXamarin Dev days 2   xamarin.forms ja
Xamarin Dev days 2 xamarin.forms jaAtsushi Nakamura
 
NET MAUI for .NET 7 for iOS, Android app development
 NET MAUI for .NET 7 for iOS, Android app development  NET MAUI for .NET 7 for iOS, Android app development
NET MAUI for .NET 7 for iOS, Android app development Shotaro Suzuki
 
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版Yoshito Tabuchi
 
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践Yoshifumi Kawai
 
Xamarin から使う Azure
Xamarin から使う AzureXamarin から使う Azure
Xamarin から使う AzureYoshito Tabuchi
 
Xamarin概要+最新情報
Xamarin概要+最新情報Xamarin概要+最新情報
Xamarin概要+最新情報Yoshito Tabuchi
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio CodeAkira Inoue
 
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装Nakazawa Yuichi
 
WordPress widget api
WordPress widget apiWordPress widget api
WordPress widget apiTakami Kazuya
 
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントXamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントMasuda Tomoaki
 
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesasm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesNoritada Shimizu
 
TypeScript による今風の web アプリ開発
TypeScript による今風の web アプリ開発TypeScript による今風の web アプリ開発
TypeScript による今風の web アプリ開発靖 陣内
 

Similar a Xamarin.iOS/android+F#で作る関数型アプリ (20)

Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」
 
Xamarin+MVVMCross のあれこれ
Xamarin+MVVMCross のあれこれXamarin+MVVMCross のあれこれ
Xamarin+MVVMCross のあれこれ
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
 
Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発Xamarin で今日から始めるクロスプラットフォーム開発
Xamarin で今日から始めるクロスプラットフォーム開発
 
Xamarin.Forms概要
Xamarin.Forms概要Xamarin.Forms概要
Xamarin.Forms概要
 
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
 
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみたXamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみた
 
Xamarin Dev days 2 xamarin.forms ja
Xamarin Dev days 2   xamarin.forms jaXamarin Dev days 2   xamarin.forms ja
Xamarin Dev days 2 xamarin.forms ja
 
NET MAUI for .NET 7 for iOS, Android app development
 NET MAUI for .NET 7 for iOS, Android app development  NET MAUI for .NET 7 for iOS, Android app development
NET MAUI for .NET 7 for iOS, Android app development
 
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版
 
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
 
Xamarin から使う Azure
Xamarin から使う AzureXamarin から使う Azure
Xamarin から使う Azure
 
Xamarin概要+最新情報
Xamarin概要+最新情報Xamarin概要+最新情報
Xamarin概要+最新情報
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio Code
 
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装
 
WordPress widget api
WordPress widget apiWordPress widget api
WordPress widget api
 
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネントXamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
Xamarinで作るiPhoneとwindowsストアアプリの共通コンポーネント
 
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web gamesasm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
 
TypeScript による今風の web アプリ開発
TypeScript による今風の web アプリ開発TypeScript による今風の web アプリ開発
TypeScript による今風の web アプリ開発
 

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

  • 2. 自己紹介&宣伝  増田 智明 masuda@moonmile.net  Xamarin本が出ます。 C#によるiOS、Android、Windowsアプリケーション開発入門 日経BP社  de:code で発売します。
  • 3. 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
  • 4. Xamarin Studio 5.0 beta  iOS/Android アプリを F# で作成できる  iOSのstoryboardを使える  iOSデザイナ内蔵
  • 5. F# の特徴  .NET Framework が使える関数型言語 F# code C#/VB PCL .NET Framework 既存ライブラリの活用 既存知識の活用 C#/VB code ライブラリの利用
  • 6. F# と マルチプラットフォーム開発  Mono と .NET Framework  Windows 環境  iOS 環境  Android 環境  Linux 環境 Mono Microsoft .NET Framework iOS Android Linux Windows Windows WinRT Windows Phone MonoTouch MonoDroid
  • 7. F# と C# の組み合わせ  ひと通り、文法≒できること、は同じ  基本クラスライブラリ(Basic Class Library)  PCL(Portable Class Library) C#/VB code F# code Basic Class Library Portable Class Library
  • 8. F# で関数電卓を作る(iOS版)  Storyboard(Interface Builder)を使う  Outletを使う  MVVMパターンを利用する  INotifyPropertyChanged  ICommand  MvvmCross  ViewとLogicを分ける  Logic は Android/Window Store App と共用 Storyboard xml [<Outlet>] ViewModel Model, Logic View PCL iOS/Android/Win View code
  • 9. 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
  • 10. 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"
  • 11. ちょっとデモアプリは間に合わず orz  FParsec が MonoTouch/MonoDroid で動かない?ので、自前でパーサーを組み 始めるのが前日のこと。  途中ですが、コードを紹介します。
  • 12. 参考リンク  Xamarin - Build mobile apps for iOS, Android, Mac and Windows http://xamarin.com/  インサイド Xamarin Build Insider http://www.buildinsider.net/mobile/insidexamarin  The F# Software Foundation http://fsharp.org/  New York City F# User Group (New York, NY) – Meetup http://www.meetup.com/nyc-fsharp/  1) Write cross-platform mobile apps with F# - NYC Mobile .NET Developers Group (New York, NY) – Meetup http://www.meetup.com/nycmobiledev/events/176767982/  【速報】F# + Xamarin.iOS + Xamarin Studio で iPhoneアプリを作れるよ | http://www.moonmile.net/blog/archives/5825