Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

Visual Studio/Xamarin Studio でコードスニペットを活用しよう

こんにちは。エクセルソフトの田淵です。

PropertyChanged 用のコードスニペットや BindableProperty 用のコードスニペットはあるとないとではかなり開発効率に差がありそうです。@ticktackmobile さんのトレーニング中に BindableProperty はコードスニペットで。というお話をもらい、PropertyChanged 用は作ってましたが BindableProperty 用は無かったなと思い、エントリーを書きました。一つ新発見もありましたので、感謝です。

今回は BindableProperty 用のスニペットを作ってみましょう。

Visual Studio の場合

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>Bindable Property</Title>
            <Shortcut>binp</Shortcut>
            <Description>Code Snippet for Bindable Property</Description>
            <Author>Yoshito Tabuchi</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal>
                    <ID>type</ID>
                    <ToolTip>property type</ToolTip>
                    <Default>double</Default>
                </Literal>
                <Literal>
                    <ID>property</ID>
                    <ToolTip>property name</ToolTip>
                    <Default>MyProperty</Default>
                </Literal>
                <Literal default="true" Editable="false">  
                    <ID>classname</ID>
                    <ToolTip>Class name</ToolTip>
                    <Function>ClassName()</Function>
                    <Default>ClassNamePlaceholder</Default>
                </Literal>
            </Declarations>
            <Code Language="csharp"><![CDATA[public static readonly BindableProperty $property$Property =
                  BindableProperty.Create(nameof($property$), typeof($type$), typeof($classname$), default($type$));

              public $type$ $property$
              {
                  get { return ($type$)GetValue($property$Property); }
                  set { SetValue($property$Property, value); }
              }
          ]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

Bindable Property の沢山ある引数のうち、必須項目を含む最初の4項目を用意しました。

上記ファイルを xxxx.snippet と任意の名前で Visual Studio 2015 フォルダ\Code Snippets\Visual C#\My Code Snippets フォルダに配置しましょう。

後は <Shortcut> に登録した短縮文字で呼び出すだけです。

f:id:ytabuchi:20170221205249p:plain:w600

こんな感じで2ヶ所入力すれば完成です。ポイントは、コード スニペットの関数 にあるように、ClassName() を使うと「挿入されたスニペットが格納されているクラスの名前を返します。」というところですね。

<Literal default="true" Editable="false">  
    <ID>classname</ID>
    <ToolTip>Class name</ToolTip>
    <Function>ClassName()</Function>
    <Default>ClassNamePlaceholder</Default>
</Literal>

の部分です。

Xamarin Studio の場合

f:id:ytabuchi:20170221205436p:plain:w600

Xamarin Studio はファイルではなく、設定で行います。設定を開き、[テキストエディター>コードテンプレート]の[追加]ボタンをクリックします。

f:id:ytabuchi:20170221211525p:plain:w600

上記のような感じで、[ショートカット]に任意の短縮文字、[グループ]は C#、[説明]に任意の説明、[Mime]に text/x-csharp を指定し、[拡張可能なテンプレート]にチェックを入れます。

[テンプレートテキスト]の部分は VS と同じで大丈夫です。

public static readonly BindableProperty $property$Property = 
    BindableProperty.Create(nameof($property$), typeof($type$), typeof($classname$), default($type$));

public $type$ $property$
{
    get { return ($type$)GetValue($property$Property); }
    set { SetValue($property$Property, value); }
}

右側のドロップダウンでテキスト内で指定したリテラルの仕様を決められます。クラス名を取ってくる Function が VS と異なり、GetCurrentClassName() となりますのでご注意ください。

f:id:ytabuchi:20170221211849p:plain:w300

後は呼び出すだけ。

f:id:ytabuchi:20170221211835p:plain:w600

便利ですね。どんどん使っていきましょう。

XAML 用のコードスニペットの記事は以下で以前書きましたので合わせてどうぞ

ytabuchi.hatenablog.com

Xamarin 気になった方は

是非 ダウンロード して触ってみてください。Visual Studio 2015 をご利用の方は Update 3 にアップデートする際にカスタムインストールで Xamarin を追加しましょう。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の導入支援サービスを始めました。ベースは基本的なアプリを一緒に作ることで Xamarin を使えるようになって頂く内容ですが、ご要望に応じて講習内容のカスタマイズも可能です。詳しくは田淵までお問い合わせください(^^)

有償セミナー、トレーニング | Xamarin : XLsoft エクセルソフト

Xamarin の情報が欲しい方はこのブログも購読いただいたり、私のTwitterアカウントをフォローいただいたりすると嬉しいです。

私が所属している エクセルソフト の宣伝を少しさせてください。弊社は開発者向けの様々なソフトウェアを扱っています。おなじみの ReSharper (JetBrains)、 や Atlassian の JIRA, Confluence、Office/PDF ファイルを .NET/Java で操作するライブラリ Aspose(アスポーズ)Windows アプリ、Web ページ、iOS/Android アプリの UI テストができる TestComplete などお勧めです(^^) また、Visual Studio Professional/Enterprise with MSDN も販売してますし、日本で売っていない海外のソフトウェア、開発ツールなどを弊社経由で日本円で購入頂くことも可能です。ご興味あれば 弊社ページ を覗いてみてください。

以上です。

エクセルソフト | ダウンロード | 学習用リソース | JXUG リンクページ | ブログ購読