何から始めればいいか

こんにちは。

Xamarinやってます。

今は教科書に従って進めてます。
C#はいいんですが、XAML書くのがしんどいですね。

まあ大体わかりますが。

やっぱシミュレータがあるとワクワクしますね!

本とりあえず読んだらアプリ作ろっと。
誰か作って欲しいものないですか?

なんか色々アイデアはあるんだけど、形にできるかなー。
とりあえず、Bluetoothを使ってみたいなーと思っています。
あとはサーバーにデータ保存する系かー。

計画的には、
1.本で基本を学ぶ
2.簡単なゲームを作る
3.Bluetoothを使った相互通信をみる
4.サーバーと通信してみる
5.いい感じのアプリを作る

5だけふわっとしてるーwww
アイデアはあるんです。でも伏せときます。まだ出来るかわからないし。

ではまた!

Xamarin始めました

こんにちは。

Xamarin始めました。

前からMacにインストールはしてあったのですが、全然触ってませんでしたが、ようやく取り掛かります。
とりあえずプロジェクトを作ってシミュレータで動かしてみようと思ったのですが、、、

え、ビルドエラー!!!?

空のプロジェクト作ってビルドしただけですよ!?
なんでそんなことなるの!?

混乱混乱混乱

なぜこんな初っ端からつまづかないといけないんだと思いながら見ていたら、どうやらiOSの方でエラーが出ているようでした。

で、色々ネットをみていたら、こんな記事がありました。

つまりxcodeの更新がうまくいっていない、というか完了していない!!!!
そういえば最近xcode開いてなかったなあ、と思いながら開いたら案の定インストールが始まりました。

インストール完了してからXamarinの方をビルドしたら成功しました。
先が思いやられますね。

ではまた!

かるーくRuby #15 File

ファイル操作には組込みクラスのFileを使います。

openメソッドでファイルを開いて、closeメソッドで閉じます。
openにブロックを渡すと、ブロック実行後に自動でcloseしてくれるので、閉じわすれを防止になります。

本当に簡単な例だけ。

以前作ったdog.rbの中身を表示してます。
実行すると、

のような感じになります。
もうちょっと詳しくみたいけど、今日はここまで。

ではまた!

かるーくRuby #14 Comparable

今回はComparableについてです。

かるーくいきます。

以前、Enumerableをやりました。それと同じ感じで

こんな感じで組み込んで<=>を定義します。
年齢が大きい方が大、年齢が同じであれば名前順です。

そうすると<、>、==などが使えるようになります。

実行してみましょう。

合ってますよね?

ではまた!

かるーくRuby #13 モジュール

モジュール、見ていきましょう。

クラスと同じような感じですが、インスタンス化はできません。
便利な機能を集めたものと考えればいいのかな。

簡単な例として挨拶モジュールを定義してみます。

これをクラスに組み込むことで、挨拶を利用できます。
ここで重要なのは、モジュールでクラスで定義されるインスタンス変数を使っているということ。
こんなことができちゃいます。動的型付け言語だから。

ですが、組み込むクラスに@nameというインスタンス変数がないとエラーになるので注意です。

人間クラスを定義します。

ちゃんと@nameを定義します。

間違いないか確認します。

できてました。
Mix-inはもっと奥が深い気もするけど、基本はこんな感じで。

ではまた!

かるーくRuby #12 特異メソッド

今日は特異メソッドについて見てみます。

特異メソッドとは、クラスに定義されたインスタンスメソッドとは異なり、オブジェクト固有に持つことのできるメソッドです。
試してみましょう。

mouse_aとmouse_bはどちらもStringクラスのインスタンスです。
それぞれに独自のgreetメソッドを定義しています。

それぞれのクラスを呼ぶと、別の結果が出力されます。
つまり、Stringクラスではなく、インスタンスであるmouse_aとmouse_bそれぞれに別のgreetメソッドが定義されたということです。

使いどころが難しいですが、使いこなせるようになれたらいいな。

ではまた!

かるーくRuby #11 継承

今回は、犬猿の仲で作った犬クラスと猿クラスをもうちょっとスッキリ書いてみます。

犬クラスと猿クラスは体長、位置、歩く動作、また距離計算は同じなので、これを動物クラスとして纏めます。

その後、犬クラスと猿クラスから上記の処理を削除します。
この時、Animalクラスを継承すると、Animalクラスのインスタンス変数やメソッドが使えるようになります。

猿クラスも同じ感じです。

大分スッキリしました。
これで実行してみると、前回と同じように動作することがわかります。
継承をうまく使ってコードの可読性を上げたいですね。

ではまた!

かるーくRuby #10 クラス<2>

昨日の続きです。

猿クラスを実装しましょう。
犬クラスと同じような感じです。

※全体を実装した結果、前回の犬クラスの細かな値などを微調整してます。

フィールドクラスも実装しちゃいましょう。

初期化処理で犬、猿を生成して、フィールドに配置してます。
その後、時間が進むと犬と猿はフィールド内を歩き始めます。
それぞれが近づくと、啀み合います。
draw_fieldは犬と猿の位置を示す為のものです。

さあ、あとはフィールドクラスを生成して時間を進めていくだけです。

フィールドのサイズを7×7、犬と猿のサイズを2にしてフィールドを作成しています。
キーを入力する度に時間が進みます。

実行してみましょう。

犬の位置が「D」、猿の位置が「M」で表示されています。
キーを押して進めていくと・・・

こんな感じで近づいた時に啀み合うセリフが表示されます。

うん、いい感じですね。
次回は犬クラスと猿クラスが同じような処理をしているので、何とか簡単にしましょう。

ではまた!

かるーくRuby #9 クラス<1>

今回は今までも使ってきたクラスについて書いていきます。

オブジェクト指向には欠かせないクラス、
ここではクラスを使って犬猿の仲を表現しましょう。
ちょっと大きいものを作るので、何日かに分けて投稿します。

まずは大まかな内容をみておきましょう。

<犬クラス>

持っている特徴:体長、位置
動作:歩く、猿の位置検知、吠える、走って逃げる

<猿クラス>

特徴:体長、位置
動作:歩く、犬の位置検知、威嚇、ひっかく

<フィールドクラス>

特徴:犬、猿、広さ
動作:時間を進める、犬、猿の位置調整

フィールドクラスに犬と猿を置いて近づいたら威嚇したり吠えたりするって感じですね。
では、今日は犬クラスを実装してみましょう。

インスタンスを生成した時に必ずコールされるinitializeで初期位置と体長を設定してます。
で、歩いて猿検知して相手が大きかったら逃げて、小さかったら吠える。

何と冷静な犬だろう。
明日は猿クラスを作ります。

ではまた!

かるーくRuby #8 正規表現

正規表現って苦手なんですよね。

普段使ってれば分かるんでしょうけど、あの記号たち、覚えきれないです。
まあ調べて使えれば問題ないでしょう?

今日はRubyじゃなくて正規表現です。
そう、正規表現はRubyだけのものじゃない。

簡単なやつだけ作ってみましょう。
まずは年月日

僕の誕生日が表示されます。
\dが数字、+が1回以上繰り返しです。

続いて住所

うん、上手くいってます。
\Dが数字以外の文字、[]はこの中から1文字です。

さらにメールアドレス

できた!deguchi._test@test-sample_.comが表示されます。
\wがアルファベット、数字、アンダスコア( _ )のどれかの1文字、{}は繰り返し最小数と最大数の指定。

本当にかるーくでした!
もっと複雑な正規表現もいっぱいあるので、使いこなせたらいいですね。
ではまた!