SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

最新バージョン「Visual Studio 2017(Visual Studio "15")」特集(AD)

使う言語はC#のみ! Macアプリケーションはもちろん、Webアプリやスマホアプリも開発可能な「Visual Studio for Mac」登場

最新バージョン「Visual Studio 2017(Visual Studio "15")」特集 第3回

  • このエントリーをはてなブックマークに追加

スマートフォンアプリケーション開発(1)

 それではスマートフォンアプリ開発を例に、Visual Studio for Macについてもう少し詳しく紹介していきます。

ソリューションの作成

 早速、新規のソリューションを作成してみます。新規のソリューションを作成するにはメニューの[ファイル]-[新しいソリューション]を選択します。

新しいソリューション
新しいソリューション

 いろいろなテンプレートが用意されていますが、ここでは[Multiplatform]の[Native(iOS, Android)]-[Single View App]を使用して作成します。アプリ名はXamApp1としました。すると、以下のような構成のソリューションが作成されます。

マルチプラットフォームアプリのソリューション構成
マルチプラットフォームアプリのソリューション構成

 [Multiplatform]で作成すると、このようにiOSアプリとAndroidアプリの両方のプロジェクト(それぞれXamApp1.iOSとXamApp1.Droid)が1つのソリューションにまとめて作成されます。また、これらに加えてポータブルクラスライブラリ(PCL)プロジェクト(XamApp1プロジェクト)も作成されます。このPCLプロジェクトは非常に強力な機能ですが、詳しくは後ほど説明するとして、まずはiOS、Androidそれぞれのコードを見ていきます。

iOSアプリ

 XamApp1.iOSプロジェクトのViewController.csをダブルクリックするとソースコードが表示されます。このソースコードを見ると以下のようになっています。

using UIKit;

namespace XamApp1.iOS
{
    public partial class ViewController : UIViewController
    {

        (略)

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

        (略)

 ソースコードはC#で記述されています。XcodeではObjective-C、もしくはSwiftを使用しますが、Visual Studio for MacではC#を使用します。これはiOSアプリだけでなく、Androidアプリやその他のASP.NETなども同じです。

 そして、C#でのコーディングを可能にするためにXamarin.iOSというフレームワークが使用されています。Androidアプリのソースコードも後ほど紹介しますが、AndroidではXamarin.Adnroidが使われます。

Xamarin.iOSとXamarin.Android
Xamarin.iOSとXamarin.Android

 さて、iOSアプリのソースコードを見慣れた人であれば、上記のソースコードの内容はすぐにわかるのではないかと思います。

  • UIKitを使用すると宣言する
  • UIViewControllerを継承してViewControllerクラスを作る
  • ViewDidLoadメソッドをオーバーライドしてビューロード完了イベントを捕捉する

 いかがでしょうか?プログラミング言語こそC#になっていますが、やっていることはObjective-CやSwiftで書く場合とまったく同じであることがわかると思います。このように、Xamarin.iOSはiOSのAPIをそのままC#で記述できるようにするフレームワークです。メソッド名やプロパティ名の1文字目が大文字になっているなどC#らしくなるような工夫はされてはいますが、基本的にはそのままとなっています。そのため、Objective-CやSwiftでのiOS開発の知識を十分に活かすことができます。

 ただし、イベント関連の取り扱いは少々異なります。Objective-CやSwiftでは、UITextViewDelegateプロトコルなどのプロトコルを実装する形でイベントを扱いますが、Xamarin.iOSではイベントプロパティにイベントハンドラーをセットするという形で表現します。

Button.TouchUpInside += delegate
{
    var title = string.Format("{0} clicks!", count++);
    Button.SetTitle(title, UIControlState.Normal);
};

 上記はViewController.csの一部ですが、ここではdelegateをイベントハンドラーとして設定する方法が使われています。他にもイベントハンドラーメソッドをセットする方法、ラムダ式を使う方法などがあります。いずれにしろC#の機能をうまく使ってとても簡潔にイベントを扱うことができるようになっています。

 さて、UIViewControllerをC#で書けることはわかりましたが、そうなるとストーリーボードやxibの編集はどうなるのでしょうか?もちろんVisual Studio for Macはこれらの編集にも対応しています。ソリューションエクスプローラーの.storyboardファイルや.xibファイルをダブルクリックすればデザイナーが開きます。

ストーリーボード編集
ストーリーボード編集

 なお、.storyboardや.xibはXcodeと互換性があるため、Xcodeで編集することもできます。

コーディング支援機能

 Visual Studio for Macにはコーディングを支援するさまざまな機能が標準で備わっています。それらについて紹介します。

 Windows版のVisual Studioはインテリセンス(コード補完機能のこと)が強力なことが特徴の1つでした。こちらはVisual Studio for Macでもかなり強力です。キー入力と文脈に応じて補完候補を表示してくれます。

インテリセンス機能
インテリセンス機能

 以下はイベントハンドラーの入力中に表示されるインテリセンスです。

イベントハンドラーのインテリセンス
イベントハンドラーのインテリセンス

 イベントハンドラーの型を認識し、いろいろな形式のイベントハンドラー記述法を表示しています。

 また、インテリセンスと似た機能としてコードスニペットも用意されています。例えば「for」と入力してタブキーを2回押すと、以下のようにfor文のひな形が自動入力されます。

コードスニペット
コードスニペット

 もちろん「for」だけでなく「if」「switch」などいろいろなC#構文のコードスニペットが用意されています。また、「ctor(コンストラクタ)」「prop(プロパティ)」といったものもあります。

 「クイック修正」も強力です。

クイック修正
クイック修正

 上図はdelegateの上でマウスを右クリックし、「クイック修正」を選んだところです。delegate構文をラムダ式に変換する(To lambda expression)、型を挿入する(Insert signature)といった修正が表示されています。他にも文脈に応じていろいろなところでいろいろなクイック修正が表示されます。

次のページ
スマートフォンアプリケーション開発(2)

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
最新バージョン「Visual Studio 2017(Visual Studio "15")」特集連載記事一覧

もっと読む

この記事の著者

青柳 臣一(アオヤギ シンイチ)

Twiter: https://twitter.com/ShinichiAoyagi中学生のころにプログラミングの楽しさを知り、それ以来趣味として仕事としてプログラミングに関わるようになる。23才のときに株式会社ディーバを設立。CADソフトウエア、給水設備監視システムなどのオリジナルソフトの開発、また、さま...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9956 2017/05/09 22:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング