0
2
実現したいこと
・window、android、iosで少ない手間や変更で複数のプラットフォームで同様の動作すること
・自由度が高い
・日本での利用者が多い(web上の情報を参考にして開発したいため)
上記を踏まえて向いている開発環境を教えていただきたいです。
その他にもなにか大きな利点がある場合、こういった事も踏まえるといいよ
ということもあればぜひ教えていただきたいと思います。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答17件
#1
総合スコア38339
投稿2023/11/21 06:29
Claudeの回答
ご要望のように、Windows/Android/iOSで同じコードを複数のプラットフォームで動作させるためには、クロスプラットフォームのフレームワークを利用するのが良いでしょう。
多くの日本の開発者が利用しているのがXamarinです。C#でコーディングでき、同じソースコードでWindows/Android/iOSアプリが作成できます。Microsoftが提供しているのでドキュメントも豊富です。
React Nativeも人気のクロスプラットフォームフレームワークです。JavaScriptで開発できます。開発速度が速く、自由度も高いのが特徴です。コミュニティも活発なので情報が豊富にあります。
Flutterもグーグルが提供するクロスプラットフォームフレームワークで、最近注目されています。Dart言語を使用します。高速な開発ができ、UIも綺麗に実装できる利点があります。
この3つのフレームワークを検討して、言語の好みや機能面での要件を考慮して選択するのが良いと思います。特に日本の開発者コミュニティのサポートがあるXamarinがおすすめです。React NativeやFlutterも汎用性が高く、今後さらに使われる可能性が高いと思います。
#8
総合スコア37
投稿2023/11/24 06:34
Flutterを少し触り始めたんですけどyamabeさんの言う通り、スクリーンショット一つとるようなちょっとしたものを作るにしても結局ネイティブコード?を個々に合わせて扱わないといけないことに気づくと途端に面倒って思ったんですよね。
そこで、YOshimさんのいうMAUIのことを少し調べました。
.NET MAUI は、Android、iOS、macOS、Windows の各 API を 1 つの API に統合することで、「1 度書けばどこでも動く」という開発者エクスペリエンスを実現すると同時に、それぞれのネイティブ プラットフォームのあらゆる側面に深くアクセスできるようにします。
https://learn.microsoft.com/ja-jp/dotnet/maui/what-is-maui?view=net-maui-8.0
というのはスクリーンショットを取るということを例にすると各々のプラットフォームに分けて処理までしてくれるというのであれば理想的には思えますね。
ただ現状使い方みたいな資料は少ない気がします。Xamarinを学習してれば間違いはないといった感じでしょうか
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#9
総合スコア109
投稿2023/11/28 02:26
Xamarinは数年実案件でゴリゴリ使っていました。
.MAUIは追っていないのですが、XamarinではネイティブOSのAPIをラップしているためOSの機能を触る場合でもC#で開発できる場面が多く、またネイティブのコードの呼び出しも可能なのでそのような連携をしたい場合には有力な候補かとは思います。後継の.MAUIでもおそらくその辺については変わらないのではないかと思います。
Flutterは聞き齧りですが、そのような場合にはネイティブの開発言語で機能を実装しそれと連携する必要があったと思いますので面倒は増えると思います。
ReactNativeはわからないのですがおそらくFlutterと同じような感じになるのではないでしょうか。
ちょっと気になったのはフォアグラウンドの別のアプリの処理に割り込むなどと言ったことは可能でしょうか?少なくともAndroidやiOSでは無理なのでは・・・と思いましたがいかがでしょう
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#10
総合スコア11
投稿2023/11/28 05:56
横から失礼いたします。
私も質問者さまと同じように、クロスプラットフォーム開発で、より効率的で少ない工数で実現できるフレームワークをここ数ヶ月くらい触っては次のものを探して…と段階を経て私なりの結論を書きます。
もちろんですが、他の回答者さまと同じで、言語としてはC#が最もクロスプラットフォーム開発に向いているというのは言うまでもないと思いますが、Qt(C++)というのもあります。
ただし、Qtを組み込んだアプリケーションを販売する場合は、ライセンス料を払わないといけなく、これが個人ではだいぶ高額なので、私はこの時点で選択肢から外れました…。
現時点で、私がたどり着いた答えです↓
・Avalonia UI(C#)
・Xamarin, MAUI (C#)
Avalonia UIは、使ってみましたが、非常に良いと感じました。
なんと、同じプロジェクトファイルで、Windows, Macともに動作します。
(iOSやAndroidは試してませんが、対応してるみたいです)
UIファイルは、WPFでいうXamlと全く同じ記述方法で書きます。
MAUIも構文は同じですが、WPF系のプロパティ名が変更されていたり、WPFよりも細かい部分をいじれなかったりします。
たとえば、MAUIではMacOSでウィンドウサイズの指定が未だにできません…。
私はどちらかというと、スマホ向けではなく、WinとMacで同じ動作することを基準にさがしていたので、スマホ向け優先であれば問題ないかと思います。
あと、AvaloniaUIはWPFをもとに作られているので、MAUIよりも各コントロールに対して細かい動作、デザインで書くことができます。
しかし、AvaloniaUIの欠点なのですが、
グラフィックスやゲームなどのレスポンスを重視するツールやアプリにはあまり向いてません。
AvaloniaUIはSkiaというクロスプラットフォーム向けのエンジンを採用してますが、ドラッグなどのレスポンスがネイティブコンパイルされたアプリと比較するとだいぶ遅延があり、モッサリします。
データを操作するためのUIを作ったり、Webページのようなふるまいを実装するなら、ダントツで適しています。
WinとMacで比較しましたが、同じSkiaエンジン上で動いてるので見た目の違いが全くありません。
個人の好みもありますので、最も良いのはご自身で気になるフレームワークを使ってみて、プログラミングで実装したい重要な部分が機能するか?を調べてみるのが最もいいのではないでしょうか。
その中で、自然と除外されるものがあると思います。
ぜひ参考になれたら幸いです。
それでは失礼いたしますm(_ _)m
あ、最後にですが、FlutterはC#で書けないので、私の好みから除外してますのでご了承を…。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#12
総合スコア11
投稿2023/11/28 07:10
編集2023/11/28 07:11すみません、補足します。
私はわりとCの構文に近い言語が好きで結構偏った回答になってしまいました。
C#はコンパイルもしますし、ネイティブに近いパフォーマンスにこだわらなければ、WEB系の言語でもいいと思います。
あと、日本の利用者が多いという点ではAvaloniaUIは適さないかもしれませんね。
しかし、理解すればとても開発がしやすく全く同じコードで動きます。
今ではAIを利用できるので、AIに聞くだけで海外から収集された学習データも参照できます。
そういった意味で、私は結構助かって利用してます。
やはり、調べて使用してみるのが一番いいかもしれません。
フレームワークは使用できる言語も分かれますし、かなり個人の好みがあると思いますので..。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#13
総合スコア37
投稿2023/11/28 08:02
編集2023/11/28 09:14omanukeさん
ReactNativeもそうでしたね・・
結局、C#での開発が一番今後や広く見据えて無難なんですね。
”フォアグラウンドの別のアプリの処理に割り込むなどと言ったことは可能でしょうか”
正確には覚えてないですがAndroidでは別のアプリやブラウザの文字を読み取ることができるアプリがありました
その程度の割り込みという認識でなら可能ではないですか
hirokin1234さん
C++はwindowsのネイティブ機能を扱えるからそれもありだと思ってはいたんですよね。
結局ライセンス料とかかかってしまうと多くの人が尻込みするので開発してる人は少なくなる=
難しくなってしまうんですよね。
「同じプロジェクトファイルで、Windows, Macともに動作します」
UI部分だけでも全くコードなど変えなくていいのならかなりいいですね。
あと、osを変えても一貫してデザインを保てるとか?これはreacrnativeで苦しんだ部分なんですよね。
jijii39さん
それは知らなかったです。結構新しいやつみたいですね。
軽量なのと処理が速いのが強みとか、クロスプラットフォームがどの程度のものなのか調べてみます。
軽く調べましたが結局は全てでネイティブ機能の使うには結局は固有の実装が必要みたいです。
そこらへん解釈してくれてってわけにはいかないようですね。
共用部分をいかに楽に構築できるかという点を考えると、皆さんの意見は非常に参考になりますね。
すでに何をまず学ぶか方向性は決まりつつあります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#14
総合スコア197
投稿2023/11/28 14:21
編集2023/11/28 15:30こういうところで、Delphi/C++Builderというのは、相当昔からクロスプラットフォームを実現できているのに紹介されないというのは、なんでだろうとは思いますが
開発環境のライセンス料の問題なんですかね。
無料版もあるのに。
RAD Studio: 概要 - エンバカデロ・テクノロジーズ
https://www.embarcadero.com/jp/products/rad-studio
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#15
総合スコア37
投稿2023/11/29 05:40
編集2023/11/29 05:41standard-softさん
ありがとうございます。
僕は個人開発なんで個人開発からの視点でしかも個人的な見解しかのべられないですが、
僕は例えばなにかをさせるソフトウェアを探すときは、最初から開発環境を絞らず目的から検索します。
そういったものに多くヒットしたものが向いているのかなあと判断してしまうので、
調べて掛からないものは自然と候補から外れてしまうんですよね。
あとおっしゃる通りラインセンス料ですかね。
所詮、個人の開発でその範疇なら無料ですよってのもわかるんですけど、だったら別探すかなということは良くあります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#16
総合スコア1085
投稿2023/12/15 01:35
有料のサービスは優良であることは理解できるのですが、いかんせんデバッグ時に情報が少ないのが面倒です。
MAUIのような新しいサービスでもそれは同じことが言えます。
FlutterやReact Nativeの利点はそこですね、ググればすぐにデバッグに有益な情報が見つかります。
まぁFlutterもReactもいじった経験ありますが、ビジネスツールとかマッチングアプリのような枠に嵌ったアプリを作るには便利ですが、ゲーム系はきついなぁ(というか無理)という感じです。
ゲームはやっぱりUnity!
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。