読者です 読者をやめる 読者になる 読者になる

Xamarinでツイートアプリつくるよ(3) ファイル読み書き

ファイルへ設定を保存できるようにするよ
設定をJSON形式で読み書きするからPCLStorageとJSON.NETをNugetで追加しておいてね

MainSetting.csを更新
中身は以下URL
https://github.com/reniris/NyanTweet/blob/835cbb0523cf537c34cb6574a845d6de39d53d0b/NyanTweet/NyanTweet/Model/MainSetting.cs
MainPageViewModel.csを更新
中身は以下URL
https://github.com/reniris/NyanTweet/blob/835cbb0523cf537c34cb6574a845d6de39d53d0b/NyanTweet/NyanTweet/ViewModel/MainPageViewModel.cs

MainSetting.csについて解説
JSONシリアライズ、デシリアライズ、ファイルへの読みこみ、書きこみを追加
インスタンスの作成を必ずファイルから読むように変更して、ファイルがない場合はデフォルト値をnewするようにしました

MainPageViewModel.csについて解説
58行目

private MainSetting _setting = MainSetting.LoadJson();

ファイルから設定を読み込むように変更

この変更を実装することによって、真ん中の大きいボタンに表示されている文言を変更した後、再起動しても変更されたままにすることができます。

Xamarinでツイートアプリつくるよ(2) ボタンにコマンドをバインディング

今回はメインのUIを作ってボタンクリックでコマンドを実行するよ
必要なライブラリReactivePropertyをインストールするために、PCLプロジェクトを.NET Standardに変更しておいてね
やり方はググれ。VisualStudio2015だとなぞのビルドエラーがたくさん出て、夜眠れなくて朝起きれないことになるのでVisualStudio2017を使おう
ダウンロードサイトはこちら
www.visualstudio.com
日本語サイトはわからなかったけど、このページからダウンロードできない英語力ではプログラムなんてできないのであきらめよう

NugetでReactivePropertyを検索してインストール
.Net Standardプロジェクトになっていればインストールできるはず

それらが終わったらクラスを追加していきます
まずは設定用のModel、MainSetting.csファイルを追加
中身は以下URL
NyanTweet/MainSetting.cs at 08034ba7a8a27b7dfe6fb5badea5f88fbded3b8b · reniris/NyanTweet · GitHub
プロパティ一つとデフォルトの文字列があるだけのクラスです

ViewModel、MainPageViewModel.csを追加
中身は以下
NyanTweet/MainPageViewModel.cs at 08034ba7a8a27b7dfe6fb5badea5f88fbded3b8b · reniris/NyanTweet · GitHub
UIにバインディングするプロパティとコマンドです

View、MainPage.xamlを追加
中身
NyanTweet/MainPage.xaml at 08034ba7a8a27b7dfe6fb5badea5f88fbded3b8b · reniris/NyanTweet · GitHub
メインのUIです


MainPage.xamlについて解説
8行目

  <ContentPage.BindingContext>
    <vm:MainPageViewModel />
</ContentPage.BindingContext>

これでバインディングが可能になります。WPFでいうDataContextです。

13行目

    <Button Text="{Binding TweetWord.Value}"
            HorizontalOptions="FillAndExpand"
            VerticalOptions="FillAndExpand"
            FontSize="Large"
            Command="{Binding TweetCommand}"
/>

メインの大きいボタンです。
表示テキストにTweetWordプロパティ、コマンドにTweetCommandプロパティをバインドしています。TweetWord.ValueとなっているのはReactivePropertyを使っているからです。
他のコントロールについては変わりないので特に解説しません。

MainPageViewModel.csについて解説
92行目

this.TweetCommand.Subscribe(_ => this.Message.Value = this.TweetWord.Value);

これだけで大きいボタンを押すと、下のほうにメッセージを出すことができます。

Xamarinでツイートアプリつくるよ(1) まずは最初のPageを差し替える

Xamarinの練習のためにツイートプログラムを作るよ

 

まずはXmarinのプロジェクトを作る(ここはほかのサイトのほうが詳しい)

それから、View、ViewModel、Modelフォルダを作る

ViewにMainPage.xamlを作って

 

App.csのコンストラクタを以下のように変更

         public App()
        {
            this.MainPage = new View.MainPage();
        }

 

こうすると、最初に表示されるページがMainPage.xamlに差し替えられるよ

 

今回の記事で使っているソースコードGitHubで公開しています

github.com

まだたいしたことはできないけど、最終的には設定した文を手動ツイートするプログラムになる予定だよ

 

VisualStudio2017すごい

VisualStudio2015だとビルドエラーでまくりでコンパイルできなかったXamarinプロジェクトが2017だとコンパイルできるようになった!

とりあえず練習用のソースコードを公開

今はまだ何もできないけど、そのうちボタン一発で「にゃーん」できるようにするよ

github.com

ReactivePropertyをModelで使ってみる

INotifyPropertyChangedをModelに実装するのがめんどいのでReactivePropertyを使ってみようとしたが、そのまま使うのよくないみたい。

einherjar1632.hatenablog.com

コンストラクタでImmediateScheduler.Instanceをスケジューラーに指定すればいいのかな?

UIスレッドではよろしくないみたいだけど、どのスレッドで使えばいいんだろう。

 

オレオレ証明書作成プログラム

オレオレ証明書GUIで簡単に作れるプログラムを紹介するよ

必要事項を入力してボタンを押せば証明書ができるよ

でも「管理者として実行」しないとうまくいかないよ

 

SelfCert: Create a Self-Signed Certificate Interactively (GUI) or Programmatically in .NET

にプロジェクトつきのEXEがあるよ

証明書発行ルーチンはDLLになっているので自作アプリに組み込めるかも

ライセンスは特に明記されてなかったけど「自由につかってね」的なことが書いてあったよ

経験値っぽいの

ゲームを作る際にいろいろと経験値っぽいのが必要になったのでスプレッドシート作ってみた

3つの係数をいじることによりそれに対応する0~100レベルの経験値が出せるよ

 

経験値っぽいの FLOOR(POW(係数1,現在のレベル+係数2)*係数3) - Google スプレッドシート