おれろぐ #z_a_ki3

(・∀・) オイ!

Doxygenでドキュメントを自動で生成してみる。

またまた、Twitterで・・・・

以前の現場で使っていた、ソースコードからドキュメント類を自動生成するF社製のツールについて
話題が挙がっていて、今、この手のドキュメント自動生成ツールはどんなのがあるんだろうと
調べたらDoxygenなんてものがあったので、インストール〜とりあえず生成までしてみました。

前提条件

インストール

brewでさくさくインストールします。graphvizは図を生成するのに必要です。

$ brew install doxygen
==> Downloading https://homebrew.bintray.com/bottles/doxygen-1.8.9.1.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring doxygen-1.8.9.1.yosemite.bottle.tar.gz
🍺  /usr/local/Cellar/doxygen/1.8.9.1: 5 files,  15M
$
$ brew install graphviz
==> Installing graphviz dependency: libpng
==> Downloading https://homebrew.bintray.com/bottles/libpng-1.6.16.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libpng-1.6.16.yosemite.bottle.tar.gz
🍺  /usr/local/Cellar/libpng/1.6.16: 17 files, 1.3M
==> Installing graphviz
==> Downloading https://homebrew.bintray.com/bottles/graphviz-2.38.0.yosemite.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring graphviz-2.38.0.yosemite.bottle.1.tar.gz
🍺  /usr/local/Cellar/graphviz/2.38.0: 469 files,  68M

サンプルの準備

皆さんおなじみのTwitter4Jで見てみます。

$ mkdir Doxygen
$ cd Doxygen
$ wget http://twitter4j.org/archive/twitter4j-4.0.2.zip
$ unzip twitter4j-4.0.2.zip

設定ファイル生成

ドキュメントを生成するソースのルートで doxygen -g を実行します。
カレントディレクトリに Doxyfile ファイルが出来ます。

doxygen -g [filename] でファイル名を指定できます。

$ doxygen -g


Configuration file `Doxyfile' created.

Now edit the configuration file and enter

  doxygen Doxyfile

to generate the documentation for your project

設定ファイルの変更

設定項目は非常に多いですが、とりあえず RECURSIVE = YES にすれば
ディレクトリ内を再帰的に検索してドキュメント化してくれます。

# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
# The default value is: NO.

#RECURSIVE              = NO
RECURSIVE              = YES

ドキュメントの生成

doxygenコマンドでドキュメントが生成されます。
設定ファイル等で指定していなければカレントディレクトリにhtmlディレクトリが
作成され、自動生成されたドキュメント類が格納されます。

$ doxygen
Searching for include files...
Searching for example files...
Searching for images...
Searching for dot files...
Searching for msc files...
      〜略〜
Generating file index...
Generating file member index...
Generating example index...
finalizing index lists...
writing tag file...
lookup cache used 0/65536 hits=0 misses=0
finished...

ドキュメント

こんな感じにできました。

f:id:z_a_ki3:20150316235753p:plain

f:id:z_a_ki3:20150316235815p:plain

f:id:z_a_ki3:20150317000902p:plain

参考

Doxygen: Main Page
Doxygen(日本語)

メソッドの命名 ableとcan

TLでメソッド名の命名についてちょっと盛り上がっていて、エアリプしていくなかで、
1つ自己解決でスッキリしたので備忘録に。

よく、状態を確認するboolean型のメソッド名で

  • canHoge
  • isHogeable

と付けるパターンがあって、「人それぞれ、好みでしょ!」と思ってたんですが、
この記事を見て納得しました。

plaza.rakuten.co.jp

例えば、「タイプできる」

I can type.

I am able to type.

と、確かにどちらも可能ですが、can はすでに持ち合わせている能力、だからいつでもタイプできるという能力で、able は実現できる能力、いつでもできる能力という意味ではなく、発話時点で実現可能な能力です。

JavaのインタフェースでRunnableやThrowable、Iterableなどは実装することによって
その機能(能力)を実現することが出来るので〜ableと命名する。

boolean変数を返すメソッドはその機能(能力)が即時に実現(実行)できるかどうかを
返すメソッドなのでcan〜と命名する。

そう考えるとスッキリ納得することができました。

英語ネイティブの人からしたら、この辺はもう無意識に使い分けるんでしょうかね。
とりあえず基本的なことなので、少しずつしっかり理解していきたいと思います。

参考
命名規約 【Okapi Project】

オリジナルステッカー作り〜素材選び編〜

前回、ステッカー印刷をお願いする会社を選び、サンプル請求しました。

オリジナルステッカー作り〜会社選び編〜 - おれろぐ #z_a_ki3

で、届いたサンプルはこちらです!!

f:id:z_a_ki3:20150315093008j:plain

※写真では正確に質感が伝わらないことがあるので、あくまで参考としてください。

ちなみに今回はビックリマンシールのキラシールをイメージしていたので
プレミアムステッカーのサンプルを請求しました。

プレミアムステッカー|印刷通販のグラフィック|オリジナルネットプリント作成の決定版!

アセテートサテン

f:id:z_a_ki3:20150315093021j:plain

グロス

f:id:z_a_ki3:20150315104314j:plain

f:id:z_a_ki3:20150315093036j:plain

f:id:z_a_ki3:20150315093043j:plain

マット

f:id:z_a_ki3:20150315093026j:plain

f:id:z_a_ki3:20150315093050j:plain

f:id:z_a_ki3:20150315093054j:plain

ヘアラインシルバー

f:id:z_a_ki3:20150315093125j:plain

ホログラムスター

f:id:z_a_ki3:20150315093115j:plain

ホログラムハート

f:id:z_a_ki3:20150315093120j:plain

ホログラムレインボー

f:id:z_a_ki3:20150315093058j:plain

ホログラムレンズ

f:id:z_a_ki3:20150315093103j:plain

私はこの中でホログラムレインボーとレンズが気に入りました!
どっちにするかは決めかねているので、ゆっくり考えたいと思います。

サンプルは問題なさそうなので、データ作りに入っていきたいと思います。

次回

データ作成編

オリジナルステッカー作り〜会社選び編〜

さて、前回、ステッカーぺたぺた環境を構築した訳ですが、

ステッカーぺたぺたエンジニアに憧れて - おれろぐ #z_a_ki3

JavaDuke)関連のステッカーが手に入っておらず、手に入れる機会も無いので・・・

「無いのなら 作ってしまおう ステッカー」

という事で、オリジナルDukeステッカーを作りたいと思います!!

(今年はJava生誕20周年なのでJava Day TokyoやJJUG CCCで手に入るといいなぁ〜)

前提

  • 初めてのステッカー作り。
  • 印刷会社にコネがない。
  • デザイナーではない、普段はコード書いたりしているエンジニア(自称)

会社選び

まずはじめに、作ってくれる会社を探す必要があります。

[ シール 印刷 ] 【検索】

とりあえず、検索してみます。

世の中にはたくさん印刷会社があるので、どこの会社にするか悩みますが、
判断基準はこんな感じでしょうかね。

  • 価格
  • 納期
  • 入稿データの形式
  • 同人関連の取り扱いの有無
  • サイトの雰囲気

「同人関連の取り扱い」については、同人グッツは小ロットであったり、
印刷に関する知識が少なくても対応してもらえるかどうかを判断する為です。

そんなこんなでお願いする会社を絞り込んで、印刷の通販グラフィックさんに
お願いすることにしました。

印刷通販のグラフィック|各種印刷やオリジナルネットプリント作成の決定版!

会社が絞り込めたら、サンプル請求をして届くのを待ちます。
サンプルで印刷の質を確認するのは非常に重要です。

サンプルを見て、あ、コレは・・・と思ったらまた振り出しに戻ります。

サンプル請求が出来ない会社だったら・・・

残念ですが、もう一度、会社を選び直しましょう。

次回

素材選び編

ステッカーぺたぺたエンジニアに憧れて

この業界に入って、いろいろな勉強会に参加するようになって目についたのが
ステッカーぺたぺたエンジニアでした。

ステッカー エンジニア - Google 検索

ただ、ステッカーを貼り付けたら修理の時にどうなるんだろう、フォーマルな場に
持って行きたいときは・・・等と考えたりして、ちょっと日和ってました。

でも、やっぱりいいなーステッカー貼り付けたいなーなんて思っていたところで
天板にクリアのハードカバー付けてそこにステッカー付ければ良いじゃん!と
小学生並みの思いつきでカバーを探してみました。

まずはパワーサポートのエアージャケットセット!

うん、高い!

品質はそれなりなんだろうけど、単にステッカー貼り付けたいだけなので5千円は高い!!

で、カラーバリエーションが豊富(12色)で、安価だったMS factoryのコレにしました。

パッケージはこんな感じ

f:id:z_a_ki3:20150314110833j:plain

カバーは光沢ギラギラなので、この辺は好みが分かれるかも。
でも、ステッカーぺたぺた貼るので気にしない(・∀・)

f:id:z_a_ki3:20150314111430j:plain

f:id:z_a_ki3:20150314111456j:plain

ストッパーはこんな感じ。

f:id:z_a_ki3:20150314111546j:plain

ツメでぱっちんしてるだけなので、簡単に外せるかな。

とりあえず、カバーは付けたので、これからステッカーぺたぺたしていきます!

あと、Javaというか、Dukeのステッカーが手持ちでない&もらう機会が無いので、
ちょっと自作しようかなと思っています。

こんな感じで・・・

あ、この記事書くときに見つけた、こっちの方が(紹介によると)金型の痕が
無いらしいので神経質な人にはいいかもです。

MacにbrewでPostgreSQL

ローカルの開発環境にPostgreSQLをインストールしたので備忘録として。

インストール

パッケージ管理ツールbrew でインストールしました。

$ brew install postgres
==> Downloading https://homebrew.bintray.com/bottles/postgresql-9.4.1.yosemite.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring postgresql-9.4.1.yosemite.bottle.1.tar.gz
==> Caveats
If builds of PostgreSQL 9 are failing and you have version 8.x installed,
you may need to remove the previous version first. See:
  https://github.com/Homebrew/homebrew/issues/2510

To migrate existing data from a previous major version (pre-9.4) of PostgreSQL, see:
  http://www.postgresql.org/docs/9.4/static/upgrading.html

To have launchd start postgresql at login:
    ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
Then to load postgresql now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Or, if you don't want/need launchctl, you can just run:
    postgres -D /usr/local/var/postgres
==> /usr/local/Cellar/postgresql/9.4.1/bin/initdb /usr/local/var/postgres
==> Summary
🍺  /usr/local/Cellar/postgresql/9.4.1: 2996 files,  40M

自動起動の設定

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

実行結果

$ ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
/Users/hoge/Library/LaunchAgents/homebrew.mxcl.postgresql.plist -> /usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist

ln コマンドでシンボリックリンクを作成しています。

オプション 意味
-s シンボリックリンクを作成する。
-f リンク先ファイルが既に存在する場合、上書きする。
-v 実際にリンクを作成するファイル名を表示する。

~/Library/LaunchAgents はlaunchd*で各ユーザが管理するユーザごとに実行するエージェントの設定ファイルを置くディレクトリとなっています。

launchdはデーモン、アプリケーション、プロセス、スクリプトの起動・停止・管理を行う、オープンソースのサービス管理フレームワークである

設定ファイル homebrew.mxcl.postgresql.plist を覗いてみるとこんな感じ

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>KeepAlive</key>
  <true/>
  <key>Label</key>
  <string>homebrew.mxcl.postgresql</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/opt/postgresql/bin/postgres</string>
    <string>-D</string>
    <string>/usr/local/var/postgres</string>
    <string>-r</string>
    <string>/usr/local/var/postgres/server.log</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>WorkingDirectory</key>
  <string>/usr/local</string>
  <key>StandardErrorPath</key>
  <string>/usr/local/var/postgres/server.log</string>
</dict>
</plist>
キー 意味
KeepAlive 1度起動したら継続的に実行されるのか、あるいはリクエストの度ごとに起動されるのかといった情報を定義する。 true
Lavel ジョブの名称 homebrew.mxcl.postgresql
ProgramArguments 実行するプログラムおよびオプション、引数など /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
RunAtLoad launchdにジョブがロードされたときすぐにタスクを起動するか true
WorkingDirectory ジョブを実行するまえにこのディレクトリにchdirする。 /usr/local
StandardErrorPath 立ち上げたプロセスのための入出力ファイルを定義 /usr/local/var/postgres/server.log

起動する

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

launchctl load で指定した設定ファイル(homebrew.mxcl.postgresql.plist)を読み込みます。

ログは /usr/local/var/postgres/server.log に出力されます。

$ cat /usr/local/var/postgres/server.log
LOG:  database system was shut down at 2015-03-12 21:35:58 JST
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

※停止する場合

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

※launchdで自動起動の設定をしない場合

postgres -D /usr/local/var/postgres

とりあえず、これで起動まで出来ました。

参考

Mac(OS X)ではcronじゃなくてlaunchdでやる - Furudateのブログ
launchd - Wikipedia
launchd.plist(5) Mac OS X Manual Page

クール

数年前からいわゆる深夜アニメを見るようになりましたが、たびたびクールの定義が
分からなくなるので再確認しました。

1月から12月までの1年間は4クールに分けられ、それぞれ、第1・第2・第3・第4クール、冬・春・夏・秋クール、1月・4月・7月・10月クールなどと呼ばれる。 クール (放送) - Wikipedia

  • 1〜3月:冬
  • 4〜6月:春
  • 7〜9月:夏
  • 10〜12月:秋

今(3月)放送されているのは冬アニメってことですね。

以下、2015年春アニメで気になる作品

TVアニメ「パンチライン」

アニメ「浦和の調ちゃん」- 公式ホームページ -

TVアニメ「えとたま」公式サイト

TVアニメ「ハロー!!きんいろモザイク」公式サイト

てさぐれ!部活もの すぴんおふ プルプルんシャルムと遊ぼう|てさぐれ!部活もの|日本テレビ