LoginSignup
9
8

More than 5 years have passed since last update.

Xamarinでマルチプラットフォーム用のプロジェクトを作る

Posted at

Xamarinでクロスプラットフォーム用のプロジェクトを作ってみる

…思いっきりかぶりました。
しかも前日と :cry:
ネタもないし、仕方ないのでこのまま行きます。
(書き出し時点で公開前日19時…)

環境とか

iOS対応させるのに結局Macは必要になります。
そこで、以下の環境を使います。

  • Mac
  • Xcode
  • VirtualBox
  • Windows10
  • VisualStudio 2015 Community
  • Xamarin iOS/Android

Mac上でVirtualBox使ってWindowsを動かし、その上でVisualStudioを動かします。

AndroidとiOSとUWPと

上記を対応してしまえばたいがいの環境で動くアプリが作れてしまいます。
(この際Macはごめんなさい)
まずはUWPのプロジェクトを作り、ざっくりと動くところまで作っていきます。

さて、サンプルでどんなものを作ろうか、と思いましたが、とりあえず
VisualStudio Onlineにログインするアプリを、APIを使って書いてみようと思います。
(マジで作るならAPI使わずにライブラリ使いましょう)

VisualStudio Online関連のリンク

VisualStudio Online関連のAPIはここにまとまっていて、もうこれだけでお腹いっぱいいっぱいです。
しかし、これはOnlineのAPIです。
クライアント用のライブラリはここにあって、このライブラリを使うとオンラインもスタンドアロンでインストールするTFSでも両方使えるようなので、こちらを使う方が全然いいでしょう。

Solutionを作る

VisualStudioから空のSolutionを作ります。
この中にすべてのプロジェクトを収めていきます。
xac01.PNG
名前はアプリ名で。

UWPのプロジェクトを作る

プロジェクトを作る前に、Solutionのディレクトリ内にプロジェクト用のディレクトリを作っておきます。
Solutionを右クリックしてメニューを出し、エクスプローラーでフォルダを開きます。
xac02.PNG

このフォルダの中にプログラム名_uwpというディレクトリを作り、その作ったディレクトリの中にプロジェクトを作ります。
xac03.PNG

iOSやAndroidも

同じようにiOSやAndroidのプロジェクトもSolutionディレクトリ内にディレクトリを作ってその中にプロジェクトを作ります。
こうすることで、プロジェクトファイル(.csproj)を同じ名前にでき、出来上がるアプリ名を同じものにすることができます。

共通で使うもの

各プラットフォーム共通のデータ構造や処理はまとめた方が二度手間になりません。
そのため、PCLや共有プロジェクトにして使い回すようにしましょう。

自分のやり方としては、

中身 形式 備考
MVVMの中のMとVM 共有ライブラリ
MVVMの中のV 共有ライブラリ Xamarin.Forms
言語リソース PCL .reswファイル

と分けます。
MVM + Vにする理由は、Xamarin.Formsが使えないプラットフォームがあるかもしれないからです。
例えば、ほら。Macとか。

共有ライブラリにする理由は、System.Net.Httpとかを使いたくなるからです。
特に、Mを取得するのに HttpClient を使いたくなりますし。
そうなると、PCLではちょっと、となるんですよね。

また、これは単に少し前のバージョンのXamarin.Formsで起きてたことなのですが、共有プロジェクトにするとXAMLがうまく使えませんでした。
その経緯もあり、VはXAMLを使わないXamarin.Formsで書きます。
(あくまでも自分のやり方です)

バージョン管理

ここはXamarinとは関係ないのですが、自分が使うバージョン管理システムは、

  • 公開する場合はGitHub
  • 非公開の場合はVisualStudio Online

に置きます。
結局どちらもGitでバージョン管理をするのですが。

VisualStudio Onlineはプロジェクト数が事実上無限になってたり、自動ビルドもあったり、自動ビルドもXamarinに対応してたりでかなり依存しています。
VisualStudioからも使いやすいですし。
…あ、少し前に名前変わってVisualStudio Team Serviceになったんでしたっけ。

最後に

いろんなところで書かれていることですが、C#で書くことで非常に少ない手数でプログラムを書くことができます。
また、C#6になって ?. とか $"〜{id}〜" とか {get;set;} = new xxx とか書けたりするので、ますます手数を減らせるようになっていて幸せになってます。

Xamarin、もっとみんなで使いましょう。
(少し高いのがなぁ…)

あ、サンプルはまたGitHubにでも登録します。

(書き終わり時点で22時50分…なんとか…)

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8