はじめてのC# (2) – 通常のC#クラスをエントリポイントにしてWPFを使用する

2014.2.13

お久しぶりです。

ブログを更新していないしばらくの間、WPFをいじくり倒してました。おかげさまで、超簡単なデスクトップアプリケーションならなんとかつくれるようになりました。
というわけで週末は勉強がてらWPFでクッキークリッカーっぽいものをつくって遊んでました。

そこで感じたのが、
複数ウィンドウでデリゲートとかイベントとか書いてるうちにクラス間の関係が密結合になってしまうということ。
こういう場合、一つのクラスの規模が大きくなってきて ある属性をクラス化して分離したくなった時とかになかなか面倒くさいので、
一つメディエータみたいな感じのクラスが欲しい。

でもエントリポイントがWPFの一クラスだとあまり綺麗な構造になりそうもないので、
いっそのことエントリポイントをWPFのクラスじゃなくて通常のC#クラスにしてしまって、WPFを分離してはどうか
さらに各描画用インスタンスを保持するクラスを用意して、複数ウィンドウ間でのイベント処理を楽にしてはどうかという発想に至った。
(API化すれば良い気もするが)

*なお、この記事はC#/WPF超初心者が執筆しているので、参考にする場合は十分に注意してください。また、「いやそもそもこうした方が楽じゃね」っていうところに関してはどんどんご指摘いただければ幸いです。

(続きを読む…)

はじめてのC# – インデクサをいじってみた

2014.1.20

つくりたいものがあったので、趣味グラマーとしてC#を始めました、Niseiです。

重い方の言語はあまりガッツリやり込んだ経験が無かったので内心ワクワクしてます。

文法やらポリモーフィズムやら継承やら基本的な部分は他の言語と同じ感じでだけど、今回ちょっと新たに「インデクサ」というやつが出て来た。

なんじゃそりゃ ということでちゃんと勉強してアウトプットしてみた次第です。

インデクサ?

クラスを配列っぽく操作できる子。

この説明だけだと「ん?」ってなるけど、身近な例としては 文字列操作がある。

using System;

class Hoge
{
  public static void Main()
  {
    string foo = "bar";
    Console.WriteLine( foo[2] );
  }
}

こんな感じで何気なく使ってる foo[2]の正体こそまさにインデクサでした。

(続きを読む…)

はじめてのVagrant ~ CentOS6.5 + ApacheでWebサーバを立ててみる

2014.1.17

logo_vagrant

Vagrant?

簡単に言うとインフラ構築の自動化
例えば 手動でやろうとすると、OS入れる度に VMでディスクイメージ読み込ませて あれやこれやと細かい初期設定しないといけないけど、Vagrantを使えばたった3つのコマンドで上に書いた事を勝手にやってくれる。
Vagrantは chefのようなツールと合わせて使えば超強力と巷では言われていて、要するにソフトウェアのインストールまで自動化してくれる
これはどういうことかというと…

インフラ構築にいちいち時間かける必要もなくなるし、ミスも防げるし、チーム開発の場合は 新しく入ってきた人でもすぐに環境構築できるし、何より「俺の環境では動いたよ」も減る。

個人で勉強用に開発環境立てては壊しまくったりする場合にもかなり便利だけど、チーム開発でも圧倒的な力を発揮。

とりあえず 今回に関しては Chef を使用せずに VagrantでOSだけ入れてもらって、動作確認の意味合いを込めてWebサーバの立ち上げをやってみる。

因みにVMを動作させる環境はフリーで落とせる VirtualBox を使用。

(続きを読む…)

プログラマの成長について考えてみる

2013.12.16

Anonymous_evolution_steps

プログラムを書いていて、次に何を学習するべきか と考えることが度々あった。
その度に

「プログラマ 成長」
「プログラマ ロールモデル」
「プログラマ 1年目 本」

なんておもむろにGoogleの検索フォームに入力して、

世の中で話題になっている人のロールモデルを参考にしようと色々見ては、その人が「小さな頃から親にハードを与えられていじって遊んでいて…」というように、幼少の頃からコンピュータに深い馴染みがあることを知って「ああ 自分のケースとは合わないな」なんて思ったり

ウィザードと呼ばれている人達の論文を読んでは「もっとコンピュータに詳しくなろう」と思い立って、
Web系にも関わらず 何の脈絡も無く、突然 SICP分厚いアルゴリズム本をかじり出しては途中で挫折したり、
( 学習した事が現実的にどういった形で結びついているのかわからないから現実感が湧かない )

そんな事を繰り返していた。

正直、「プログラマとして成長をするには何をするべきか」なんて考えている時点でナンセンスだなというのはよくわかっている
考えている暇があったら情熱や好奇心に突き動かされてどんどん探検していくべきだっていうのもわかっている。
分かっているけど、ずっとどこか腑に落ちないままモヤモヤしたままだった。

というわけで「これではいけない」と思い直し、成長が遅い自分に対する反省の意味も込め、自分の中で「成長する人」の定義を文献を参考にしたり先輩に聞いたりしてはっきりさせてみた。

結果、以下の結論にたどり着いた。

学ぶ技術を現実の具体的なシーンに落とし込み、
何らかの目標達成に結びつけることができているかどうか

プログラマとして成長の遅い自分の場合

(続きを読む…)

Raspberry Pi ではじめてのLチカ体験 & 温度計制作

2013.12.1

「Tokyo Hacker Space」という乃木坂にあるハッカースペースでRaspberry Piをいじってきました。

Tokyo Hacker Space?

東京にあるものづくりのためのコミュニティ。

ホームページ見てると結構ハード寄りのことしてるみたい。

参加には月会費が必要だけど、月に何回か一般向けにもイベント開催してるっぽい。

コミュニティスペース自体も工具とかいっぱい並んでるガレージみたいな感じでものづくり精神がかき立てられる。

1

というわけで人生初のハードを体験。

これがRaspberry Pi本体。Ethernet端子やらUSB端子やらイヤホンジャックやらHDMI端子やら色々ついてる。

3

ワークショップでは8GBのSDカードを挿して「Raspbian」というDebianベースのOSを使用。

IPアドレス経由で、MacからSSHでログイン。GUIもサポートされており、「オーバークロック」やら「ロケール」やら「カメラとの連携」やら色々設定可。

Lチカしてみた。

Lチカ… LEDをチカっと光らせるハード界のド定番らしい。プログラミング言語で言う「Hello World」みたいな感じ。

「ブレッドボード」と呼ばれるものにLEDと電気抵抗を挿して、Raspberry Pi本体と接続。

(この時配線を間違えるとヘタすればショートするらしい。例えば 3.3V用のLEDを5Vのジャックに繋げちゃうと死ぬとか )

(続きを読む…)