Edited at

クラスプラットフォーム(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://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: