nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

私がXamarinを選びたい理由

よくよく考えたら、私1個もXamarinアプリを完成させたことないので、初心者だと思います。

てことで本エントリーは[初心者さん・学生さん大歓迎!] Xamarin その2 Advent Calendar 2016 - Qiitaの12月13日分になります。
明日はmuak_xさんです。よろしくお願いします!

なお、本エントリーは「私がXamarinを選びたい理由」ということで、あまり技術的な話ではないです。ポエムです!ポエム!

さて、個人の趣味は別として、私が仕事で使いたい一番の理由は実のところ

「スマートデバイスのクロスプラットフォーム開発環境」としてのXamarin

にはありません。

一般向けの「Xamarinはいいぞ!」はさておき、自分自身がなぜXamarinにフォーカスしたいのか?自分の都合を書いてみたいと思います。
泥臭い話になりますが、たまにはそういうのも良いかと思い書いてみました。

なお本エントリーはあくまで個人の見解であり、所属する企業を代表するものではありません。

それではいってみましょう!

これが全てだ!

「私がXamarinを選びたい理由」は以下の図がほぼ全てです。

f:id:nuitsjp:20161212133022j:plain

端的にいって、More betterな選択肢なんてなくないですか?

いくつか補足

いくつか補足すべきポイントがあります。

弊社のビジネス的背景

まず、基本的に私はエンプラの業務PCアプリ屋さんで、これまでスマートデバイス向けの仕事は自部門ではほぼ有りませんでした。

ただ最近また「とりあえずタブレット入れてみた」企業の置き換え需要によく遭遇します。
以前はタブレット導入は単独で行われる傾向が多かったと思いますが、ここ最近は社内PC環境と外出時のタブレットの相互運用を前提に、業務改善しようという働きが、活発化しているように思います。

別に今に始まった話でもありませんが、「スマートデバイス向けの開発はできません」では、失注リスクがどんどん高まってきています。

ちなみに私が社内向けにXamarinの紹介を初めてしたのは3年前の11月でした。
当時は、「うちの部門でスマートデバイスとか開発しないから」で切り捨てられましたが、現状はそこから大きく変わってきている実感があり、今期から正式にXamarinエンジニアの育成許可を得ることもでき、予算もつきました。(まだ仕事ない;;)

つまり、だいぶやばいですw <- 複雑な思いが大量にこもったやばい感

組織的事情

そんな中で、自組織的には以下のポイントがあります。

  • 組織の特色上、Webアプリでは困難な技術領域があり、Windowsアプリ開発が結構ある
    WebもASP.NETで、C#習熟者が多く、WPF&MVVM開発もそれなりに行われている
  • エンタープライズの従業員向け端末なので、タブレット1プラットフォームのケースがほとんど(そしてほぼiPad)
  • コード共有したいのは、タブレットとWPF
  • 作りたいタブレットアプリは、検索・参照・登録・更新ができればよく、高度な実装スキルは求められない(ほとんどXamarin.Formsで完結できる)
    また圧倒的に  見た目<機能
  • 部分的にグラフなどは発生するが、金の力で有償コンポーネント使って、それでできない機能は諦められる

ちょっぴり愚痴

またちょっと悲しい事情もあります。
私個人としては、エンジニアたるもの個人の時間も利用して自身のスキル向上に励むべきであると考えています。
楽しいしね。

でも、組織でそれを強要することはできません。
強要したら業務だしね。
そして、(SIerの悲しい現実として)仕事外ではプログラムなんてしませんて人が多数派です。

そうなると、業務時間を一定時間削って学習成長に振るわけですが。。。
組織の中で「今お金を生まない活動」にさける時間は限定的です。

現在の自組織の状態を鑑みて、効率よくスマートデバイス開発に取り組むには何が良いでしょうか?
Xamarinしか選択しないですよね。

自組織でのスマートデバイス開発は諦めて、自社内の別の組織に振るというアクロバットもありますけど、それは自組織の寿命を縮めるでしょう。

もちろん、AndroidやiOSの基盤知識は必要です。
そういった高度な部分は、一部の意識高い人に任せる事になるでしょう(もちろんそういう人は組織的に厚遇します。給料も上がるし、手当も出るでしょう)。
それに、一定期間とプロジェクト経験を積み上げれば、そういった部分も組織的に普遍化させることも可能かもしれません。

という落としどころに「ならざるを得ない」てのが、私の個人・組織的な背景になります。

そういう訳で

「XamarinでiOS・Android・UWPをクロスプラットフォーム開発!」だけが、Xamarinの価値じゃないよねってお話しでした。
別にAndroidとiOS・UWPの内、二つ以上作らないとXamarinの価値はない、ってことはないと思うんです。
そして、「WPFで作る業務アプリとC#でコード共有する」なんて、Xamarin以外のどのプロダクトでできるんでしょうか?(あったりしてw)

という訳で、今日はここまで。
それではまた!