Xamarin バッドノウハウ大全

153 views

Published on

2016/9/10(土) の「わんくま 横浜勉強会 #08」
http://www.wankuma.com/seminar/20160910yokohama08/
で @chomado さんと発表した漫才の台本です(^^)

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
153
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Xamarin バッドノウハウ大全

  1. 1. Xamarin バッドノウハウ大全 2016/9/10 わんくま横浜 田淵義人@エクセルソフト Twitter: @ytabuchi facebook: ytabuchi.xlsoft ちょまど Twitter: @chomado facebook: chomado
  2. 2. 自己紹介 Xamarin コミュニティエバンジェリスト 2016年4月 Microsoft MVP Visual Studio and Development Technologies 受賞 Build Insider, マイナビニュース .NET開発テクノロジ入門2016年版(Xamarinの章) Japan Xamarin User Group 主催 Twitter: @ytabuchi facebook: ytabuchi.xlsoft Blog: Xamarin 日本語情報 2
  3. 3. 自己紹介( *゚▽゚* っ)З https://chomado.com http://aka.ms/chomado/ 3
  4. 4. ゴール Xamarin のバッドノウハウを知ったうえでも Xamarin っ て楽しそう!という気持ちになってもらう ( *゚▽゚* っ)З
  5. 5. Xamarin 概要
  6. 6. Xamarin 6
  7. 7. C# 6.0 7 using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Http; using Newtonsoft.Json; button.Click += async (sender, e) => { using (var client = new HttpClient()) { using (var reader = new StreamReader(await client.GetStreamAsync("xxx"))) { var json = await reader.ReadToEndAsync(); var jsonModel = JsonConvert.DeserializeObject<List<Data>>(json) .Where(x => x.Url.Contains("xamarin")) .Select(x => x.Title).ToList(); } } };
  8. 8. 2つの開発手法 8 Shared C# App Logic (PCL) Shared XAML/C# UI Code (Xamarin.Forms) iOS C# UI Shared C# App Logic (PCL) Android C# UI Windows C# UI Xamarin.FormsXamarin Native ロジックのみ共通化 UIはネイティブで個別に作りこむ
  9. 9. Xamarin ネイティブ 9 iOS C# UI Shared C# App Logic (PCL) Android C# UI Windows C# UI Xamarin Native ロジックのみ共通化 UIはネイティブで個別に作りこむ
  10. 10. Xamarin.Android (Visual Studio) 10
  11. 11. Xamarin.iOS (Xamarin Studio) 11
  12. 12. Xamarin ネイティブ 12
  13. 13. 最大公約数 13 Xamarin.Forms Shared C# App Logic (PCL) Shared XAML/C# UI Code (Xamarin.Forms) Xamarin.Forms
  14. 14. Xamarin.Forms 14
  15. 15. XAML 15
  16. 16. 16 MVVM
  17. 17. 必要な知識 17 プラットフォーム 個別 Xamarin Native iOS API Objective-C, Swift Xcode Android API Java Android Studio Windows API Visual StudioC# API 言語 統合開発環境 iOS API Objective-C, Swift Xcode Android API Java Android Studio Windows API Visual StudioC# Xamarin.Forms iOS API Android API Windows API Objective-C, Swift Xcode Java Android Studio Visual StudioC#Xamarin.Forms UI toolkit
  18. 18. 昔話
  19. 19. 過去発生した色々な問題 19
  20. 20. バッドノウハウ(という名のFAQ集) Xamarin 開発で覚えておきたいこと
  21. 21. ちょまどさん、こんな感じでいくよ! ヽ(ヽ *゚▽゚*)ノ わーい! ( *゚▽゚* っ)З ぽっぽー! 21
  22. 22. Xamarin の理解・心がけ編 Xamarin 開発をする前に覚えておきたいこと
  23. 23. Xamarin って C#er であれば誰でも簡単にスマホ アプリが作れる魔法のツールなんでしょ? そんなわけない!iOS/Android/C# の知識が全 部必要になる素晴らしいツールです! ( *゚▽゚* っ)З 23
  24. 24. Xamarin の開発をする上で大事なことって何だと 思う? バグにめげない気持ち! 自分で何とかしようとする気持ち! ( *゚▽゚* っ)З 24
  25. 25. Xamarin.Forms ってどうなの? バグにめげない気持ち! OSS になったから困ったら ソースを見よう! ( *゚▽゚* っ)З 25
  26. 26. 日本語ドキュメントが少なくて辛いんだけど? みんなで頑張って増やしていこうね! 田淵さん引き続きよろしくです! ( *゚▽゚* っ)З 26
  27. 27. プロジェクト設定・ビルド編 Xamarin 開発をする上で覚えておきたいこと
  28. 28. インストール大変じゃない? 大変です! ( *゚▽゚* っ)З (Xamarin Studio on Mac に関しては簡単) 28
  29. 29. Android のデバッグには何を使えばいいの? 実機!実機! ( *゚▽゚* っ)З 29
  30. 30. どのテンプレートで何が出来るのか良く分からん Cross-Platformがいいよ! ( *゚▽゚* っ)З 30
  31. 31. Xamarin.Forms のプロジェクト作るの凄い時間が かかるんだけど? 筋トレしてるといいよ! ( *゚▽゚* っ)З 31
  32. 32. これ何? Xamarin.Forms で作る UWP プロジェクトのバー ジョンだよ!Windows 10 Anniversary Update SDK (10.0.14393) は選択しちゃダメだよ! ( *゚▽゚* っ)З 32
  33. 33. Xamarin.Forms まだワーニングが出るんだけど? ビルドすると 多分消えるよ! ( *゚▽゚* っ)З 33
  34. 34. Xamarin.Forms のバージョンが古くね? JXUG のテンプレートを 使うといいよ! ( *゚▽゚* っ)З 34
  35. 35. Android のサポートライブラリーはバージョンアップ すべき? 固定バージョンが必要だから アップデートしちゃダメだよ! ( *゚▽゚* っ)З 35
  36. 36. ターゲットって何? 対応 OS で変わるよ! Profile 7 と 49 がいいよ! ( *゚▽゚* っ)З 36
  37. 37. Profile 変えようとしたら何コレ? Xamarin.Forms ライブラリを全部削除してから変 更するとできるよ! ( *゚▽゚* っ)З 37
  38. 38. Xamarin.Forms の Android プロジェクトのビルド に凄い時間がかかるんだけど? 初回のビルドは絶対止めちゃダメだよ! 2回目からは早いよ!筋トレだよ! ( *゚▽゚* っ)З 38
  39. 39. No resource found that matches the given name Android SDK をインストールしてね! 6.0, 5.1, 5.0, 4.4, 4.1, 4.0 が必要だよ! ( *゚▽゚* っ)З 39
  40. 40. Resource.Designer.cs に No resource found っ てエラーが鬼のように出た!>< Android サポートライブラリのバージョンが違ったり すると出ることがあるよ! ( *゚▽゚* っ)З 40
  41. 41. Android プロジェクトをビルドするとめっちゃ文字 化けするんだけど! Android SDK を最新にするか最新にしすぎてたら 戻すと良いらしいよ! ( *゚▽゚* っ)З 41
  42. 42. Android アプリで配置エラーが出たよ… エミュレーター起動し終わってる? 落としちゃダメだよ! ( *゚▽゚* っ)З 42
  43. 43. ビルドに失敗するようになったらどうすれば良い? Unzipping failed ってなに? すべてのプロジェクトの bin obj を消すんじゃ… %LOCALAPPDATA%¥Xamarin も消すんじゃ… ( *゚▽゚* っ)З 43
  44. 44. Surface Pro 4 で Visual Studio Emulator for Android に配置できない>< Hyper-V の設定を 見直すといいよ! ( *゚▽゚* っ)З 44
  45. 45. デバッグビルドが途中で終わるんだけど… なぜか SD カードにインストール されることがあるみたいよ! ( *゚▽゚* っ)З 45
  46. 46. Android の Layout.axml が開けないんだけど? Android SDK をインストールしてね! 6.0, 5.1, 5.0, 4.4, 4.1, 4.0 が必要だよ! ( *゚▽゚* っ)З 46
  47. 47. UWP ビルド出来ない…>< プラットフォームを x86 にするか チェックを付けるといいよ! ( *゚▽゚* っ)З 47
  48. 48. Material Design を設定したのにステータスバーが 黒いんだけど? Target を 5.0 以上にするの! ( *゚▽゚* っ)З 48
  49. 49. iOS に行こうか… はい! ( *゚▽゚* っ)З 49
  50. 50. Mac Remote Agent がすぐ切れるよ… Mac 側を有線接続して、ディスプレイをオンのまま にするといいよ!(省電力) ( *゚▽゚* っ)З 50
  51. 51. Storyboard が開けないんだけど… iOS SDK と Xcode と Xamarin が 最新になってるか確認してみて! ( *゚▽゚* っ)З 51
  52. 52. iOS Simulator を Mac で確認するの面倒なんだ けど? iOS Simulator for Windows を使うといいよ! 今は快適だよ! ( *゚▽゚* っ)З 52
  53. 53. iOS アプリのビルド時間、長くない? 筋トレするといいよ! ( *゚▽゚* っ)З 53
  54. 54. 開発編 Xamarin 開発をする際に思い出してほしいこと
  55. 55. Intellisense が効かなくなった… 最近大丈夫だね! ( *゚▽゚* っ)З 55
  56. 56. InitializeComponent に赤い波線が付く… 最近見ないね! ( *゚▽゚* っ)З 56
  57. 57. ここからは JXUG の沼に好んで入っていくアーリーア ダプターの皆さんからいただいた実際に開発してて 遭遇したバッドノウハウを紹介していくよ! ぽっぽー!!! ( *゚▽゚* っ)З 57
  58. 58. Visual Studio と Xamarin Studio で相互運用す ると .csproj がゴリっと書き換わったりすることがあ るみたいよ。 へー! ( *゚▽゚* っ)З 58
  59. 59. Xamarin.Forms の Slider は Min を先に指定し ないと落ちるみたい… へー! ( *゚▽゚* っ)З 59
  60. 60. Xamarin.Forms で PushModalAsync 表示をし たときに、Navigation.ModalStack.Count の値が iOSとAndroidで違うんだって。 へー! ( *゚▽゚* っ)З 60
  61. 61. Xamarin.Forms の Device.BeginInvokeOnMainThread は、 Android ではそのまま実行されるけど iOS はポス トされてから実行されるので挙動が変わるんだって。 へー! ( *゚▽゚* っ)З 61
  62. 62. Xamarin.Forms の StackLayout は設定がややこ しいよ。特に XXXandExpand が闇みたいでレイア ウトもバグるんだって。 へー! ( *゚▽゚* っ)З 62
  63. 63. Xamarin.Forms の TapGestureRecognizer の 判定範囲が Android 側で広すぎて、スワイプと かぶっておかしくなるらしいよ。 へー! ( *゚▽゚* っ)З 63
  64. 64. Xamarin.Forms の PanGestureRecognizer は iOS と Android でイベントが発火したり発火しな かったりするんだって。 へー! ( *゚▽゚* っ)З 64
  65. 65. Xamarin.Forms で InputTransparent=false にし ても iOS と Android で下のコントロールにイベント を透過できないことがあるらしいよ。 へー! ( *゚▽゚* っ)З 65
  66. 66. Xamarin.Forms の Picker も闇らしいよ… へー! ( *゚▽゚* っ)З 66
  67. 67. Xamarin.Forms の ListView はメモリリークするん だって… へー! ( *゚▽゚* っ)З 67
  68. 68. Xamarin.Forms の UWP 版 ListView だと仮想 化が有効にならないんだって。 へー! ( *゚▽゚* っ)З 68
  69. 69. Android の View は Mono 側で GC してもしば らく Java 側から握られてたりしてメモリから消える までに時間が掛かるんだって。メモリリークじゃない らしいよ。 へー! ( *゚▽゚* っ)З 69
  70. 70. iOS、デバッグできる端末と launch failed でデ バッグできない端末が未だにあるんだって。 へー! ( *゚▽゚* っ)З 70
  71. 71. Xamarin.Forms ェ… うん… ( *゚▽゚* っ)З 71
  72. 72. 多謝 @omanuke https://gist.github.com/omanuke/fc8dfe1e0a80b3ed4faf91259df46326 https://twitter.com/omanuke/status/773421753079037952 @qwerty2501 https://gist.github.com/qwerty2501/11e5bfd1cc368c19ddf693ffd1afe132 @AyaseSH https://twitter.com/AyaseSH/status/773323882098941952 @amay077, @espresso3389, @nuits_jp, @Santea3173, @ticktackmobile @chomado, @atsushieno 72
  73. 73. 参考資料 Windows で Xamarin 開発をしたい方はインストールする前 に読んでほしい - Xamarin 日本語情報 Xamarin for Visual Studio スタートアップ トラブルQA集 - nuits.jp blog 73
  74. 74. まとめ 74
  75. 75. #Xamarinはいいぞ それでも! C# でモバイルアプリが作れる Xamarin が好き!
  76. 76. Xamarin 76
  77. 77. 2つの開発手法 77 Shared C# App Logic (PCL) Shared XAML/C# UI Code (Xamarin.Forms) iOS C# UI Shared C# App Logic (PCL) Android C# UI Windows C# UI Xamarin.FormsXamarin Native ロジックのみ共通化 UIはネイティブで個別に作りこむ
  78. 78. ハンズオンレポジトリ https://github.com/ytabuchi/XamarinHOL 78
  79. 79. Prebuilt サンプル https://www.xamarin.com/prebuilt 79 Acquaint Sport Xamarin CRM My Shoppe
  80. 80. 【宣伝】次回 JXUG は JXUGC #17 お前の Xamarin アプリを見せてみろ! 80
  81. 81. ご清聴ありがとうございます

×