質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.78%

  • Android

    4524questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • iPhone

    652questions

    iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

  • Xamarin

    254questions

    Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Xamarin のデメリットを教えて下さい

受付中

回答 5

投稿 2016/08/11 23:43 ・編集 2016/08/11 23:46

  • 評価
  • クリップ 2
  • VIEW 2,642

ice_arr

score 8

Xamarin を使っている方がいらっしゃいましたら、不便だなと思う点や、この機能は不完全だと思う点を教えていただけないでしょうか?
また、アプリ開発未経験者が Xamarin を使うのは適しているのかどうかについてもお聞きしたいです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

+9

個人的な考えを述べます。
アプリ開発未経験者が Xamarin を使うのは適していないと考えます。

理由は以下のとおりです。

Xamarin は Androidアプリ、iOSアプリ を開発できる人が、コードを共通化して効率を上げるためのツールである

Xamarin は基本的に、 Android API, iOS の API を C# から呼び出せるようにしたものなので、両者について知らないとアプリ開発はできません。
画面までも同一コードで開発できるとされる Xamarin.Forms についても、同一コードで開発できる範囲はとても狭いので、それを超える要件に対応するには、Android や iOS の知識が必要になります。

まとめると Windows と Visual Studio で Android と iOS アプリの開発を始める場合、以下の知識が必要になります。

  • Java
  • Android SDK
  • iOS SDK
  • Mac
  • Xcode
  • C#
  • .NET Framework
  • Mono (.NET Framework のオープンソース実装)
  • Visual Studio
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.Forms

これだけの知識をゼロから並行して身に付けていくのは、否定はしませんが効率は悪いと思います。
まずは Java での Androidアプリ開発や、Swift での iOSアプリ開発を経験されて、慣れてから Xamarin の使用を検討することをお薦めします。

また Xamarin でアプリ開発する際のトラブルシューティングの方法について書きました。

トラブルシュートにも手間がかかるわけですが、このデメリットがメリットを上回ると判断されるなら、Xamarin は使わない方がよいでしょう。

投稿 2016/08/12 11:16

編集 2017/07/26 11:45

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

+3

こんにちは。私は Xamarin で C# とモバイル開発の勉強を始めました。全くの素人でしたので(現在も。ですが。)、習得には人の何倍も時間がかかりますが、楽しいです。

iOS/Android 両方の開発をやりたい場合、次の選択肢があると思います。

  • HTML5/JS で作成できる Cordova を使う
  • Swift、Android Java を覚える
  • Xamarin を使う

並び順は習得までの時間です。JavaScript で記述できる Cordova は敷居は低いですが、呼び出せる iOS/Android の API に制限があるため、やりたい事が実現できない可能性があります。そのため、とりあえず簡単なアプリを作りたいという場合は良いかもしれませんが、個人的にはお勧めしません。

Xamarin は皆さん仰るように、様々な知識が必要で、かつ、ツールの成熟度も低いため、敷居が高く、学習コストも高いです。ただし、iOS/Android 両対応のアプリを作るならどちらにしても Swift/Android Java は覚えなくてはいけません。 であれば、それに C# の勉強を加え、Xamarin でやった方が、書きやすい C# で記述でき、API をすべて使え、iOS/Android 両対応のアプリを一気にリリース出来るわけです。やる気があるなら Xamarin の沼に足を踏み入れて、私たちと一緒にズブズブとはまってみるのも楽しいと思いますよ。

興味があれば Japan Xamarin User Group にも遊びに来てください(^^)

投稿 2016/08/15 10:01

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

+2

私も今まで全くモバイル開発をした事が無く、数ヶ月前にVisualStudio2015でXamarinを始めたばかりです。
XamarinなのかXamarin.Formsなのかわからないため、Xamarin.Formsを想定して回答します。

困る事は、情報が少ない事です。
書籍は全然出版されてなさそうですし、ネットを見てもまだまだ情報が少ない気がします。

続いて、環境構築や設定方法が難しいと感じました。
また、ちょっとした事ですぐにエラーが出るし、エラー内容も英語な上わかりにくいです。

クロスプラットフォーム開発のためか、画面デザインはビジュアル的に作れないため、確認は実行しないとわからないです。もしかしたら確認方法があるのかも知れません。
ただ、今までデスクトップアプリを作っていた者としては、最初大変でした。
ただし、画面デザインをプラットフォーム別に設計することもでき、そちらではビジュアル的に設計できるみたいです。
私は今のところそこまでプラットフォームに特化した物を作ろうとしてなく、極力同じコードでを目指しているので、Xamarin.Formsで作っています。

逆に良いと感じた事はやはり慣れ親しんだC#で書けることです。
今現在、VisualStudioでしかもXamarin自体無償の様なので、その点もプラスポイントですね。
プラットフォームに関する事はデスクトップアプリとは変わってきますが、基本構文などは変わらないため、ある程度のところまでは楽でした。

作るアプリのターゲットがIOS、Androidでありjavaやswiftが得意でなく、C#が得意であれば、個人的にはおすすめできる物だと思います。

投稿 2016/08/12 01:05

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

+2

デメリットについて

学習コストがデメリットです。
また、最初からそうだったので、自分ではデメリットとは感じてはいないのですが、
ドキュメントのほとんどが英語というところが、デメリットになると思います。
読める読めない以前にたどり着けるかというところが重要かも。

アプリ開発未経験者が Xamarin を使うのは適しているかについて

アプリ開発未経験者が Xamarin を使うのは適していないという
amay077さんの考えとほぼ同じなのですが、

アプリ開発未経験者が

  • モバイルアプリ開発が未経験だけど、C#を使って、クロスプラットフォームのデスクトップアプリケーションを作成したことがある
  • その資産を使って、モバイルに移植する

という場合において、

アプリ開発未経験者が Xamarin を使うのは適していると思っています。
Xamarinのメリットがデメリットを超える場合だと思います。

投稿 2016/08/12 21:17

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

0

自分的にはほかの方も上げられますが、
・Xamarinはバージョン更新も多く環境構築などで多少手間取ることがある。改善されてるとはいえバグもある。
・開発情報、特に日本語のもの、が少ない。
・ネイティブで開発するよりも一段階レイヤーが増えるためその学習コストが必要
などがデメリットとして挙げられるのではと思います。

その代わりのメリットとしてはすでにご存じとは思いますが、C#などの.NET言語で多くのロジックやUIを共通に作れることですので、そのメリットとデメリットを考慮して選択されるのかと思います。
すでにC#などに慣れてるのであればだいぶメリットが多くなるのではとも思います。

個人的な経験ですが、自分はそれまでiOSもAndroidもまともに開発したことがないまま、Xamarin.iOSでアプリを作り(そちらは諸事情でペンディングになっていますが)、いまXamarin.Formsで開発しています。

iOSの知識はXamarin.iOSでの開発を通じてUIKitなども調べたためある程度ありますが、Androidについてはほとんど知りません。いまだにFragmentが何なのかもよくわかっていません。
Javaは20年ほど前に触ったことはありますが、今回は全く触ってないし見てもいません。
MacやXCodeなどもXamarin.iOSの開発時によくわからないながら調べつつなんとなく使えるようになりました。が今でもProfileとかややこしくて苦手ですが。

Xamarin.Formsを使った場合、ものによってはiOSとAndroidの知識をほぼ持たないままアプリを作ることも可能です。
もちろん製品として作る場合にはアイコンの設定方法から始め色々なところで各々のプラットフォームではどうやるかということを調べる必要があります。
が、その際に必要になる知識はXamarinを使わない開発で必要になる知識とだいぶ重なるところはあると思います。
従ってどのみち必要なところは覚えないといけないのだし、それだったら色々なところが共通化できるXamarinで開発を始めることもありなのではないかと思います。

ただしその場合はネイティブで開発するよりも調べることが多くなると思いますから、困ったときに調べて何とかできる能力がより必要になる気はします。それも英語で。
それが問題なければ以前よりもXamarinの環境も安定してきていますし、十分選択肢の一つになると思います。

投稿 2016/09/20 01:20

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.78%

関連した質問

同じタグがついた質問を見る

  • Android

    4524questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • iPhone

    652questions

    iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

  • Xamarin

    254questions

    Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

閲覧数の多いAndroidの質問