クラスプラットフォーム(ios,Android)について色々な記事みた後の私的大事な部分のまとめ

#はじめに(✿´ ꒳ ` )
クラスプラットフォーム(ios,Android)についてどんなものか知りたくて色々な記事をみたのでそのまとめを書いたものです。

ここでは使い方は一切書いていません。
どんなもの？っというものを書いてます。
『クラスプラットフォームどれ使おうかなー』って方の参考になればと思っています。

ここでいうものはゲーム用ではありません。ゲームなら、Unityかと思っています。

#お願い
あやまりなどあるかもしれません。あやまりなど教えていただけると嬉しいです。:bow_tone1:

#参考リンク
####ReactNativeの参考にしたリンク一覧とそのリンクで気になった部分
https://t.co/fqlNDhwGnw
>そんな問題を解決してくれる様々なライブラリがOSSで公開されています。

ここで色々紹介されているものは開発にすごくやくにたちそうだと思いました。

https://t.co/0jQWlYleg6

https://t.co/WZ5jh6CK1Q
>アニメーションを取り入れる場合、ネイティブの機能を使うと動作が軽くて済みますが、JavaScriptの中でアニメーションを使用すると重くなってしまう。

>React Nativeをそのままバンドルしないといけないので、単純なアプリを作ったときに「やたら容量が大きいな」と驚く

>「TypeScript」を使っていなければ死んでいた

####Flutterの参考にしたリンク一覧とそのリンクで気になった部分
https://t.co/DO6mFyFgxS
>VSCode(Visual Studio Code)でもFlutterの開発ができるようになったということなので

>Widgetsの把握など、実用的なアプリを作るにあたって初めに詰め込むべき事項が多めに感じます。

この下にリンクがあるのとても参考になりそうだと思いました。

>iOSでもマテリアルデザインに従うという妥協をするのが良いと思って

>テキスト入力周りに若干怪しさがあるよう

>どうしてもまだパッケージ提供されていないネイティブAPIを使いたい時は自分でプラグイン自作をがんばれば

>プロトタイピングにはFlutterはかなり向いている

>どうしてもまだパッケージ提供されていないネイティブAPIを使いたい時は自分でプラグイン自作をがんばれば

https://t.co/gEWIszBLiD
>複数のプラットフォームのUIパーツ群で、共通で存在する機能しか提供できない

>例えば Flutter は美麗なアプリを迅速に開発できる、と謳われていますが、個人的には Webアプリプラットフォームの kintone をイメージさせます（筆者は kintone について、Flutter と同じく『美麗なWebアプリを迅速に開発できるツール』と(主観で)認識しています。対して Xamarin や React Native は

https://t.co/TLxyJ7uv5r
>Flutter は多種多様な UI Widgets をフレームワーク自身が持っています。React Native と Xamarin はネイティブの UI を使う方式（ですよね？）。

>高速なホットリロード」は、本当に誇張なしに1秒以下でリロード

>UI は Flutter が完全にコントロールしているので、OS ごとの差異で苦労することもありませんでした。

>ゲーム向けではありません

https://t.co/BFY2gpR3kF
>Widgetでの画面構築はHTML＆CSSに慣れきった人にはツライ(詳細後述します)

>Dart言語について新しい言語を書いているとは思えないくらい、学習コストほぼゼロで読み書き

>Dartのコンセプトがまとまっていたので、ざっくり意訳してみます。

>代わりに変数名を_から始めることでprivateと認識します。

>いかんせんWidgetの使い方にクセがありました。

https://t.co/jHeexxYIBy
>デザイナー向けの画期的な新ツール Flare のリリースを発表しました。このツールを使えば、直接 Flutter アプリに埋め込んでコードで操作可能なベクター アニメーションを作成できます

>しかし、私たちは、モバイル以外にも幅広いプラットフォームに Flutter を展開したいと考えています

>JavaScript にもコンパイルできるという Dart プラットフォームの機能を活用しています。これにより、何の変更も加えることなく、Flutter コードを標準ベースのウェブで実行できるようになります。


####Xamarinの参考にしたリンク一覧とそのリンクで気になった部分
https://t.co/EzZG9DWRpl
>提供されるUIコントロールは少ないですが、http://Xamarin.Android , Xamarin.iOS の上に成り立っているので、 ネイティブの部品をXamarin.Forms化することは容易

>Xamarin自体は無償になりましたが、企業利用の場合、大抵は Visual Studio の購入が必要になります。

https://t.co/0i7alhiIge
>厳密には1つの開発環境がiOSとAndroidをサポートするわけではなく、iOS用／Android用それぞれのXamarinが存在

>Visual Studio Communityが使用できない組織の場合は、製品版のVisual Studioを購入することになります。

https://t.co/FSYE92ZUbc
>Windows用の.NETアプリを作成することはできません。ただし、APIはほとんど同じなため、記述したコードをVisual Studioを使用してWindowsに流用することは可能

>Macの場合はXamarin Studioの環境を用意するだけで開発することが可能です

>最初からMacで開発することをおすすめします。その理由は、iOSアプリはMac OSでなければ動作しないからで

>共通化出来るコードは基本的にOSに依存しない、ビジネスロジックの部分

>「Xamarin.Forms」を使用することにより、画面も共通化することが出来ます

https://t.co/OfWdQCdDmI
>サンプルはありますか？

この下にhttps://developer.xamarin.com/samples-all/ がありました。


https://t.co/qvqaClxw2u
>iPhoneやiPadだけでなく、iOSをベースとしているApple WatchやApple TVなどもサポートしていることだ



#でざっくり自分はこう思った(｡･ω･｡)
####個人ならXamarin,企業ならReact NativeかFlutter。
その理由は、
企業でXamarin使うとどうやらお金がかかりそうだから。
XamarinはUnityのような統合開発環境があってReact NativeとFlutterとは少し違う？ツールがあるみたいだぞ！！っと思ったから。

####React NativeはAndroid,iOSそれぞれの見た目にこだわりたい時、Xamarin,Flutterはそういうのはちょっと置いといてと思う時

その理由は、
React NativeはAndroidで使われているボタン、iOSで使われているボタンのような感じでネイティブアプリにそったものを大変だけど作れるといった感ですが、以降二つはそういうのはちょっと難しい、どっちも同じUIで作られるといった印象だったから。

#大事だと思う部分を表でまとめてみた(◍•ᴗ•◍) 

| クラスプラットフォーム   |       言語 |    提供してくれているところ    |
|:-----------------|:------------------|:------------------|
| React Native             |              JavaScript|        facebook        |
| Flutter          |            Dart |       google       |
| Xamarin             |              C# |        Microsoft        |


#それぞれ注意！ここは外さない方がいいところについてのまとめ
####React Native
・アニメーション入れると遅くなるらしいので、アニメーション多用した感じにしたいならやめた方がいい
・単純でもやたら大きくなるらしい。他二つは違うのかはわからない。あ！でもReact Nativeはそれぞれのコンポーネンツに対応しているからやはりアプリ自体の容量大きくなりそう( ･ὢ･ )
・いい感じのライブラリの選定が必須そう[React Native製アプリのクオリティを上げるために工夫した事](https://t.co/fqlNDhwGnw)で紹介されているものかなり参考になりそうです。以下ピックアップ。
https://nativebase.io/
・「TypeScript」を使っていなければ死んでいたという言葉がなんとも印象的でした。React Nativeは何か間違うと結構手こずりそうなイメージ(o*｡_｡)o

####Flutter
・グーグルが提供しているのでiosもマテリアルデザインに従う必要がありそう(｡･ω･｡)
・テキスト入力周りに若干怪しさがあるそうなので、その確認した方が良さそう。テキスト入力があるアプリとかは。
・ホットリロードというものがありリロードが高速らしい。待つのが嫌いならFlutter！？
・FlutterはJavaScript にもコンパイルできるから、何の変更も加えることなく、Flutter コードを標準ベースのウェブで実行できるようになるそう。

####Xamarin 
・上にも書きましたが企業で使うなら有料覚悟。
・Macの場合はXamarin Studioというものがあるらしいのでこれを使うように。
・画面の共通化にはXamarin.Formsが必要らしい。


#クラスプラットフォーム使うなら…
・UI、UX妥協すること。
・iOS、Androidに精進している人がいないと凝ったものは難しそう。
・プロトタイプ作るのにはおすすめ？

#最後に
記事閲覧ありがとうございました。:hatched_chick: