Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」

1,166 views

Published on

2014/12/12 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」にてお話した資料です。

いつもの感じです。

Published in: Technology
  • Be the first to comment

Xamarin 20141212 モバイルカフェスペシャル 「C#で作るiOS/Androidのクロスプラットフォームスマホアプリ開発」

  1. 1. Xamarin 概要 2014/12/12 モバイルカフェスペシャル 「C#で作るiOS/Android のクロスプラットフォーム スマホアプリ開発」 エクセルソフト株式会社 Business Development Manager 田淵 義人 ytabuchi@xlsoft.com 03-5440-7875 / 080-7015-3586
  2. 2. JXUGのご紹 介 • Japan Xamarin User Group (JXUG) • サイト • http://jxug.org • コミュニティ概要 • JXUG は 2014/2/18 に発足した Xamarin を愛す る方のコミュニティです。お気軽にご参加くだ さい。 • 活動場所 • http://www.facebook.com/groups/xm.jxug • Twitter タグ • #JXUG
  3. 3. 本セッションのゴール お知らせ • Xamarin についてイメージを掴んでいただくこと • 特にネイティブとの違いについて • 出来ること出来ないことをご理解いただくこと • Xamarin に興味を持っていただくこと • 今日のスライドは後で URL をお送りします。 • アンケートにご協力ください。
  4. 4. 会社概要 名称 エクセルソフト株式会社 設立 平成3年7月1日 所在地 東京都港区三田3-9-9 資本金 1000万円 事業内容 ソフトウェアの開発・販売事業 主要取引先 伊藤忠テクノソリューションズ, インテル, SCSK, HPCシステムズ, NTTコム ウェア, NTTデータ, シネックスインフォテック, 新日鉄住金ソリューションズ, ソニー, ソフトバンクBB, ダイワボウ情報システム, 東芝, 日本アイ・ビー・エ ム, 日本SGI, 日本電気, 日本ヒューレット・パッカード, 日本ユニシス, ネッ トワールド, 野村総合研究所, パナソニック, 日立製作所, 富士通, マイク ロソフト, 三菱電機 等 関連会社 XLsoft Corporation アメリカ カリフォルニア州 「開発ツールはエクセルソフトで」をモットーに。 販売/サポートだけでなく、運用もお客様と一緒に考えます。 大きい会社ではありませんが、レスポンスの速さと技術の高さが自慢です。
  5. 5. 自己紹介 • 田淵義人 • エクセルソフトの Xamarin 担当。非開発者。 • Xamarin でググるとブログが出てくるかも • Twitter, SNS, Web, HTML5/CSS/JS, モバイル /ガジェット, Web マーケティングなどが好 き • Twitter: @ytabuchi • facebook: ytabuchi.xlsoft • Blog: http://ytabuchi.hatenablog.com/
  6. 6. はじめに・アンケート
  7. 7. アンケート • Xamarin 知ってますか? • Xamarin 触ってみた方は? • 開発環境は? (Windows / Mac) • モバイル開発経験は?(ネイティブ / Hybrid) • 個人として?業務として?
  8. 8. 開発者が 「今後、使 いたい」と 考えている 開発技術 http://www.buildi nsider.net/hub/su rvey/201410- techtrend-ja
  9. 9. 開発者が 「今後、使 いたい」と 考えている 開発技術 その他の回答: Titanium Mobile 7.09%, Cocos- 2dx 7.09%
  10. 10. 回答者層
  11. 11. 今までのア プリ開発
  12. 12. モバイル向けクロスプラッ トフォーム開発環境 “no silver bullet”
  13. 13. 何を使えば いいの? • ネイティブ (Objective-C/Swift, Java) • Xcode, Android Studio/eclipse • HTML5, CSS3, JS • Cordova (PhoneGAP, Monaca) • Sencha Touch • C++/Delphi • RAD Studio XE/Appmethod • JS • Titanium • ActionScript • Flash/AIR
  14. 14. ハイブリッ ド開発 共通化による最小 限の機能 分厚いラッパー リリースまでの日 数 適切な UX かどう か? App Generation
  15. 15. Xamarin(ザマリン) ・ C# / .NET / Visual Studio ・ “ネイティブ” アプリ ・ コード共通化 ・ API 100% 移植
  16. 16. Xamarin(ザマリン) ・ C# / .NET / Visual Studio ・ “ネイティブ” アプリ ・ コード共通化 ・ API 100% 移植
  17. 17. C# / .NET
  18. 18. C# で開発 • async/await, LINQ, ラムダ式などの実装 が使える • Java, Objective-C, Swift を書く必要がな い • TFS, Resharper などのエコシステム button.TouchUpInside += (s, e) => { message.Text = "Hello!"; }; from p in Table<Person> () where p.ID == id select p;
  19. 19. Q. C# 覚えるのしんどい A. あなたはあの Objective- C を覚えたのでしょう? http://qiita.com/amay077/items/2e86b44e5f274a34b 2e9 より引用
  20. 20. しかもそんなに変わらず少 ない量で書きやすく。
  21. 21. iOS ネイティブ (Objective-C) - (IBAction)button:(id)sender { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"title" message:@"messege" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil]; [alertView show]; }
  22. 22. Xamarin.iOS button.TouchUpInside += (sender, e) => { var alertView = new UIAlertView( "title”, "message", null, "OK", null); alertView.Show(); };
  23. 23. Android ネイティブ import android.widget.Button; import android.widget.Toast; Button button = (Button) findViewById(id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Button button = (Button) v; Toast.makeText(ButtonSampleActivity.this, "onClick()", Toast.LENGTH_SHORT).show(); } });
  24. 24. Xamarin.Android using Android.Widget; var button = (Button)FindViewById(Resource.Id.MyButton); button.Click += (sender, e) => { Toast.MakeText(this, "onClick()", ToastLength.Short).Show(); };
  25. 25. “ネイティブ” アプリ
  26. 26. “ネイティ ブ” アプリ • .NET ランタイム • ネイティブ UI / UX • ネイティブ “パフォーマンス”
  27. 27. Mono Miguel de Icaza (ミゲル・デ・イカザ 1972年 - ) : GNOME、Mono の開発者 1999年 ミゲル氏、Helix Code 設立 2001年6月 Helix Code を Ximian(ジミアン) に社名変更し、Mono プロジェクト開始 2001年7月 Mono OSS 化 2003年8月 Novell が Ximian を買収。ミゲル氏は Novell 開発部 門のバイスプレジデントに就任 2004年6月 Mono 1.0 リリース 2011年4月 Attachmate の Novell 買収に伴い、Mono 開発者のレ イオフ実施 2011年5月 Xamarin 設立 2011年7月 Novell から Xamarin に Mono, MonoTouch, Mono for Android などが譲渡される 2013年2月 Xamarin 2.0 リリース 2014年5月 Xamarin 3.0 リリース ミゲル・デ・イカザ (Wiki) http://j.mp/1p8kRjF | Mono (Wiki) http://j.mp/1vxsP5L
  28. 28. Windows API
  29. 29. iOS API 100% 対応
  30. 30. Android API 100% 対応
  31. 31. Xamarin.An droid http://www.buildi nsider.net/mobile /insidexamarin/0 7
  32. 32. DEMO
  33. 33. コード共通化
  34. 34. .NET BCL (Mono) • System.IO • ファイル操作の共通化 • System.NET • ネットワーク操作の共通化 • System.Linq • データ操作の簡素化、共通化 • System.XML • XML 操作の簡素化、共通化 • System.Threading • 上記全般もですが、非同期処理の恩恵
  35. 35. Xamarin を 使用した開 発
  36. 36. 共有方法 • PCL • Visual Studio 2012 / Xamarin Studio 4.2 (要追 加ライブラリ) • PCL (Portable Class Library) - Xamarin 3 の新 しいコード共有テクニック : XLsoft エクセルソフ ト • http://www.xlsoft.com/jp/products/xamarin/port able_class_libraries.html • Shared Project • Visual Studio 2013 Update 2 / Xamarin Studio 5.0 • Shared Project - Xamarin 3 の新しいコード共有 テクニック : XLsoft エクセルソフト • http://www.xlsoft.com/jp/products/xamarin/shar ed_projects.html • Xamarin.Forms • 後述
  37. 37. PCL iOS Android Windows RT
  38. 38. Shared Project プロジェクトを リンクする #if platform
  39. 39. Xamarin.For ms - 画面の 共通化 UI “コード”の共通 化 ビルド時にネイ ティブ UI にマッ プ XAML で書ける! (ただし手動) Phone
  40. 40. Pages Content MasterDetail Navigation Tabbed Carousel
  41. 41. Layouts Stack Absolute Relative Grid ContentView ScrollView Frame
  42. 42. Controls ActivityIndicat or BoxView Button DatePicker Editor Entry Image Label ListView Map OpenGLView Picker ProgressBar SearchBar Slider Stepper TableView TimePicker WebView EntryCell ImageCell SwitchCell TextCell ViewCell
  43. 43. Xamarin.For ms を活用 • Dependency Service, Custom Renderer などを 活用して機能拡張 • http://www.slideshare.net/amay077/xamarinforms • Mvvm 的なふるまい • あめいさんの資料参照 • 今後の Xamarin.Forms • ちょっと未来のXamarin.Formsを試す(1.3.0 Technology Preview) – Qiita • http://qiita.com/P3PPP/items/b4db6fa93e6ccc55fc9a • 実際に使う場合は? • Android - Xamarin.Forms をガチで使うときのプロ ジェクト構成案 – Qiita • http://qiita.com/amay077/items/e66108afb0d1e1dc26c 8
  44. 44. API 100% 移植
  45. 45. API • Xamarin.iOS • iOS 8.1 対応済み • iOS SDK リリースと同日 • 次期 iOS SDK Beta と Xamarin.iOS Alpha/Beta で次期 iOS 対応アプリを開発可能 • Xamarin は iOS 8 に完全対応 - Xamarin で iOS 8 をさらに素晴らしく (紹介記事) • Xamarin.Android • Android Lollipop, Android wear 対応済み • 大体 1ヶ月~3ヶ月程して対応版リリース • Android L Developer Preview / Android Wear を サポート (紹介記事)
  46. 46. DEMO
  47. 47. 最新機能・その他サービス http://www.xlsoft.com/jp/products/xamarin/xamarin_platform_previews.html http://www.xlsoft.com/jp/products/xamarin/introducing_xamarin_insights.html
  48. 48. Xamarin Android Player • Virtual Box ベースの高速 Android エミュ レーター • http://ytabuchi.hatenablog.com/entry/2014/12/ 11/170945
  49. 49. Sketches • iOS, Forms などの REPL 環境 • http://qiita.com/ytabuchi/items/22b616d7558b 41b4726c • https://www.youtube.com/watch?v=v9vEhwom UEY&t=19m0s Alpha 版でのみ 提供
  50. 50. Xamarin Profiler • .NET Analyzer。Instrument, LogCat で追い きれない .NET のログを取得、可視化 • http://xamarin.com/profiler
  51. 51. Xamarin Insights • Crash/Analytics データ収集サービス • Preview リリース中
  52. 52. Xamarin Test Cloud • UI 自動テストサービス • ローカル版は Xamarin.UITest, Calabash
  53. 53. FAQ
  54. 54. FAQ 0 • C# T シャツかっこいい! • http://xamarin.com/prebuilt/sharp-shirt からサ ンプルプロジェクトをダウンロードしてビルド してください。船便で Tシャツが届きます!
  55. 55. FAQ 1 • でも、お高いんでしょう? • はい。それなりのお値段です。 • 学生向けの無料ライセンスが発表になりました! • STARTER が無料と聞きました。 • http://xamarin.com/starter • Visual Studio Community 2013 で無料でア プリが作れると聞きました。 • VSC2013 と Xamarin Starter がタダで使えます。 • Mac は必須ですか? • iOS アプリのビルドに Xcode が必要です。 • Windows ストアアプリも対応してますか? • Visual Studio を使いましょう。
  56. 56. 開発OS 対象 OS IDE 必要なシステム Windows iOS Visual Studio Windows • Windows 7 以上 • Visual Studio 2010/2012/2013 Professional 以上(Express 未対応) • Xamarin.iOS (Xamarin 統合インストーラーに同梱) Mac • OS X Lion 10.8 以上 • Xcode 5 Xamarin Studio 未対応 Android Visual Studio • Windows 7 以上 • Visual Studio 2010/2012/2013 Professional 以上(Express 未対応) • J2SDK 1.6/1.7 32bit (Xamarin 統合インストーラーに同梱) • Android SDK, NDK (Xamarin 統合インストーラーに同梱) • Gtk# (Xamarin 統合インストーラーに同梱) • Xamarin.Android (Xamarin 統合インストーラーに同梱) Xamarin Studio • Windows 7 以上 • J2SDK 1.6/1.7 32bit (Xamarin 統合インストーラーに同梱) • Android SDK, NDK (Xamarin 統合インストーラーに同梱) • Gtk# (Xamarin 統合インストーラーに同梱) • Xamarin.Android (Xamarin 統合インストーラーに同梱) Mac iOS Xamarin Studio • OS X Lion 10.8 以上 • Xcode 5 • Xamarin.iOS (Xamarin 統合インストーラーに同梱) Android Xamarin Studio • OS X Lion 10.7 以上 • J2SDK 1.6/1.7 • Android SDK, NDK (Xamarin 統合インストーラーに同梱) • Xamarin.Android (Xamarin 統合インストーラーに同梱)
  57. 57. FAQ 2 • ネイティブで作ったライブラリは使えるの? • Binding して Xamarin 用 dll にする。 • ネイティブライブラリを組み込んで P/Invoke や JNI 経 由 • iOS Framework を Android で、Android の jar を iOS では使えません。 • Xamarin で作ったライブラリはネイティブで使え るの? • 使えません。 • NuGet は使えるの? • 使えます。Xamarin 専用の ComponentStore もありま す。 • WinForm や WPF 用のライブラリは使えるの? • 基本的には使えないと思います。 • Prism (Pattern & Practice 製の Mvvm フレームワー ク) は PCL 化されているので Xamarin でも使えます。
  58. 58. FAQ 3 • ソース一回書けばいいと思ってた • ネイティブの知識が必要です。 • どれくらい共通化できるの? • 30%~70% くらいかと思います。 • OS 毎に開発するのは? • UI を定義する部分 • OS 固有の機能を実装する部分 • 共通化できるのは? • ロジック (データベースへのアクセス、通信処 理など) 部分 • 定義した UI に対してデータのやり取りをする 部分 • Xamarin.Forms を使用するとベーシックな UI は共通化できます。
  59. 59. FAQ 4 • 共有化はどうやってやる の? • Universal App (Shared Project) • PCL (Portable Class Library) • Profile に注意 • リンク参照 • MvvmCross などのフレーム ワーク
  60. 60. FAQ 5 • 日本語の資料ってあるの? • 弊社で鋭意翻訳中です。 • http://www.xlsoft.com/jp/products/xamarin/support. html • 英語ドキュメントは Xamarin が山のように用 意していますので、ぜひご覧ください。 • http://developer.xamarin.com/guides/ • Xamarin Advent Calendar 2014 • http://qiita.com/advent-calendar/2014/xamarin • サンプルが欲しいんですが? • Xamarin が山のように (ry なお、Apache 2.0 ラ イセンスなのでそのまま使っても大丈夫! • http://developer.xamarin.com/samples-all/ • https://github.com/xamarin
  61. 61. 事例
  62. 62. NHK 紅白 フェンリル株式 会社 http://biz.fenrir-inc.com/application_development/casestudy_app/nhk_kouhaku.html
  63. 63. ルナルナ 体 温ノート 株式会社エム ティーアイ 様 http://www.xlsoft.com/jp/products/xamarin/apps_mti.html
  64. 64. 戦国RUN 読売テレビ/シ リコンスタジオ 様 C# ゲーム エンジ ン Paradox
  65. 65. 評価版 http://xamarin.com/download
  66. 66. モバイル向けクロスプラッ トフォーム開発環境 “銀の弾丸はない”
  67. 67. “金の弾丸はある” Business 1年1名25万 Indie 1年1名 $600 http://www.slideshare.net/kiris60/scala- benchmarks/28 より引用 (パクリ)
  68. 68. 参考資料
  69. 69. デモで使用 したサンプ ル • iOS • SingleWordKeyboard • http://developer.xamarin.com/samples/SingleWordKe yboard/ • Android • Lollipop 用サンプル一覧です。(使用したプロ ジェクトは Repo から消えてしまいました。) • https://github.com/xamarin/monodroid- samples/tree/master/android_l • XMLReading • Xamarin.Forms 版 • http://jp.xlsoft.com/demo2/xamarin/UniversalXMLRe ading.zip • PCL 版 • http://jp.xlsoft.com/demo2/xamarin/XMLReading.zip
  70. 70. Tasky • PCL • https://github.com/xamarin/mobile- samples/tree/master/TaskyPortable • Shared Project • https://github.com/xamarin/mobile- samples/tree/master/Tasky • Xamarin.Forms • https://github.com/xamarin/xamarin-forms- samples/tree/master/Todo ToDo アプリを 色々な形で。
  71. 71. サンプル・ ブログなど • Xamarin.iOS サンプル • https://github.com/xamarin/monotouch-samples • Xamarin.Android サンプル • https://github.com/xamarin/monodroid-samples • facebook グループ • https://www.facebook.com/groups/xm.jxug/ • JXUG サイト リンクページ • http://jxug.org/links.html • 田淵ブログ • http://ytabuchi.hatenablog.com/entry/toc • Xamarin ブロググループ • http://j.mp/xm-htngrp • Qiita Xamarin タグ • http://qiita.com/tags/xamarin
  72. 72. Xamarin.For ms について • Xamarin.Forms 概要 • http://www.slideshare.net/amay077/xamarinforms • Build Insider インサイドXamarin(14) - Xamarin.Formsの基本構想と仕組み • http://www.buildinsider.net/mobile/insidexamarin/14 • Build Insider Xamarin逆引きTips 連載 • http://www.buildinsider.net/mobile/xamarintips • Xamarin.Forms ドキュメント(英語) • http://developer.xamarin.com/guides/cross- platform/xamarin-forms/ • API ドキュメント(英語) • http://iosapi.xamarin.com/?link=N%3aXamarin.Forms • Xamarin.Forms サンプル (C#) • https://github.com/xamarin/xamarin-forms- samples/tree/master/FormsGallery • Xamarin.Forms サンプル (XAML) • https://github.com/xamarin/xamarin-forms- samples/tree/master/XAMLSamples
  73. 73. まとめ
  74. 74. Xamarin(ザマリン) API 100% 移植 “ネイティブ” アプリ C# / .NET コード共通化
  75. 75. “ネイティ ブ” アプリ • C# + .NET ランタイム • ネイティブ UI • ネイティブ “パフォーマンス”
  76. 76. iOS API 100% 対応
  77. 77. Android API 100% 対応
  78. 78. Xamarin を 使用した開 発
  79. 79. Xamarin.For ms - 画面の 共通化 UI “コード”の共通 化 ビルド時にネイ ティブ UI にマッ プ XAML で書ける! (ただし手動) Phone
  80. 80. ご清聴ありがとう ございます ご質問がありましたら、田淵までお気軽にどうぞ ytabuchi@xlsoft.com 080-7015-3586 / 03-5440-7875 Twitter: @ytabuchi Blog: http://ytabuchi.hatenablog.com/

×