[Xamarin.Mac] Visual StudioでMacアプリを作成する

Visual Studio for Macを使用している方であれば、Mac用のアプリケーションを作成することができます。

今回は、新規プロジェクトの作成方法とプロジェクトに追加されたファイルがどのようなものかを見ていきます。

Macアプリ用のプロジェクトを作成してみよう

Mac用のアプリを作成するには、Visual Studio for Macで「新規プロジェクトの作成」で「新しいプロジェクト」のダイアログを表示します。

続いて左側で[Mac]-[アプリ]を選択して、右側の一覧で「Cocoa app」を選択し[次へ]ボタンをクリックします。

続いて下図のようにMacのアプリ構成の設定を行います。App Nameにアプリケーション名を、Organization Identifierには、企業URLを逆から入力します。企業URlがない場合は、とりあえず適当でも構いません。Dock Itemにチェックを付けると、デスクトップやDockに表示する名前を入力することができます。ターゲットはOS Xのどのバージョン以降で動作するアプリケーションとして開発するのかを選択します。以上の設定が完了したら[次へ]ボタンをクリックします。

Extensionsにチェックを付けると、アプリで使用するファイルの拡張子を設定をすることができます。今回は使用しないこととします。

次の画面ではプロジェクト名やソリューション名、保存場所といった設定を行うことができます。特に必要がなければデフォルト設定のままで[作成]ボタンをクリックします。

プロジェクトのファイルを確認しよう

プロジェクトの作成が完了すると、ソリューションエクスプローラーは以下のようになります。

Main.cs

Main.csはアプリケーションのエントリポイントです。アプリが起動されると最初に実行されるクラスとメソッドが追加されています。Mainめそっどの中ではアプリケーションのインスタンスを作成し、OSのイベントを処理できるようにしています。

using AppKit;

namespace MyApp
{
    static class MainClass
    {
        static void Main(string[] args)
        {
            NSApplication.Init();
            NSApplication.Main(args);
        }
    }
}

AppDelegate.cs

AppDelegate.csはOSからのイベントを受け取るクラスが実装されています。

DidFinishLaunchingメソッドは、アプリケーションのインスタンスが作成された後に実行され、アプリのウィンドウを作成してビューを表示する処理を実行します。

WillTerminateメソッドは、ユーザーやシステムがアプリケーションを終了しようとしたときに実行されます。アプリケーションが終了する前に、設定の保存や何かしらの処理を行いたい場合は、このメソッドにコードを追加します。

using AppKit;
using Foundation;

namespace MyApp
{
    [Register("AppDelegate")]
    public class AppDelegate : NSApplicationDelegate
    {
        public AppDelegate()
        {
        }

        public override void DidFinishLaunching(NSNotification notification)
        {
            // Insert code here to initialize your application
        }

        public override void WillTerminate(NSNotification notification)
        {
            // Insert code here to tear down your application
        }
    }
}

ViewController.cs

Xamarin.MacのアプリはMVCモデルです。ViewControllerはメインウィンドウのコントローラーを表すクラスで、ライフサイクルを管理します。

using System;

using AppKit;
using Foundation;

namespace MyApp
{
    public partial class ViewController : NSViewController
    {
        public ViewController(IntPtr handle) : base(handle)
        {
        }

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

            // Do any additional setup after loading the view.
        }

        public override NSObject RepresentedObject
        {
            get
            {
                return base.RepresentedObject;
            }
            set
            {
                base.RepresentedObject = value;
                // Update the view, if already loaded.
            }
        }
    }
}

ViewController.Designer.cs

ViewController.Designer.csファイルはユーザーインターフェースを作成したときに自動で作成されるファイルです。

Info.plist

Info.plistはアプリケーションに関する情報を入力することができます。新規プロジェクト作成時に入力した内容もここで確認/変更することができます。

Entitlement.plist

Entitlement.plistはアプリのサンドボックスやiCloudでの設定を行うことができます。

次回は、Xamarin.Macを開発するにあたり、Visual Studioがどのような構成になっていてどのようなことができるのかを見ていきます。


					

[GitHub] Gitを使用する(3)

前回と前々回の記事で、GitHubへのアカウントを作成し、リポジトリを作成するまでを説明しました。

今回は、Visual Studio for Macから、コミット、プッシュする方法について見ていきましょう。

そもそもコミットとプッシュは何が違うのか

ソース管理にはGitの他にもSubversion(以降svn)やcvsなどがあります。

良く使用されるのはsvn、Gitあたりでしょうか。

svnにおけるコミットは、変更のあったソースをリポジトリに反映することをいいます。

では、svnにおけるコミットはというと、ローカルのソースをリポジトリに登録するというシンプルなものです。

Gitはというと、ローカルの変更のあったソースをローカルリポジトリに反映させることをコミット(Commit)と呼びます。

また、ローカルリポジトリの内容をリモートリポジトリに反映させることをプッシュ(Push)と呼びます。

Visual Studio for Macでのリポジトリ設定

Visual Studio for MacでGitによるソース管理を行うには、設定が必要です。

この設定は、メニューの[バージョン管理]-[ブランチとリモートを管理する]から行います。

以下のダイアログが表示されるので[追加]ボタンをクリックします。

続いて以下のダイアログが表示されます。名前欄には人にの名称を入力しURLには、作成しておいたリポジトリのパスを入力します。入力が完了したら[OK]を押してダイアログを閉じます。

コミット、プッシュを実行する

続いて、コミットやプッシュをする方法を見ていきましょう。

こちらも[バージョン管理]のメニューから実行が可能で、以下のように[ソリューションを確認してコミット]でローカルリポジトリに反映、[変更をプッシュ]でリモートリポジトリへ反映します。

リモートリポジトリに正しく反映できた場合は、GitHubのサイトで以下のように確認できます。

 

[GitHub] Gitを使用する(2)

前回の記事「Gitを使用する(1)」では、GitHubにアカウントを作成し、GitHubを使用するための準備を行いました。

今回はリポジトリを作成してみましょう。

リポジトリとは

リポジトリとは、ファイルやディレクトリを保存しておく場所のことです。

GitHubにおいては、ローカルリポジトリとリモートリポジトリの2種類があります。

ローカルリポジトリとリモートリポジトリ

ローカルリポジトリとは自分のマシン内のファイル置き場を表し、通常はこちらで作業を行います。ロカールのリポジトリへファイルを置くことをコミットと呼びます。

ローカルでの作業が完了したら、リモートリポジトリ(一般的にはサーバーにあります)にファイルを置きます。リモートリポジトリへファイルを置くことをプッシュと呼びます。

リポジトリを作成しよう

それではリポジトリを作成してみましょう。ここで作成するリポジトリはリモートリポジトリです。リモートリポジトリは前回作成したGitHubへ作成します。

GitHubにログインしたら、画面右上の「+」ボタンをクリックします。メニューが表示されるので「New repository」をクリックします。

次に、「Repository name」欄に作成するリポジトリの名前を入力して、[Create Repository]ボタンをクリックします。

ここではリポジトリ名を「XamariSample」として作成することとします。

リポジトリの作成が完了すると、以下のような画面になります。

リポジトリの名前を変えるには?

誤った名前でリポジトリをさくせい作成した場合の対処方法を見ていきましょう。

削除して作成し直すという手もありますが、ここではリポジトリ名を変更してみましょう。

リポジトリを変更するには、先ほどの画面で[Settings]のリンクをクリックします。

Settingsのページに遷移するので、Repository name欄に変更後の名前を入力して[Rename]ボタンをクリックします。

このSettingsページではリポジトリの削除も可能です(次項で説明します)。

「XamarinSample」から「Xamarin」に変更すると以下のようにリポジトリが作成されます。

リポジトリを削除するには?

今度はリポジトリを削除してみましょう。

Settingsページの下の方に「Danger Zone」というエリアがあります。

この中にある[Delete this repository]をクリックすることでリポジトリを削除することができます。

[Delete this repository]をクリックするとウィンドウが表示されるので、削除するリポジトリの名前を入力して[I understand the …]というボタンをクリックします。これでリポジトリは削除されます。

ディレクトリを作成するには?

作成したリポジトリにディレクトリを作成する方法を見ていきましょう。

新規でリポジトリを作成した場合、「Code」タブの画面は以下のようになっています。リポジトリのURLの下に.gitignore. というリンクがあるのでクリックします。

リポジトリの横に入力欄があるので「作成したディレクトリ名」+「/」を入力することでディレクトリが追加されます。

最後にファイル名を入力してコミットをするとディレクトリが作成されます。なお、以下のように最後に「.gitignore」と入力すると、テンプレートを使用できます。

コミットは画面下にある[Commit new file]ボタンをクリックします。

 

[GitHub] Gitを使用する(1)

Visual Studio for Macでプロジェクトを作成する際、「バージョンコントロールにGitを使用する」というチェックボックスが表示されます。

せっかくなので、Gitによるソースコードが管理できるように環境を作成していきたいと思います。

今回は、GitHubのアカウント作成を行います。

はじめに https://github.com/join?source=header-home にアクセスしてUsername, Email Address, Passwordを入力して[Create an account]ボタンをクリックします。

アカウントの作成が成功すると、ページが切り替わり「Completed」となります。このページではプランを選択します。

「Choose your personal plan」で上の方を選択すると無償プラン、下の方を選択すると有償プランになります。

無償プランは、もちろん無償で使用することができるのですが、追加したコードは全て公開されます。

有償プランは、月7$掛かりますが、必要に応じて追加したコードを非公開にして管理することができます。

ここでは無償プランを選ぶこととし、最後に[Continue]ボタンをクリックします。

最後のページでは、いくつかの質問に答えて[Submit]ボタンをクリックします。

以下のページに遷移したら、アカウントの作成は完了です。

登録したEmailアドレスにGitHubからメールが届きますので、Verify email addrssのリンクをクリックしましょう。

[Start a project]をクリックして、プロジェクトを開始します。

次回は、GitHubでのプロジェクトの作成や削除方法について説明します。

[Xamarin.Forms] Jsonファイルを使用する(3)

前回の「Jsonファイルを使用する(2)」では、Json.NetのNuGetパッケージを追加し、デシリアライズ用のクラスを作成しました。

今回は、最終仕上げとしてデシリアライズをする方法を見ていきます。

アジェンダは以下の通りです。

  1. usingの追加
  2. デシリアライズコードの作成

1.usingの追加

はじめに、共通プロジェクト(JsonSample)のJasonSamplePage.xaml.csを開きます。

usingを以下のようにし、Json.Netとデシリアライズをできるようにしておきます。

using System.IO;
using System.Reflection;
using Newtonsoft.Json;
using Xamarin.Forms;

2.デシリアライズコードの作成

あとはプロジェクトに組み込んだperson.jesonを読み込んでデシリアライズをしPersonクラスのインスタンスにデータを入れるコードを書きます。

namespace JsonSample
{
    public partial class JsonSamplePage : ContentPage
    {
        public JsonSamplePage()
        {
			var assembly = typeof(JsonSamplePage).GetTypeInfo().Assembly;
			Stream stream = assembly.GetManifestResourceStream("JsonSample.person.json");

			Person[] persons;


			using (var reader = new System.IO.StreamReader(stream))
			{

				var json = reader.ReadToEnd();
				var rootobject = JsonConvert.DeserializeObject<Rootobject>(json);

				persons = rootobject.persons;
			}
        }
    }
}

7行目は、person.jsonファイルがどこにあるかの情報を取得するものです。typeofの()の中には、このコードが書かれているクラス名を書いています(このコードを書いているクラスはJsonSamplePageというクラスです)。必要に応じて変更して下さい。

8行目は、プロジェクトに追加したperson.jsonのストリームを取得する処理です。GetManifestResourceStreamの引数には、「プロジェクト名.JSONファイル名」を書きまます。

す。

10行目は、デシリアライズ先の変数の準備です。person.jsonは複数のperson情報を持っているので配列にしています。

13行目は、ストリームリーダーのインスタンスを生成して、person.jsonを読み取る準備をしています。

16行目で、peson.jsonからjsonデータを取得し、17行目でデシリアライズをしています。DeserializeObjectの<>にはデータを受け取る器(うつわ)の型を指定するので、前回作成したRootobjectを指定します。また引数にはデシリアライズの元)である(16行目で受け取ったpersonを指定します。

最後に、17行目でデシリアライズ結果を受け取ります。

以上で、プロジェクトに組み込んだjsonファイルからのデータ取得が完了です。あとはpersons変数に入っているデータを使用するのみとなります。