Submit Search
XamarinStudio勉強会 2014/09/08
•
2 likes
•
1,331 views
孝文 田村
Follow
クロスプラットフォーム開発ツール、XamarinStudioの社内勉強会資料から、社内情報を削った資料です。
Read less
Read more
1 of 55
Download now
Download to read offline
More Related Content
XamarinStudio勉強会 2014/09/08
1.
XamarinStudio勉強会 2014/09/08 田村孝文
1
2.
いいわけ • Xamarin弄り始めて1ヶ月未満の入門者です。
• 楽しいので、みんなに知ってもらいたくなりました。 • iOS側から見た話が多くなります。 • Androidな皆様すみません。でもAndroid側から見ても似た ような状況だと思います。 • 用語の間違いがあるかもしれません • 英単語の発音がおかしいと思います(田村の英語能力の不具合) 2
3.
今日の予定 • クロスプラットフォーム開発としてのXamarin
30分 • 概要の説明、メリット/デメリット • XamarinStudioを使ってみる 30分 • いくつかデモ、技術キーワード紹介 • おまけ:ハマった事、参考 • 後で見てください。 3
4.
クロスプラットフォーム開発 としてのXamarin 4
5.
クロスプラットフォーム(1) • 一つのソースで、いろいろなプラットフォーム
で動くアプリケーションを開発する事 • ここではスマフォ領域(iOS/Android/ WindowsPhone..)に限定します。 • いくつか手法/プロダクトがありますが、方向 性が違っています。 5
6.
クロスプラットフォーム(2) • すべてをHTML5
+ JavaScript で実現(PhoneGap Titanium) • UIもビジネスロジックもHTML5+JavaScriptでがんば る • ネイティブのWebViewで動いている感じ • iOSもAndroidも1ソースで行けるけど、重くてUIの チューニングがやり難い 6
7.
クロスプラットフォーム(3) • すべてをRubyで実現(RubyMotion)
• ライブラリ部分だけ共通化(mRubyやC++) • UIはネイティブ(Objective-C/Java)で書く • ゲームに特化 (Unity) 7
8.
Xamarinの方向性(1) • ソースを「共通部分」と「OS依存部分」に分離
• 共通部分は.NET Frameworkの機能を活用 • 通信、ローカルストレージ、イベント、等など • UIの共通パーツもある(Xamarin.Form) • OS依存部分は、SDKを薄く覆うラッパークラスが用意されている • iOSとAndroidのSDK部分は別々のソース(C#)を書く • SDKのアップデートに追従しやすく、UIのチューニングがしやすい 8
9.
Xamarinの方向性(2) • 共通部分/Android部分/iOS部分
に分けて管理 9
10.
Xamarinの方向性(3) • UIの考え方:2種類用意されている
• OS依存部分 ネイティブUIの薄いラッパー • MonoTouch, MonoDroid • 共通部分 汎用UIパーツ • Xamarin.Form http://xamarin.com/forms • 2種類を組み合わせていくのが良さそう 10
11.
Xamarin.iOSの実行モデル • コアライブラリ郡のラッパー
引用:http://www.slideshare.net/amay077/xamarin-201406 11
12.
Xamarin.Androidの実行モデル • コアライブラリ郡のラッパー
引用:http://www.slideshare.net/amay077/xamarin-201406 12
13.
共通部分 引用:http://www.slideshare.net/amay077/xamarin-201406 13
14.
Xamarinのメリット(公式発表) • 平均75%のコードを共通化出来る
• Xamarin.FormsというUIパーツを使うとほぼ100% 共通化も可能 • ネイティブ(Objective-C/Java)へのアクセスもサポー ト、ネイティブのSDKやUIにもアクセス可能 • .NET/C#で全部作れる http://www.xlsoft.com/jp/products/xamarin/platform.html 14
15.
共通化:共通化できそうな処理 • I/O関係、通信やファイル/DBアクセス
• ファイルパスはOS毎に違うけど、操作は共通化 • 非同期処理 • データのモデル、ビジネスロジック • シンプルなUI 15
16.
共通化:OS毎になりそうな処理 • センサー
(GPSや傾き、光度etcetc..) • OS標準サービスへのアクセス • 電話帳やカメラや通知やetcetc.. • リッチなUI • 画面遷移やアニメーション、凝った画面 16
17.
Xamarinのデメリット(1) • 無料ライセンス(STARTER)だと、アプリのバイナリサイズに制限が入る、共通UIが使えない
• 有料ライセンス(INDIE) 個人向け 25ドル/月 ※トライアル期間30日あり 17 https://store.xamarin.com
18.
Xamarinのデメリット(2) • 情報の少なさ
• 日本語だと検索してもあまりヒットしない、書 籍が少ない、勉強会もほとんどない • 部分移行が出来ない • これは他のクロスプラットフォームでも同様 • RubyMotionなら出来るらしい。 18
19.
Xamarinのデメリット(3) • 当然ネイティブ側SDKの知識が必要=学習コス
トがすごい 19
20.
Xamarinのメリット(私的見解) • C#や.NETの世界、けっこう良い
• LINQ、イベントの仕組み、非同期処理、 ADO.NET、アクターの概念、Rx、等など • C#が他言語の良い所を取りこみ+GUIを作る のに便利な仕組みが準備されている。VBの便 利さがちらほら見える。 20
21.
Xamarinのメリット(私的見解) • Objective-Cで書くよりも、短く簡単に書く仕
組みが揃っていると思う。 • OCamlから派生したF#(関数型言語)も使える • 個人的な本命 • 関数型言語でアプリを書いたらどうなるのか? 21
22.
もしも導入するとしたら? • ◎まずは「プロトタイプ作成」で使って慣れる
• ◎「新規アプリを作る」時に使う • まずは慣れてるOS(iOS/Android)の新規アプリを作る • その後に慣れていない方のOSのUI部分を作る • ◎「既存アプリの別OS版を作る」時に使う • リリース後にネイティブアプリもXamarinで置き換える • ×既存ネイティブアプリのVerUpで採用すると、無駄にハマりそう。 • 部分移行(共通部分を作ってネイティブでアクセス)が出来ない 22
23.
導入事例 • あまり見つからない(アプリが何で出来てるか公開はされ
にくい) • NHK紅白歌合戦アプリ • http://qiita.com/amay077/items/ b7235aefab8d2e3b72f1 • ルナルナ 体温ノート • http://www.xlsoft.com/jp/products/xamarin/apps.html 23
24.
質疑応答 24
25.
XamarinStudioを使ってみる 25
26.
XamarinStudioを使ってみる • XamarinStudioのインストールと初期画面
• デモ:空プロジェクトを動かす • デモ:画面をStoryboardで作る • デモ:検索アプリ 26
27.
XamarinStudioのインストール • XamarinStudioはMac用
• Windowsだと、VisualStudio + Xamarin.iOS for Visual Studio • iOSアプリを作る場合は、まずXcodeを入れておく。 • MacのAppStoreからインストール • https://xamarin.com のDownload nowからダウンロード&インス トール • インストールは時間がかかるのでお茶でも飲んで待つ。 27
28.
XamarinStudioの初期画面 • チュートリアルサンプルは”TaskList”がおすすめ。”T-shirt
Store”は 無料ライセンスだと実行出来ない(バイナリが大きすぎる) 28
29.
デモ:XamarinStudioの初期画面 29
30.
デモ:空プロジェクトを動かす(1/5) • C#→MobileApps→Blank
App ソリューションを作成 • iOSシミュレータで動かす • Android側は知識不足で出来てません。 • ファイル構成の紹介 • 共通部分、iOS部分、Android部分 • アセンブリ = ライブラリのようなもの 30
31.
デモ:空プロジェクトを動かす(2/5) • プロジェクト構成は3つ
• 共通部分 • iOS部分 • Android部分 • 見慣れたファイル 31
32.
デモ:空プロジェクトを動かす(3/5) • アセンブリ≒ライブラリ
• 使うライブラリは参照に 入れる • ソース上でusingキーワー ドが必要 • 扱いがJavaのjarファイル に良く似てる 32
33.
デモ:空プロジェクトを動かす(4/5) • iOSシミュレータで動かすには、「スタート
アッププロジェクトに設定」が必要 33
34.
デモ:空プロジェクトを動かす(5/5) • ライセンスチェックが入るかもしれない
34
35.
デモ:空プロジェクトを動かす 35
36.
デモ:画面をStoryboardで作る(1/4) • ソリューションをC#→iPhone→SingleViewApplicationで作
る • XXXViewController.cs と XXXViewController.design.cs • ボタンとテキストボックスを追加 • プロパティの「name」を設定すると、design.csに変数 が出来る • イベントの登録 36
37.
デモ:画面をStoryboardで作る(2/4) • Storyboard画面はXcodeとほぼ同じ
37
38.
デモ:画面をStoryboardで作る(3/4) • UIパーツを追加して、プロパティの「name」
を設定すると、XXX.design.csに変数が出来る 38
39.
デモ:画面をStoryboardで作る(4/4) • イベントの登録、方法が2種類
• StoryboardのUIパーツをダブルクリックで 関数生成される • += でのイベント登録 39
40.
デモ:画面をStoryboardで作る 40
41.
デモ:知恵検索アプリ(1/5) • 検索ボックスでキーワードを入れ
て、知恵検索する • 使った技術 • Storyboardで画面作成 • 非同期通信(async/await) • LINQ git https://github.com/taktamur/ChieSearch 41
42.
デモ:知恵検索アプリ(2/5) • async/await
非同期処理の為のC#仕様 42
43.
デモ:知恵検索アプリ(3/5) • await以降は、非同期処理が終わってから実行される
43
44.
デモ:知恵検索アプリ(4/5) • LINQ
= 統合言語クエリ Language Integrated Query • .NETで、配列等のコレクションを扱う為の仕組み。 SQL的な見た目 • from ~~~ where~~~ select ~~~ • 各種データソース用のLINQが用意されている • データベース用、XML用、オブジェクト用、 http://msdn.microsoft.com/ja-jp/library/bb308959.aspx 44
45.
デモ:知恵検索アプリ(5/5) • LINQ
to XML • 「xmlDocumentにある”Question”の集合か ら、”Content”の値を集めて返す」 45
46.
デモ:知恵検索アプリ 46
47.
質疑応答 47
48.
おまけ 48
49.
ハマったらつぶやけ! • まだニッチなせいか、ハマってる事をTwitter
につぶやくと、詳しい人が教えてくれるかも http://togetter.com/li/715991 49
50.
ハマったら記録を晒せ! • BlogやQiitaに記録を残しておくと、詳しい人
が教えてくれるかも http://qiita.com/paming/items/682430866791dfba86e2 50
51.
ハマりポイント • 無料(starterライセンス)だとバイナリサイズに制限があ
るが、チュートリアルのバイナリがでかくて動かない • チュートリアルのTシャツサンプルはアウト • Xamarinでの日本語入力があやしい時がある • 変換がうまく出来ない • 最新版では日本語入力できないかも? 51
52.
ハマりポイント • XamarinStudioそのものが固まる/メニューがグレー化
• XamarinStudio再起動でOK、Xcodeもよく落ちる • iOSシミュレータもよく固まる • C#のイベント += と、iOSのDelegateを混ぜて使うとトラブルを起こ す事がある • Xamarinで遊ぶ(3) objcの「デリゲート」とC#の「イベント」が干 渉する Xamarin.iOSでUITableViewの罠 / Xamarinの進化に望む事 52
53.
ハマりポイント • 同じ用語でも意味が違う
• objcの「デリゲート」とC#の「デリゲート」は別物 • 日本語の資料は古い事がある • 昔はXamarinでStoryboardを使えなかった→Xcode でデザインをやる、という記事が多いが、今は違う 53
54.
資料(1) • 配布サイト
• http://xamarin.com/studio (本家) • http://www.xlsoft.com/jp/products/xamarin/studio.html (日本代理店?) • Build Inside • http://www.buildinsider.net/tagcloud?tag=Xamarin • CodeZine • http://codezine.jp/article/detail/7907 • Qiita • Xamarin vs 他のクロスプラットフォーム開発ツール http://qiita.com/amay077/items/ 01917ef1be3da9259348 等 • 田村の記録 http://qiita.com/paming/items/1bb43f55033dc78eb0b9 54
55.
ご清聴ありがとうございました。 55
Download