個人的なメモ

Tomohiro Suzuki @hiro128_777 のブログです。Xamarin に関する事を中心に書いています。 Microsoft MVP for Development Technologies 2017- 本ブログと所属組織の公式見解は関係ございません。

Xamarin 今そこにある危機

はじめに


こんにちは、@hiro128_777です。


この記事は「Xamarin その1 Advent Calendar 2017」の14日目になります。


まず、はじめにお断りさせてください、今回テクニカルな内容は全くございません。


私はXamarinが大好きです。今更述べるまでもないですが、Xamarinにはたくさんの魅力があります。そして、もっともっと普及してほしいと思っています。
ですが、残念がら良いものが必ず普及するとは限らないのが世の中の常です。私は開発者なので私が感じるXamarinの魅力はあくまでも「開発者として感じる魅力」であると言えます。


そんな大好きなXamarinでも一歩引いてみると、その置かれている状況は決して楽観視できないと危機感を感じています。


そこで今回はその「楽観視できない状況」をXamarinが大好きな皆さまと共有することで現状を打開するためにこのような記事を書きました。


具体的に何が「楽観視できない状況」なの?


私は特に以下の3つの状況を「楽観視できない」と感じています

  • Microsoftが提供してる主力製品のアプリがそもそもXamarin製のものが少ない!
  • 若年層への浸透が薄い!
  • 自社開発時とは相性が良いが、開発会社への委託とは相性が悪い!

Microsoftが提供してる主力製品のアプリがそもそもXamarin製のものが少ない


Microsoftが提供しているOutlookやTeamsなどの主力製品のアプリ自体が現状Xamarin製ではありません。主力製品ではないものにはXamarin製のアプリもあります。例えば、Microsoft PixはXamarin製です。


つまり開発環境の提供は行なっていても、自社での製品への利用はあまり進んでいません。これは、単にXamarin買収のタイミングの問題かもしれませんが、シンプルに「なんで??」と疑問に思います。


この状況こそがXamarinの問題を如実に表しています。つまり、Xamarinはまだ主力製品に食い込む程の地位は得ていないのが現実です。


では、Xamarinが主力製品に食い込めないのはなぜでしょうか。真の理由は私にはわかりませんが、まだまだ普及率が低いのは大きな問題だと考えています。とにかく、普及率を上げていく必要があります。


そして普及率を上げようとすると次の問題が出てきます。


若年層への浸透が薄い


これは、勉強会に参加するとよく分かります。勉強会の参加される方々も30代以上の方が多く、20代の方は少ない状況です。(そもそも私自身がオッサンです。失礼しました。)ではなぜ若年層への浸透が薄いのでしょう。その理由も考えてみました。

未経験者がアプリ開発を始める際の第一の選択肢にならない


例えば、プログラム未経験の学生さんがスマートフォンのアプリ開発を行おうと思い情報を調べた時には、まずはネイティブの開発の情報を目にする可能性が高く、当然ながらネイティブ開発を第一の選択肢に考えます。その時点でXamarinというワードを目にしても、それがスマートフォンのアプリ開発のプラットフォームだとは気づかないか、気づいても面倒くさそうなのでスルーする可能性が高いでしょう。当然、そのままネイティブで開発を始める可能性が高いと言えます。


その後、経験を積んだ後にXamarinを知りそのメリットに興味を持ったとしても、さらに学習コストを支払ってXamarinに手を出す方は少数派でしょう。
次のタイミングとしては、会社から「Xamarinを調査しなさい」、「Xamarinを覚えなさい」と言われたタイミングが多いと言えます。勉強会でもそういうお話はよく伺います。多数派の方々がXamarinに手を出すとしたらこのタイミングです。よって、ここまで来ないとXamarinの利用者は増えないということになります。


専門学校での採用が少ない。


プログラマーを職業として選ぶ方々には専門学校で学ぶ方も多くいらっしゃいます。毎年毎年、たくさんの方々が専門学校を卒業しプログラマーとして働き始めるわけですから、業界における影響は小さくありません。ところが、まだまだ企業ではネイティブ開発が多数派のため、入学当初から就職を視野に入れる専門学校では、Xamarinは標準の開発プラットフォームとして利用されにくい状況にあります。もちろん、先生たちはクロスプラットフォームの重要性を理解しており、チャレンジすべきであると考えている先生方もたくさんいらっしゃいますが(実際、そういうお話も聞きました)、2年間という短い期間でネイティブ開発を習得した上の追加の技術として習得してもらうには指導者も少なくなかなか困難です。


また、専門学校はオープンキャンパスなどで生徒さんを募りますが、 その際に高校の生徒さんやその親御さんたちにアピールする際も「Xamarinを使ったクロスプラットフォーム開発を指導しています」と言ってもその時点で生徒さんや親御さんがクロスプラットフォームの知識が十分にある可能性は低いため、ネイティブ開発を前面に出した方が圧倒的にアピール度は高いでしょう。


よって、現状どうしても専門学校では、ネイティブの開発が基本になるのではないでしょうか。


自社開発とは相性が良いが、開発会社への一括委託とは相性が悪い


まず、クロスプラットフォーム開発の初期コストは個別開発と比べて半額になるようなことはなく、結果として費用負担をする方が期待するほどは大きくは変わらないため、費用面のメリットだけを期待すると肩透かしをくらってしまうという弱点があります。


効果的にクロスプラットフォーム開発を行うということは対象のプラットフォーム全てのUXやAPIを理解した上で開発する必要があり、設計コストが非常に大きくなります。実装時にもプラットフォームごとの違いを考慮し共通化するという細かい配慮が必要となるため結果として初期コストは意外と下がりません。


それでも自社開発であれば、初期リリースを小さくすることで初期コストを抑えるなど色々工夫できるのですが、開発会社への一括委託でウォーターフォールで開発するようなケースでは全機能を一括開発する事も多いです。そうすると、開発コストは個別開発と大きく変わらない状況になりますが、開発会社への委託の場合には、Xamarin導入の動機には「共有化によるコストダウン」が掲げられている事も多く、「メリットが少ない」と判断されてしまうリスクが高くなってしまいます。


一方で、改修コストはかなり下がります。個別開発では、設計時に考慮はするもののコードによる縛りがないためどうしても実装の違いが大きくなるリスクが高いです。それにより改修時に影響範囲が大きくなり、想定外のコストが発生する危険性が高くなります。クロスプラットフォーム開発ではロジック部分であればそこはコード共有化で保証され、リスクは明らかに少なくなります。UI部分でもViewModelまでを基本的に共有化するため、実装の違いは小さく抑えられます。実装の違いが小さいということは、当然リリースまでのスピード面でも、優位性があります。


つまりライフサイクル全体のコストで考えればメリットは十分に享受でき、Xamarinは有力な選択肢となりますが、開発会社への一括委託ではイニシャルコストでは大きな差が出にくいため、その時点でXamarinを選択する動機が薄くなってしまうのも事実です。Xamarinを選ぶ企業は目先だけではなくしっかりライフサイクル全体で判断しているのでしょう。


そいういう意味でXamarinは日本のSI業界の商習慣との相性が悪いのです。もっと正確に言えば、これはXamarinに限ったことではありませんが、日本のSI業界の商習慣が世界基準の開発ツールの進化から取り残されているのです。とは言うものの、エンタープライズ業界での採用が進まなければ普及率は上がりませんので、ここも非常に悩ましいところです。

では、どうしたらいいのか?


極々当たり前のお話になってしまいますが、何よりもとにかく初めてモバイル開発に触れる時点での選択肢にXamarinが入るようにすることが何よりも重要だと思っています。


それには専門学校などの授業のカリキュラムにXamarinが取り入れられる必要があります。それには企業での導入が進み、企業からの希望人材のスキルセットにXamarinが入る必要があります。ですが、それを待っていたらきっと時間切れになってしまいます。よって、まずは学校に普及するように働きかけた上で、それによってさらに企業での導入が進むようにしなければいけないでしょう。それには学校に対してこちらからアプローチをかけていくしかありませんが、なかなか簡単にはいきません。


もし、この記事を学校のご関係者の方々がご覧になっていましたら、是非、一度学校でのXamarinのハンズオンをご検討していただけませんでしょうか。


私はコミュニティ活動として無償での学校様でのハンズオンも行なっておりますので、ご興味あればtwitterでメッセージいただければご対応させていただきます。


Xamarinに取り組むということは強制的にクロスプラットフォームでアプリを考えなくてはならなくなりますので、自然とクロスプラットフォーム開発の様々なスキルが身につきます。これは、個別プラットフォーム開発を続ける限りなかなか身につかない貴重なスキルであり、必ず企業からも歓迎されるスキルです。



最後に

とりとめもなく色々書いてしましましたが、とにかくXamarinをもっともっと普及させていきたいです!
そのためにはこの記事をご覧いただいた皆様のご協力が不可欠です。よろしくお願いいたします!
私もできる限りのことをやっていきます!!


それでは明日は@himarin269さんです。よろしくお願いします!