コードリーディングのお供には Doxygen & Graphviz が良いかもしれない

2014.4.9

比較的規模の大きいソースコードを見る際、何らかの目的を持った上でソースコードを読み始める。
目的の粒度は大なれ小なれ「コードのどこに着目するか」という疑問は必ず生じる。

パズルも完成形の絵柄を知らずに組み立てるのと 予め出来上がった後の形を知った上で組み立てるのとで 完成の時間が変わってくるように、ソースコードもその全体の形ができるだけ見えた方が良い。

とはいえ、数千行~数万行のコードを相手に 自分の手で一つ一つのクラスの役割や関連性を整理するのも得策ではないので、ここは一つ先人の知恵を活用した方が良さそう。

ということで、今回はソースコードリーディングのお供として活躍してくれるドキュメント自動生成ツール「Doxygen」と、構造体やクラス間の関係を図で出力してくれる「Graphviz」を紹介。
プログラミングの勉強中に何かの本のサンプルコードを読み解く上でも十二分に力を発揮してくれるので強くオススメする。

(続きを読む…)

『実践テスト駆動開発』を読む(2) – コード内に登場するツールの概要まとめ

2014.4.7

本書における概念的な部分のおさらいは終わり、ユニットテストを書きたくてうずうず。さあ、いよいよコードを書く段となった。

突如として現れる沢山のツール群。

・XMPP
・Openfire
・Smack
・Swing
・WindowLicker

ぺちぱーのぼくにはさっぱりわからない。
概要は書いてるけど、あまり詳細には解説されていない模様。
Swingに至っては「いやーまさかこのご時勢Swingも知らない人間なんていないだろうし、解説なんてしてもページ数の無駄だよね!え?わからないから詳しく知りたい?ggrks」といわれる始末(超解釈)。

何はともあれ本来の「テスト駆動開発の学習」という目的に影響が出そうだし、この記事ではそれぞれのツールの関係を整理し、解説していくことにする。

(続きを読む…)

『実践テスト駆動開発』を読む(1) – Openfireまわりの設定

まずはインストール

インストール用のファイルはここ。
http://www.igniterealtime.org/projects/openfire/
因みにこの記事を書いている時のOpenfireのバージョンは3.9.1。

インストールしたら起動。
なお、Windows環境を使用していてインストール時に「java.io.~~~」みたいなのが出てファイル見つからないよって怒られる人は一旦Openfireを終了して「管理者として実行」を試してみるといいかも。
Database Configuration関係で怒られる場合はアンインストーラでアンインストールして、C:\Program Files (x86)にOpenfireのフォルダが残っている場合はそいつも削除して再インストールを試してみる。

(続きを読む…)

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

2014.1.17

logo_vagrant

Vagrant?

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

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

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

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

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

(続きを読む…)

ブラウザ上でぬるぬる動く3Dを実現する「Three.js」を触ってみた

2013.11.24

「3Dって何となく難しそうで手を出しづらいなー」と少し敬遠していたけど、ブラウザ上とかでサクサク動いているのを見てるとやっぱり自分もやってみたい。

というわけで今回はWebブラウザ上で JSベースでぬるぬる動く3Dグラフィックスを実現できる「Three.js」をいじってみた。

Q. JSベースとはいってもなんか複雑そうで手を出しづらいんだけど…

結論から言えば、基本的な流れを理解してしまえばなんとなくいじれるようになった。

この「基本的な流れ」って言うのは、Canvasで言うなら「クロスブラウザのチェックをして、canvas要素取得して、コンテキストを変数に格納して…」みたいな感じ。Three.jsの場合は以下に説明するような流れになる。

Three.js で3Dをいじるまでの基本的な5つの流れ

(続きを読む…)