SlideShare a Scribd company logo
C#でiPhoneアプリ開発
    with MonoTouch
 伊勢 シン




わんくま同盟 大阪勉強会 #32
自己紹介

• 伊勢 シンといいます。
  – スマートフォン勉強会の代表です。
  – 次回関東10/31、関西11/14です!
  – 詳しくは http://smartphone.techtalk.jp/ へ!


• 先日、
  Microsoft MVP for Windows Mobile を
  受賞しました!



                  わんくま同盟 大阪勉強会 #32
• WM開発本書きました!
 – Windows Mobile実践プログラミング
   with .NET Compact Framework
 – 酢酸さん、こげつさんとの合作です
 – もう各地の本屋さんに並んでいるはず


• WMのMVPですが、今日はiPhoneのネタやり
  ます!
 – WMだけじゃなくてiPhoneアプリも作ってます

             わんくま同盟 大阪勉強会 #32
おしながき

• おさらい編
 – 基本的なiPhone開発のおさらい
 – Windows Mobile開発との差


• MonoTouch編
 – MonoTouchとは
 – MonoDevelopを使ってiPhone開発
 – Windows Mobileとのクロス開発?


               わんくま同盟 大阪勉強会 #32
ところで・・・

• iPhoneの開発やったことある人って、
  どれくらいいます?

• とりあえず、一般的なiPhoneアプリ開発
  のおさらいをしてみましょう




        わんくま同盟 大阪勉強会 #32
いきなりだけど




• Demo 1
 – Xcode を使ったiPhoneアプリ開発の基本フロー




           わんくま同盟 大阪勉強会 #32
iPhone開発の基本

• 必要なもの
 – Mac OS X 10.5 (Leopard) 以上の入った
   Intel Mac
 – iPhone SDK
   • 開発ツールやライブラリが入ってます。
   • 会員登録すると無料で落とせます。2~3GBくらい。
 – iPhone Developer Program
   • 実機転送やAppStoreへのアップロードに必要な
     ライセンス
   • 年額10800円


               わんくま同盟 大阪勉強会 #32
iPhone開発の基本ツール

• Xcode
  – Apple純正の統合開発環境(IDE)
  – iPhoneだけではなく、
    Mac用アプリ(ObjC,Java,Ruby)、
    Webアプリ(WebObjects)の開発もできる。
  – プロジェクト管理、コードエディタなどの
    基本機能が揃っている
• Interface Builder
  – Xcodeのサブツール
  – インターフェイスのデザイン専用のツール
                 わんくま同盟 大阪勉強会 #32
iPhone開発の基本フロー




Xcode                    Interface Builder

                             UIをデザインする


 UIの定義を書く


                         変数とUIの接続をする

   コードを書く

             転送・デバッグ



              わんくま同盟 大阪勉強会 #32
Windows Mobile の場合は?

• 必要なもの
 – それなりに新しめのWindows PC
 – Visual Studio 2008 Professional 以上
   Visual Studio 2005 Standard 以上 のどっちか
 – Windows Mobile 6 SDK
• すべての作業がVisual Studio上でできます。




             わんくま同盟 大阪勉強会 #32
Windows Mobile開発の基本フロー



            Visual Studio
コードエディタ                      デザイナ

                            UIをデザインする




コードを書く

          転送・デバッグ



           わんくま同盟 大阪勉強会 #32
iPhone開発 個人的な不満点

• いちいち@propertyとか@synthesizeとか
  書くのめんどくさい!
 – しかも2つのファイルにまたがるとか・・・
 – 補完もほとんど効かない




    Demo01ViewController.h   Demo01ViewController.m



                     わんくま同盟 大阪勉強会 #32
iPhone開発 個人的な不満点

• それ、Visual Studio+C#だったら
               prop[tab][tab]でできるよ!




            Tabキー2回




             わんくま同盟 大阪勉強会 #32
iPhone開発 個人的な不満点

• 入力補完あんまり賢くない
 – 努力は認めるけど・・・。たまに型を見失うし。
 – Visual Studioだったらコードヒント出るよ!




           わんくま同盟 大阪勉強会 #32
C#erはXcode上ではやる気が減退する(と思う)

• Objective-Cがわかんないんじゃないんだ。
                   メンドクサイんだ!
 – ヘッダファイルを使った定義
 – メモリの管理
• XcodeがVisual Studioに慣れた体には
  合わない
 – ボタンダブルクリックしても
   イベントメソッド作ってくれない。全部自分で書く。
 – ちょっとしたことでもリファレンス開くのめんどい

           わんくま同盟 大阪勉強会 #32
そして思う

• C#でiPhoneアプリ作れたらなあ・・・
 – 慣れてるし・・・
 – 補完強いし・・・
 – ノウハウはいっぱいあるし・・・
• WMとiPhoneで同じソース書くのメンドイ!
 – IRC 接続クラス2つメンテするの大変です
   @EbIRC
 – 同じアプリをWMとiPhoneで同時に
   展開しようとすると、単純計算で2倍時間がかかる

          わんくま同盟 大阪勉強会 #32
そんなあなたに

• 今日ご説明するMonoTouchがお便利です




         わんくま同盟 大阪勉強会 #32
MonoTouchとは

• .NETのオープンソース実装 Mono を使った、
  .NETでiPhoneアプリを作れるライブラリ
• Novellから、9月上旬に発表されました。
 – 8月     ベータテストがアナウンスされる
 – 9月上旬   1.0がリリース
 – 9月下旬   1.1がリリース




           わんくま同盟 大阪勉強会 #32
MonoTouchとは

• 商用ライブラリです
 – Personal Edition    $399/1Developer/Year
 – Enterprise Edition  $999/1Developer/Year
                       $3999/5Developer/Year
 – Personal Edition と Enterprise Edition の違い
   • iPhone Developer Program の
     Enterprise Program でできる組織内に大量配布する
     向けのアプリの作成に必要
   • Personal Edition のライセンスは個人にひもづくが、
     Enterprise Edition のライセンスは組織内で移動可能


                 わんくま同盟 大阪勉強会 #32
見てもらった方が早い




• Demo 2
 – MonoDevelopを使ったiPhoneアプリ開発




            わんくま同盟 大阪勉強会 #32
MonoTouchを使った開発に必要なもの

• Intel Mac + Mac OS X 10.5.x (Leopard) ~
• iPhone SDK
  – 最終的なビルドはiPhone SDKに依存するので
    結局Macは必要です。
• Mono 2.4
  – 一般に配布されているMonoランタイムです
• MonoTouch 1.1
  – 今回の主役。
• MonoDevelop 2.2 α (MonoTouch対応版)
  – MonoTouchの開発サポートが入っています
               わんくま同盟 大阪勉強会 #32
MonoTouchを使った開発の基本フロー




MonoDevelop               Interface Builder

・エディタとデザイナの往復が大幅に減る        UIをデザインする
・多くの定義が自動補完される



                          変数とUIの接続をする

   コードを書く

              転送・デバッグ



               わんくま同盟 大阪勉強会 #32
MonoTouchに含まれるもの
• mtouchコマンド
  – コンパイル、iPhoneアプリへの変換、コードサイン、
    実機転送などを一発で行ってくれるユーティリティ
• クラスライブラリ
  – Monoのコアライブラリ
    • System名前空間以下、mscorlibとかSystemとかに入ってそうなもの
  – MonoTouch.ObjcRuntime
    • Objective-Cのブリッジなど
  – MonoTouch.Foundation
    • Objective-Cの基本クラス(NSObject)などのラッパー
    • .NETのライブラリだけでなく、
      Objective-Cで使用されるクラスを直接使うこともできる
  – MonoTouch.UIKit
    • CocoaTouchのコアライブラリ、UIKitのラッパー


                  わんくま同盟 大阪勉強会 #32
あれ?ちょっとまって

• iPhoneって
  言語処理系乗っけちゃだめなんだよね?
 – 規約に書いてあって、
   AppStoreに送ってもRejectされるだけ
 – iPhone向けにFlashやFirefoxが出せない理由
   (両方ともScriptの処理系が乗っている)

• .NETの処理系って
  MSILをJITでコンパイルしてたよね?

• なんでiPhoneに.NETのアプリを配信できるの?

            わんくま同盟 大阪勉強会 #32
動的がダメなら先全部コンパイルしとけばいいんだよ!

• MonoのAOT(Ahead of Time)コンパイルで、
  先に全部ネイティブへコンパイルしてから
  iPhoneアプリの形に仕立てます。
 – そのかわり、ビルドに時間がかかります。
• そのあたりの処理を、mtouchコマンドが
  うまい具合に全部やってくれます。
 – なので詳しい仕組みはよくわかりません。




            わんくま同盟 大阪勉強会 #32
MonoTouchのデメリット

• 動的コード生成が使えない
 – System.Reflection.Emit や
   System.Runtime.Remoting などが使用不可
 – その他、動的コード生成に依存する処理は使用不可
• デバッグのサポートがない
 – ステップイン・ステップアウトなどが使えません
 – Console.WriteLineとかでコンソール出力を出して
   Xcodeで実行ログを確認するとかはできます。
• ジェネリクスでできることに制限がある
 – Dictionary<TKey, TValue>で値型をキーにできない
 – ほか

             わんくま同盟 大阪勉強会 #32
MonoTouchのデメリット

• .NETのライブラリは全部が全部使えるわけでは
  ない
 – 使用できるとされているアセンブリ
   • mscorlib.dll, System.dll, System.Core.dll, System.Xml.dll,
     System.Xml.Linq.dll

• MonoDevelopがちょっと残念
 – エディタで日本語を入力できない。
 – 不安定 (MonoTouch対応版はまだアルファ)

• Objective-Cのサンプルをコピペできない
 – iPhone依存のUIの実装などはそれを参考にして、
   自分でMonoTouchに移植する
                    わんくま同盟 大阪勉強会 #32
Windows Mobile アプリの移植

• iPhoneのアプリが全部C#で書けるなら、
  WMのアプリと多くの処理が共通化できるは
  ず。
• WMのアプリのiPhone移植が容易になるかも。




          わんくま同盟 大阪勉強会 #32
Windows Mobile アプリの移植

• UIはWindows FormsとCocoaTouchで大幅
  に違うので書き直し必要
• デバイスの呼び出しも大幅に違うけど、
  ラッパー作れば共通化できそう。
                      UI

                   メイン処理

       そのまま使えそう            ラッパー必要そう

                                       その他
       通信   ファイル    設定     カメラ   GPS
                                       デバイス



             わんくま同盟 大阪勉強会 #32
実際に移植やってみる

• Android用のFotoHookというアプリを
  パクりました!
 – http://d.hatena.ne.jp/hakobe932/20091014/125
   5522909




                わんくま同盟 大阪勉強会 #32
内部の仕組み
Windows Mobile                      iPhone
   Windows Forms                       UIKit


            Manager (全体の取りまとめ・通信)


   RCImage                        RCImage
System.Drawing.Image                UIImage

            CameraDialog (カメラ撮影ラッパ)

System.Drawing.Image                 UIImage

CameraCaptureDialog         UIImagePickerViewController


                   わんくま同盟 大阪勉強会 #32
できるかな?




• Demo 3
 – Windows Mobile 用カメラアプリの iPhone 移植




            わんくま同盟 大阪勉強会 #32
まとめ

• MonoTouch便利です
 – iPhone開発の高速化
 – WMアプリの高速移植・iPhone/WMに同時展開
 – お値段高めだけど使いどころが合えば
   「買い」ではないかと。
• 一部使えない処理もあります




           わんくま同盟 大阪勉強会 #32

More Related Content

What's hot

20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublished
Yoichiro Sakurai
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
Yoichiro Sakurai
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
Yohei Oda
 
できる!スマホアプリ:Webからはじまるアプリ
できる!スマホアプリ:Webからはじまるアプリできる!スマホアプリ:Webからはじまるアプリ
できる!スマホアプリ:Webからはじまるアプリ
Masami Yabushita
 

What's hot (20)

アドベント2015ios基礎
アドベント2015ios基礎アドベント2015ios基礎
アドベント2015ios基礎
 
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
 
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
 
エンジニアリングするデザイナーが領域を超えて見えたこと
エンジニアリングするデザイナーが領域を超えて見えたことエンジニアリングするデザイナーが領域を超えて見えたこと
エンジニアリングするデザイナーが領域を超えて見えたこと
 
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
何故に私達(特に私)はアプリのアニメーションや UI表現に魅了されるのか? そして共存と向き合いを考える
 
ABC2016Spring Androidアプリ実装アンチパターン(暫定)
ABC2016Spring Androidアプリ実装アンチパターン(暫定)ABC2016Spring Androidアプリ実装アンチパターン(暫定)
ABC2016Spring Androidアプリ実装アンチパターン(暫定)
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublished
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 
ゼロから始めるiPhoneアプリ開発
ゼロから始めるiPhoneアプリ開発ゼロから始めるiPhoneアプリ開発
ゼロから始めるiPhoneアプリ開発
 
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみるiOSアプリで気になった動きや表現を上手にアレンジして活用してみる
iOSアプリで気になった動きや表現を上手にアレンジして活用してみる
 
最近の業務やAndroid関連のインプットと振り返り
最近の業務やAndroid関連のインプットと振り返り最近の業務やAndroid関連のインプットと振り返り
最近の業務やAndroid関連のインプットと振り返り
 
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
デザイナー→Webエンジニア→iOSエンジニアと渡り歩いた僕なりのSwiftとの向き合い方と生かす戦略
 
アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集
 
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分についてiOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
iOSアプリ開発で意識すると役立ちそうな「つなぎ目」の部分について
 
できる!スマホアプリ:Webからはじまるアプリ
できる!スマホアプリ:Webからはじまるアプリできる!スマホアプリ:Webからはじまるアプリ
できる!スマホアプリ:Webからはじまるアプリ
 
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
少しずつキャッチアップしていくAndroidアプリ開発の補足と振り返り
 
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞくレイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
レイヤー分けをしたアーキテクチャで作るiOSアプリ&バックエンドのサンプル実装をのぞく
 
少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発
 
Titanium
TitaniumTitanium
Titanium
 

Viewers also liked

第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から
第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から
第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から
Katz Ueno
 
HTML5@iPhoneゲーム開発
HTML5@iPhoneゲーム開発HTML5@iPhoneゲーム開発
HTML5@iPhoneゲーム開発
h_kishi
 
コンピューター支援言語学習
コンピューター支援言語学習コンピューター支援言語学習
コンピューター支援言語学習
Parisa Mehran
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
Ryuji Yamashita
 
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
Kentaro Matsumae
 
iPhoneアプリ無料でできるプロモーション15の活動
iPhoneアプリ無料でできるプロモーション15の活動iPhoneアプリ無料でできるプロモーション15の活動
iPhoneアプリ無料でできるプロモーション15の活動
Hiromitsu Ishimori
 
Rubyを楽しくする第一歩!ブロックを理解する!
Rubyを楽しくする第一歩!ブロックを理解する!Rubyを楽しくする第一歩!ブロックを理解する!
Rubyを楽しくする第一歩!ブロックを理解する!
Kanako Kobayashi
 

Viewers also liked (20)

Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010Html5で作るiPhoneアプリケーション2010
Html5で作るiPhoneアプリケーション2010
 
<Yahoo!プロモーション広告>「iPhone 6」発売後はどうなる? 関連キーワード検索傾向
<Yahoo!プロモーション広告>「iPhone 6」発売後はどうなる? 関連キーワード検索傾向<Yahoo!プロモーション広告>「iPhone 6」発売後はどうなる? 関連キーワード検索傾向
<Yahoo!プロモーション広告>「iPhone 6」発売後はどうなる? 関連キーワード検索傾向
 
(エンジニアから見た)
最近のスマートウォッチ事情
(エンジニアから見た)
最近のスマートウォッチ事情(エンジニアから見た)
最近のスマートウォッチ事情
(エンジニアから見た)
最近のスマートウォッチ事情
 
デブサミ2009: iPhone開発者座談会
デブサミ2009: iPhone開発者座談会デブサミ2009: iPhone開発者座談会
デブサミ2009: iPhone開発者座談会
 
「iPhone 6s/6s Plus」発売前後の検索実績からみる、インターネットユーザー動向
「iPhone 6s/6s Plus」発売前後の検索実績からみる、インターネットユーザー動向「iPhone 6s/6s Plus」発売前後の検索実績からみる、インターネットユーザー動向
「iPhone 6s/6s Plus」発売前後の検索実績からみる、インターネットユーザー動向
 
第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から
第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から
第1回 始めてみよう Web 動画 〜 基礎編 まずは iPhone から
 
HTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーションHTML5で作るiPhoneアプリケーション
HTML5で作るiPhoneアプリケーション
 
HTML5@iPhoneゲーム開発
HTML5@iPhoneゲーム開発HTML5@iPhoneゲーム開発
HTML5@iPhoneゲーム開発
 
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオンJava ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
 
Phone Appli「PA Sync」 説明資料
Phone Appli「PA Sync」 説明資料Phone Appli「PA Sync」 説明資料
Phone Appli「PA Sync」 説明資料
 
コンピューター支援言語学習
コンピューター支援言語学習コンピューター支援言語学習
コンピューター支援言語学習
 
Office for iPad Office for iPhone 企業利用における問題点のまとめ
Office for iPad Office for  iPhone 企業利用における問題点のまとめOffice for iPad Office for  iPhone 企業利用における問題点のまとめ
Office for iPad Office for iPhone 企業利用における問題点のまとめ
 
非It系総務の社内kintone促進 kintone Café japan
非It系総務の社内kintone促進 kintone Café japan非It系総務の社内kintone促進 kintone Café japan
非It系総務の社内kintone促進 kintone Café japan
 
iPhone 5 の Wi-Fi ちゃんと動いてましたか? #yidev
iPhone 5 の Wi-Fi ちゃんと動いてましたか? #yideviPhone 5 の Wi-Fi ちゃんと動いてましたか? #yidev
iPhone 5 の Wi-Fi ちゃんと動いてましたか? #yidev
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
 
女性はグリー、男性はモバゲーのアプリデザインを支持!! -iphoneアプリデザイン調査-
女性はグリー、男性はモバゲーのアプリデザインを支持!! -iphoneアプリデザイン調査-女性はグリー、男性はモバゲーのアプリデザインを支持!! -iphoneアプリデザイン調査-
女性はグリー、男性はモバゲーのアプリデザインを支持!! -iphoneアプリデザイン調査-
 
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
ニコニコ動画iPhoneアプリの作り方@スマートフォン2011講演資料
 
iPhoneアプリ無料でできるプロモーション15の活動
iPhoneアプリ無料でできるプロモーション15の活動iPhoneアプリ無料でできるプロモーション15の活動
iPhoneアプリ無料でできるプロモーション15の活動
 
Rubyを楽しくする第一歩!ブロックを理解する!
Rubyを楽しくする第一歩!ブロックを理解する!Rubyを楽しくする第一歩!ブロックを理解する!
Rubyを楽しくする第一歩!ブロックを理解する!
 
JavaエンタープライズアーキテクチャにおけるHTML5 - Enterprise ☓ HTML5 Web Application Conference ...
JavaエンタープライズアーキテクチャにおけるHTML5 - Enterprise ☓ HTML5 Web Application Conference ...JavaエンタープライズアーキテクチャにおけるHTML5 - Enterprise ☓ HTML5 Web Application Conference ...
JavaエンタープライズアーキテクチャにおけるHTML5 - Enterprise ☓ HTML5 Web Application Conference ...
 

Similar to C#でiPhoneアプリ開発 with MonoTouch

C# で i phone ゲーム開発
C# で i phone ゲーム開発C# で i phone ゲーム開発
C# で i phone ゲーム開発
Katsutoshi Makino
 
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れこれからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れ
Mitsuru Katoh
 
C#でiPhone開発とか
C#でiPhone開発とかC#でiPhone開発とか
C#でiPhone開発とか
Shin Ise
 
EclipseもXcodeも窓から投げ捨てろ!
EclipseもXcodeも窓から投げ捨てろ!EclipseもXcodeも窓から投げ捨てろ!
EclipseもXcodeも窓から投げ捨てろ!
Yutaka Tsumori
 
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
codeal
 

Similar to C#でiPhoneアプリ開発 with MonoTouch (20)

PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料
 
C# で i phone ゲーム開発
C# で i phone ゲーム開発C# で i phone ゲーム開発
C# で i phone ゲーム開発
 
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
非エンジニアのためのIT勉強会 ハイブリッドフレームワーク
 
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れこれからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れ
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
 
C#でiPhone開発とか
C#でiPhone開発とかC#でiPhone開発とか
C#でiPhone開発とか
 
XAML のこれまでとこれから、今「やる」べき意義
XAML のこれまでとこれから、今「やる」べき意義XAML のこれまでとこれから、今「やる」べき意義
XAML のこれまでとこれから、今「やる」べき意義
 
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
わんくま名古屋#36 (20150725) Windows 10 ユニバーサル Windows アプリ開発入門
 
わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)
わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)
わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)
 
Windows phone関係のなにか。
Windows phone関係のなにか。Windows phone関係のなにか。
Windows phone関係のなにか。
 
デベロッパー視点での3大スマホの違い
デベロッパー視点での3大スマホの違いデベロッパー視点での3大スマホの違い
デベロッパー視点での3大スマホの違い
 
EclipseもXcodeも窓から投げ捨てろ!
EclipseもXcodeも窓から投げ捨てろ!EclipseもXcodeも窓から投げ捨てろ!
EclipseもXcodeも窓から投げ捨てろ!
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 
わんくま名古屋#31(20140524) ユニバーサルWindowsアプリ開発の勧め
わんくま名古屋#31(20140524) ユニバーサルWindowsアプリ開発の勧めわんくま名古屋#31(20140524) ユニバーサルWindowsアプリ開発の勧め
わんくま名古屋#31(20140524) ユニバーサルWindowsアプリ開発の勧め
 
iPhoneとAndroidのアプリ開発最新潮流
iPhoneとAndroidのアプリ開発最新潮流iPhoneとAndroidのアプリ開発最新潮流
iPhoneとAndroidのアプリ開発最新潮流
 
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけよう
 
Swift歴2ヶ月でアプリを8本リリースしてみた話
Swift歴2ヶ月でアプリを8本リリースしてみた話Swift歴2ヶ月でアプリを8本リリースしてみた話
Swift歴2ヶ月でアプリを8本リリースしてみた話
 
WindowsにおけるUIスレッドの基礎
WindowsにおけるUIスレッドの基礎WindowsにおけるUIスレッドの基礎
WindowsにおけるUIスレッドの基礎
 
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 

More from Shin Ise

Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCrossCross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
Shin Ise
 
いまどきのiOSプログラミング with Xcode5
いまどきのiOSプログラミング with Xcode5いまどきのiOSプログラミング with Xcode5
いまどきのiOSプログラミング with Xcode5
Shin Ise
 
すまべんLite@関西#4
すまべんLite@関西#4すまべんLite@関西#4
すまべんLite@関西#4
Shin Ise
 
すまべんLite@関西#3
すまべんLite@関西#3すまべんLite@関西#3
すまべんLite@関西#3
Shin Ise
 
すまべんLite@関西#2
すまべんLite@関西#2すまべんLite@関西#2
すまべんLite@関西#2
Shin Ise
 
すごいHaskell読書会#10
すごいHaskell読書会#10すごいHaskell読書会#10
すごいHaskell読書会#10
Shin Ise
 
音声APIを使ってみる
音声APIを使ってみる音声APIを使ってみる
音声APIを使ってみる
Shin Ise
 
すまべんLite@関西#1
すまべんLite@関西#1すまべんLite@関西#1
すまべんLite@関西#1
Shin Ise
 
Xamarin2.0であそぼう
Xamarin2.0であそぼうXamarin2.0であそぼう
Xamarin2.0であそぼう
Shin Ise
 
CoreBluetoothでつくるBluetooth Low Energyデバイス
CoreBluetoothでつくるBluetooth Low EnergyデバイスCoreBluetoothでつくるBluetooth Low Energyデバイス
CoreBluetoothでつくるBluetooth Low Energyデバイス
Shin Ise
 
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
Shin Ise
 
GridViewのつかいかた
GridViewのつかいかたGridViewのつかいかた
GridViewのつかいかた
Shin Ise
 
iOSのVoiceOver対応開発 Rev2
iOSのVoiceOver対応開発 Rev2iOSのVoiceOver対応開発 Rev2
iOSのVoiceOver対応開発 Rev2
Shin Ise
 
MediaLibrary で あそぼう
MediaLibrary で あそぼうMediaLibrary で あそぼう
MediaLibrary で あそぼう
Shin Ise
 
実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive Extensions
Shin Ise
 
本当は怖いSilverlight for Windows Phone Toolkit
本当は怖いSilverlight for Windows Phone Toolkit本当は怖いSilverlight for Windows Phone Toolkit
本当は怖いSilverlight for Windows Phone Toolkit
Shin Ise
 
Socketプログラム Silverlight for Windows Phoneへの移植のポイント
Socketプログラム Silverlight for Windows Phoneへの移植のポイントSocketプログラム Silverlight for Windows Phoneへの移植のポイント
Socketプログラム Silverlight for Windows Phoneへの移植のポイント
Shin Ise
 
Macで使うWindows Phone 7
Macで使うWindows Phone 7Macで使うWindows Phone 7
Macで使うWindows Phone 7
Shin Ise
 
Galaxy tab で持ち歩くモバイルサーバー
Galaxy tab で持ち歩くモバイルサーバーGalaxy tab で持ち歩くモバイルサーバー
Galaxy tab で持ち歩くモバイルサーバー
Shin Ise
 

More from Shin Ise (20)

Cross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCrossCross platform development with Xamarin 2.0 + MvvmCross
Cross platform development with Xamarin 2.0 + MvvmCross
 
いまどきのiOSプログラミング with Xcode5
いまどきのiOSプログラミング with Xcode5いまどきのiOSプログラミング with Xcode5
いまどきのiOSプログラミング with Xcode5
 
すまべんLite@関西#4
すまべんLite@関西#4すまべんLite@関西#4
すまべんLite@関西#4
 
すまべんLite@関西#3
すまべんLite@関西#3すまべんLite@関西#3
すまべんLite@関西#3
 
すまべんLite@関西#2
すまべんLite@関西#2すまべんLite@関西#2
すまべんLite@関西#2
 
すごいHaskell読書会#10
すごいHaskell読書会#10すごいHaskell読書会#10
すごいHaskell読書会#10
 
音声APIを使ってみる
音声APIを使ってみる音声APIを使ってみる
音声APIを使ってみる
 
すまべんLite@関西#1
すまべんLite@関西#1すまべんLite@関西#1
すまべんLite@関西#1
 
Xamarin2.0であそぼう
Xamarin2.0であそぼうXamarin2.0であそぼう
Xamarin2.0であそぼう
 
CoreBluetoothでつくるBluetooth Low Energyデバイス
CoreBluetoothでつくるBluetooth Low EnergyデバイスCoreBluetoothでつくるBluetooth Low Energyデバイス
CoreBluetoothでつくるBluetooth Low Energyデバイス
 
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
 
GridViewのつかいかた
GridViewのつかいかたGridViewのつかいかた
GridViewのつかいかた
 
iOSのVoiceOver対応開発 Rev2
iOSのVoiceOver対応開発 Rev2iOSのVoiceOver対応開発 Rev2
iOSのVoiceOver対応開発 Rev2
 
MediaLibrary で あそぼう
MediaLibrary で あそぼうMediaLibrary で あそぼう
MediaLibrary で あそぼう
 
実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive Extensions
 
本当は怖いSilverlight for Windows Phone Toolkit
本当は怖いSilverlight for Windows Phone Toolkit本当は怖いSilverlight for Windows Phone Toolkit
本当は怖いSilverlight for Windows Phone Toolkit
 
Socketプログラム Silverlight for Windows Phoneへの移植のポイント
Socketプログラム Silverlight for Windows Phoneへの移植のポイントSocketプログラム Silverlight for Windows Phoneへの移植のポイント
Socketプログラム Silverlight for Windows Phoneへの移植のポイント
 
Macで使うWindows Phone 7
Macで使うWindows Phone 7Macで使うWindows Phone 7
Macで使うWindows Phone 7
 
iOSのVoiceOver対応開発
iOSのVoiceOver対応開発iOSのVoiceOver対応開発
iOSのVoiceOver対応開発
 
Galaxy tab で持ち歩くモバイルサーバー
Galaxy tab で持ち歩くモバイルサーバーGalaxy tab で持ち歩くモバイルサーバー
Galaxy tab で持ち歩くモバイルサーバー
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 

Recently uploaded (10)

【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 

C#でiPhoneアプリ開発 with MonoTouch

  • 1. C#でiPhoneアプリ開発 with MonoTouch 伊勢 シン わんくま同盟 大阪勉強会 #32
  • 2. 自己紹介 • 伊勢 シンといいます。 – スマートフォン勉強会の代表です。 – 次回関東10/31、関西11/14です! – 詳しくは http://smartphone.techtalk.jp/ へ! • 先日、 Microsoft MVP for Windows Mobile を 受賞しました! わんくま同盟 大阪勉強会 #32
  • 3. • WM開発本書きました! – Windows Mobile実践プログラミング with .NET Compact Framework – 酢酸さん、こげつさんとの合作です – もう各地の本屋さんに並んでいるはず • WMのMVPですが、今日はiPhoneのネタやり ます! – WMだけじゃなくてiPhoneアプリも作ってます わんくま同盟 大阪勉強会 #32
  • 4. おしながき • おさらい編 – 基本的なiPhone開発のおさらい – Windows Mobile開発との差 • MonoTouch編 – MonoTouchとは – MonoDevelopを使ってiPhone開発 – Windows Mobileとのクロス開発? わんくま同盟 大阪勉強会 #32
  • 5. ところで・・・ • iPhoneの開発やったことある人って、 どれくらいいます? • とりあえず、一般的なiPhoneアプリ開発 のおさらいをしてみましょう わんくま同盟 大阪勉強会 #32
  • 6. いきなりだけど • Demo 1 – Xcode を使ったiPhoneアプリ開発の基本フロー わんくま同盟 大阪勉強会 #32
  • 7. iPhone開発の基本 • 必要なもの – Mac OS X 10.5 (Leopard) 以上の入った Intel Mac – iPhone SDK • 開発ツールやライブラリが入ってます。 • 会員登録すると無料で落とせます。2~3GBくらい。 – iPhone Developer Program • 実機転送やAppStoreへのアップロードに必要な ライセンス • 年額10800円 わんくま同盟 大阪勉強会 #32
  • 8. iPhone開発の基本ツール • Xcode – Apple純正の統合開発環境(IDE) – iPhoneだけではなく、 Mac用アプリ(ObjC,Java,Ruby)、 Webアプリ(WebObjects)の開発もできる。 – プロジェクト管理、コードエディタなどの 基本機能が揃っている • Interface Builder – Xcodeのサブツール – インターフェイスのデザイン専用のツール わんくま同盟 大阪勉強会 #32
  • 9. iPhone開発の基本フロー Xcode Interface Builder UIをデザインする UIの定義を書く 変数とUIの接続をする コードを書く 転送・デバッグ わんくま同盟 大阪勉強会 #32
  • 10. Windows Mobile の場合は? • 必要なもの – それなりに新しめのWindows PC – Visual Studio 2008 Professional 以上 Visual Studio 2005 Standard 以上 のどっちか – Windows Mobile 6 SDK • すべての作業がVisual Studio上でできます。 わんくま同盟 大阪勉強会 #32
  • 11. Windows Mobile開発の基本フロー Visual Studio コードエディタ デザイナ UIをデザインする コードを書く 転送・デバッグ わんくま同盟 大阪勉強会 #32
  • 12. iPhone開発 個人的な不満点 • いちいち@propertyとか@synthesizeとか 書くのめんどくさい! – しかも2つのファイルにまたがるとか・・・ – 補完もほとんど効かない Demo01ViewController.h Demo01ViewController.m わんくま同盟 大阪勉強会 #32
  • 13. iPhone開発 個人的な不満点 • それ、Visual Studio+C#だったら prop[tab][tab]でできるよ! Tabキー2回 わんくま同盟 大阪勉強会 #32
  • 14. iPhone開発 個人的な不満点 • 入力補完あんまり賢くない – 努力は認めるけど・・・。たまに型を見失うし。 – Visual Studioだったらコードヒント出るよ! わんくま同盟 大阪勉強会 #32
  • 15. C#erはXcode上ではやる気が減退する(と思う) • Objective-Cがわかんないんじゃないんだ。 メンドクサイんだ! – ヘッダファイルを使った定義 – メモリの管理 • XcodeがVisual Studioに慣れた体には 合わない – ボタンダブルクリックしても イベントメソッド作ってくれない。全部自分で書く。 – ちょっとしたことでもリファレンス開くのめんどい わんくま同盟 大阪勉強会 #32
  • 16. そして思う • C#でiPhoneアプリ作れたらなあ・・・ – 慣れてるし・・・ – 補完強いし・・・ – ノウハウはいっぱいあるし・・・ • WMとiPhoneで同じソース書くのメンドイ! – IRC 接続クラス2つメンテするの大変です @EbIRC – 同じアプリをWMとiPhoneで同時に 展開しようとすると、単純計算で2倍時間がかかる わんくま同盟 大阪勉強会 #32
  • 18. MonoTouchとは • .NETのオープンソース実装 Mono を使った、 .NETでiPhoneアプリを作れるライブラリ • Novellから、9月上旬に発表されました。 – 8月 ベータテストがアナウンスされる – 9月上旬 1.0がリリース – 9月下旬 1.1がリリース わんくま同盟 大阪勉強会 #32
  • 19. MonoTouchとは • 商用ライブラリです – Personal Edition $399/1Developer/Year – Enterprise Edition $999/1Developer/Year $3999/5Developer/Year – Personal Edition と Enterprise Edition の違い • iPhone Developer Program の Enterprise Program でできる組織内に大量配布する 向けのアプリの作成に必要 • Personal Edition のライセンスは個人にひもづくが、 Enterprise Edition のライセンスは組織内で移動可能 わんくま同盟 大阪勉強会 #32
  • 20. 見てもらった方が早い • Demo 2 – MonoDevelopを使ったiPhoneアプリ開発 わんくま同盟 大阪勉強会 #32
  • 21. MonoTouchを使った開発に必要なもの • Intel Mac + Mac OS X 10.5.x (Leopard) ~ • iPhone SDK – 最終的なビルドはiPhone SDKに依存するので 結局Macは必要です。 • Mono 2.4 – 一般に配布されているMonoランタイムです • MonoTouch 1.1 – 今回の主役。 • MonoDevelop 2.2 α (MonoTouch対応版) – MonoTouchの開発サポートが入っています わんくま同盟 大阪勉強会 #32
  • 22. MonoTouchを使った開発の基本フロー MonoDevelop Interface Builder ・エディタとデザイナの往復が大幅に減る UIをデザインする ・多くの定義が自動補完される 変数とUIの接続をする コードを書く 転送・デバッグ わんくま同盟 大阪勉強会 #32
  • 23. MonoTouchに含まれるもの • mtouchコマンド – コンパイル、iPhoneアプリへの変換、コードサイン、 実機転送などを一発で行ってくれるユーティリティ • クラスライブラリ – Monoのコアライブラリ • System名前空間以下、mscorlibとかSystemとかに入ってそうなもの – MonoTouch.ObjcRuntime • Objective-Cのブリッジなど – MonoTouch.Foundation • Objective-Cの基本クラス(NSObject)などのラッパー • .NETのライブラリだけでなく、 Objective-Cで使用されるクラスを直接使うこともできる – MonoTouch.UIKit • CocoaTouchのコアライブラリ、UIKitのラッパー わんくま同盟 大阪勉強会 #32
  • 24. あれ?ちょっとまって • iPhoneって 言語処理系乗っけちゃだめなんだよね? – 規約に書いてあって、 AppStoreに送ってもRejectされるだけ – iPhone向けにFlashやFirefoxが出せない理由 (両方ともScriptの処理系が乗っている) • .NETの処理系って MSILをJITでコンパイルしてたよね? • なんでiPhoneに.NETのアプリを配信できるの? わんくま同盟 大阪勉強会 #32
  • 25. 動的がダメなら先全部コンパイルしとけばいいんだよ! • MonoのAOT(Ahead of Time)コンパイルで、 先に全部ネイティブへコンパイルしてから iPhoneアプリの形に仕立てます。 – そのかわり、ビルドに時間がかかります。 • そのあたりの処理を、mtouchコマンドが うまい具合に全部やってくれます。 – なので詳しい仕組みはよくわかりません。 わんくま同盟 大阪勉強会 #32
  • 26. MonoTouchのデメリット • 動的コード生成が使えない – System.Reflection.Emit や System.Runtime.Remoting などが使用不可 – その他、動的コード生成に依存する処理は使用不可 • デバッグのサポートがない – ステップイン・ステップアウトなどが使えません – Console.WriteLineとかでコンソール出力を出して Xcodeで実行ログを確認するとかはできます。 • ジェネリクスでできることに制限がある – Dictionary<TKey, TValue>で値型をキーにできない – ほか わんくま同盟 大阪勉強会 #32
  • 27. MonoTouchのデメリット • .NETのライブラリは全部が全部使えるわけでは ない – 使用できるとされているアセンブリ • mscorlib.dll, System.dll, System.Core.dll, System.Xml.dll, System.Xml.Linq.dll • MonoDevelopがちょっと残念 – エディタで日本語を入力できない。 – 不安定 (MonoTouch対応版はまだアルファ) • Objective-Cのサンプルをコピペできない – iPhone依存のUIの実装などはそれを参考にして、 自分でMonoTouchに移植する わんくま同盟 大阪勉強会 #32
  • 28. Windows Mobile アプリの移植 • iPhoneのアプリが全部C#で書けるなら、 WMのアプリと多くの処理が共通化できるは ず。 • WMのアプリのiPhone移植が容易になるかも。 わんくま同盟 大阪勉強会 #32
  • 29. Windows Mobile アプリの移植 • UIはWindows FormsとCocoaTouchで大幅 に違うので書き直し必要 • デバイスの呼び出しも大幅に違うけど、 ラッパー作れば共通化できそう。 UI メイン処理 そのまま使えそう ラッパー必要そう その他 通信 ファイル 設定 カメラ GPS デバイス わんくま同盟 大阪勉強会 #32
  • 30. 実際に移植やってみる • Android用のFotoHookというアプリを パクりました! – http://d.hatena.ne.jp/hakobe932/20091014/125 5522909 わんくま同盟 大阪勉強会 #32
  • 31. 内部の仕組み Windows Mobile iPhone Windows Forms UIKit Manager (全体の取りまとめ・通信) RCImage RCImage System.Drawing.Image UIImage CameraDialog (カメラ撮影ラッパ) System.Drawing.Image UIImage CameraCaptureDialog UIImagePickerViewController わんくま同盟 大阪勉強会 #32
  • 32. できるかな? • Demo 3 – Windows Mobile 用カメラアプリの iPhone 移植 わんくま同盟 大阪勉強会 #32
  • 33. まとめ • MonoTouch便利です – iPhone開発の高速化 – WMアプリの高速移植・iPhone/WMに同時展開 – お値段高めだけど使いどころが合えば 「買い」ではないかと。 • 一部使えない処理もあります わんくま同盟 大阪勉強会 #32