崖っぷちの男

たぶん技術っぽいネタ。ブログ名が決められない

JSDoc を作るため JSDocToolkit を使う

JavaScriptJavaDoc みたいなのを作るときは jsdoc-toolkit を使うみたいなので使ってみました。
使い方は簡単ですしはてなの他の方のブログなどにいくらでもやり方が載っているのですが…

jsdoc-toolkit はこちら
http://code.google.com/p/jsdoc-toolkit/

ここからダウンロードした zip を解凍して、そのディレクトリに移動したら以下を実行:

java -jar jsrun.jar app/run.js [JSのソースが入っているディレクトリのパス] -t=templates/jsdoc -d=[html を出力するパス]

コマンドラインオプションは
http://code.google.com/p/jsdoc-toolkit/wiki/CommandlineOptions

Eclipse で使う場合は外部ツールで実行
http://code.google.com/p/jsdoc-toolkit/wiki/OtherTools

Mac OS Xの場合こんな感じ

  • Location はデフォで /usr/bin/java
  • Working Directory は解凍した jsdoc-toolkit のディレクトリ
  • Arguments は上に書いたやつから java を除けばおk

あとは Eclipse の設定の JavaScript -> Validator -> JSDoc でまずいコメントとかタグが足りないやつとかで警告が出るように設定したり、Problems ビューの Configure Contents で警告の表示範囲をしぼったりして今日はおしまい。

JsTestDriver で XMLHttpRequest ありの関数をテストするとき

タイトルの通りなんですが、ある関数の中で XMLHttpRequest を使ってローカルの Apache にある php から JSON データをとってきているとき、この関数をテストしようとするとエラーになってしまいました。この関数を使っているプログラムはちゃんと動いているのに、です。

でこれはどうやら JsTestDriver のサーバを http://localhost:42442 とかにしていて、一方でローカルの Apache は 80 番ポートにしているので、ポートの違いでエラーになっているようでした。

んでどうするのか調べてみて結論。

hogehoge.conf (YAML のやつ) に以下を入れると、どうも 42442 にアクセスしたときに 80 の方から結果をとってきてくれるっぽいです。

gateway:
- {matcher: "*", server: "http://localhost:80"}

ちゃんとした仕組みは分からないけど、とりあえずってことで。

目に見えないものを作るということ

 うちの会社では月1回ある朝礼があって、そこでのスピーチの順番が回ってきて以前スピーチをしたんですが、その時に言っていなかった話を書きます。

 自分は高校生ぐらいの頃、これから自分が何をして生きていこうかと考えたとき、パソコンで何かを作って生きていこうと決めました。ただ、それを決めたとき、あることが頭にひっかかっていました。それは、パソコンの中で作ったものはパソコンの中でしか見ることができない、ということでした。

 自分が子供の頃はパソコンがまだ普及しておらず、うちによく友達が来て今から考えればかなりクオリティの低いCD-ROMコンテンツで一緒に遊んでいました。その頃からゲームを作ってみたり、音楽を作ってみたりしていましたが、こういったものは自分の家に来てもらわなければ見てもらうことができませんでした。

 そういったこともあって、機械とかそういうものを作れば誰にでも見て(触って)もらえるのに、パソコンで作ったものは見てもらえる人が限られてしまうなあ、と割と真面目に考えていました。

 でもその時、やっぱり物体でないからこそ、材料費がかからない上、加工もいくらでもできるから、デジタルデータは無限の可能性があるんだ、とこれもまた割と真面目に考えて、最初に書いたような結論に達しました。

 この時はその程度のことしか考えていなかったのですが、今考えてみればデジタルなものというのはネットワークやメディアによって簡単に移動できる上、インターネットが一気に普及して世界中の人に作ったものを見てもらえるようになりました。写真なんかは最近は誰もが Facebook や Web アルバムを通じて他の人に見せるようになっていると思います。

 そしてだからこそスマホの意義があるんだなあ、とこのことから改めて思いました。ここ数年でスマホはほとんどパソコンと言ってもいいようなものになりました。そういえばうちの会社で個人 PC の使用が NG になりましたが、じゃあ iPhoneAndroidiPad はどうなるの ? といつも思います。機能でいえばいずれも個人 PC といってしまってもいい気がします。

 昔は近所で自分の家ぐらいにしかなかったものが、今や誰もが持ち歩く時代になりました。パソコンが一般の人の手の中にまで入りこんできたということは、デジタルデータの生きる場所がさらに増えたということです。そしてこれからも、デジタルなものはどんどん人間のまわりに侵食してくるだろうと思います。だからこそ、自分はこれからもその世界で何かを作っていきたいなあ、と思っています。

ミスドの店舗検索で禁煙席の席数を表示する (一部のみ)

ミスドというよりはマピオンがらみの話です。

ミスタードーナツ の店舗検索で例えば「東京都」から検索すると、地域を選択する画面に飛び、地域を選ぶとその地域のミスドが一覧されます。ちなみに大分県などはそもそも店舗が少ないので最初から一覧に飛びます。

例えば新宿だと、こんな感じで表示されます:

【お知らせ】

ここらへんはマピオンの機能みたいですが、色々調べると複数の地域のミスドを一緒に表示したり、禁煙席の列に席数が分かるものについては表示できることが分かりました。

例えばこうすると、東京の全ての店舗が一覧できます。禁煙席の席数も一部は載っているので確認できます。東京だと新宿靖国通り店が51席で席数が多いようです。

http://vip.mapion.co.jp/c/f?bool=admi2code&ob=0&vp=100&pg=&mx=200&p=1&admi3=13101&admi3=13102&admi3=13104&admi3=13105&admi3=13106&admi3=13107&admi3=13108&admi3=13109&admi3=13111&admi3=13112&admi3=13114&admi3=13115&admi3=13116&admi3=13117&admi3=13118&admi3=13119&admi3=13120&admi3=13121&admi3=13122&admi3=13123&admi3=13201&admi3=13202&admi3=13203&admi3=13204&admi3=13205&admi3=13206&admi3=13207&admi3=13208&admi3=13209&admi3=13210&admi3=13211&admi3=13212&admi3=13213&admi3=13215&admi3=13218&admi3=13219&admi3=13220&admi3=13221&admi3=13222&admi3=13223&admi3=13224&admi3=13227&admi3=13229&admi3=13303&admi3=13305&uc=21&grp=misterdonut

大阪はこんな感じ。admi3 というパラメータで地域を指定しています。本社は大阪だからか ? 店舗数は東京より多いんですね。

http://vip.mapion.co.jp/c/f?bool=admi2code&ob=0&vp=100&pg=&mx=200&p=1&uc=21&grp=misterdonut&admi3=27102&admi3=27103&admi3=27107&admi3=27108&admi3=27109&admi3=27111&admi3=27114&admi3=27118&admi3=27119&admi3=27120&admi3=27121&admi3=27122&admi3=27123&admi3=27124&admi3=27125&admi3=27126&admi3=27127&admi3=27128&admi3=27141&admi3=27142&admi3=27143&admi3=27144&admi3=27145&admi3=27146&admi3=27202&admi3=27203&admi3=27204&admi3=27205&admi3=27206&admi3=27207&admi3=27208&admi3=27209&admi3=27210&admi3=27211&admi3=27212&admi3=27213&admi3=27214&admi3=27215&admi3=27216&admi3=27217&admi3=27218&admi3=27219&admi3=27220&admi3=27221&admi3=27222&admi3=27223&admi3=27224&admi3=27225&admi3=27226&admi3=27227&admi3=27228&admi3=27229&admi3=27230&admi3=27231

まあ本当はカフェみたいに全席数最初から表示してくれるとうれしいんですけどね〜

電卓の仕様についていくつか

JavaScriptで電卓を作ろうとしていたら、電卓によって微妙に仕様が違うことが分かったのでメモ。

まず iPhone の計算機は前から順に計算していくんじゃなくてイコールを押したときにそれまで入力したものをまとめて計算するという話はこちらのブログで説明されている通り。

知らなかったよ! iPhone電卓のロジック|ブルース小林とiMacのブログ

つまり「1」「-」「2」「*」「3」「=」の答えは

  • iPhone だと -5
  • Win XPの電卓やCanon の簿記電卓だと -3


また iPhone 系の計算機だと「+/-」を数値を入力する前から押せるけど、Win XPの計算機や 簿記電卓だとまず数を入力してからでないと押せない。

また「1」「+」「=」と入力したとき、

  • iPhone だと「2」になる
  • 簿記電卓だと「1」になる

また「+/-」がらみで「1」「+」「1」「=」「+/-」「=」と入力したとき、

  • Win XPの計算機だと「3」になる
  • iPhoneや簿記電卓は「-1」になる

このへんは演算子のあと特に数字を押さないで「=」を押したときのデフォルト値? の仕様の違いみたい。

細かいところだと Win XP の計算機や簿記電卓は「0.」と小数点が表示されてるけど、iPhone は「0」になってて「.」を押すまでは「0.」にはならない。

Dashboard の方の計算機は iPhone と違い前から計算していく、ってのは上のブログの説明の通りだけど、「+/-」ボタンが存在しない。


…などなど。計算機は見た目は似たようなものでも色々違うもんですね。

今さら新iPadを入手したので色々思ったこと

昨日やっと新iPadを入手しました。iPad 自体もタブレット的なものも初めてなのですごく新鮮でとりあえずずっと触っています。

で感想とか思ったところをざっと

  • SoftbankWifi 2年間はAppleStoreからの購入だと登録できるようになるまで1週間くらいかかるらしい。到着して2日目でやってみたけどやっぱりまだ登録できなかった
  • 紙のマニュアルがトランプくらいのカード1枚しかない
  • Mac から USB で充電ができない (ちょっとずつ充電されてるらしいけど)
  • 風呂のふたをスタンドとして使う場合縦に立てられない (垂直ならできるけど見づらくて使えない…)
  • イヤホンはついてこない
  • iPad対応アプリの場合、iPhoneで使っている同じアプリと印象が全然違う (いい意味で)。広さって大事ね。ゲームとか特に
  • 既にiPhoneを使ってる場合は最初にiPhoneのバックアップから復元するのが無難そう。いちからiPadにアプリを入れていくのはさすがに面倒
  • 復元前にアプリの数を200におさえた方がいい。アプリを復元するとき、フォルダを作っていても無視されて1つ1つ並んでいくので、アプリの数が多すぎるとページが多すぎて最後までコピーされない (表示されないだけ?)
  • Apple Wireless Keyboard と一緒に持ち歩くときはiPadの電源を切った方がいい。キーボードの再生ボタンでiPadの音楽再生が始まってしまうので
  • 意外とiPad対応してないアプリが多い。iPhoneの人気アプリとはまた違うのかな? あとiPad非対応アプリが縦でしか使えないのはちょっと不便
  • iPadのケースはたくさんあるけど、Mac Book Air 11インチのケースに他の小物と一緒に入れるってのもサイズ的にありな気がする

ついでにアクセサリを求めて新宿の西口を中心に家電量販店を見てきました。

  • 西口のヤマダ
  • 西口のヨドバシ
  • 西口のビック
  • 東口のヤマダ

あたりを見ましたが、個人的には何だかんだで品揃えはヨドバシかなーという感想。
ただビックも変わらないかも。西口で何か買うならこの2つでよさげ。

JsTestDriverでカバレッジを見る (Mac OS X)

最近 JavaScript でテストを書くのに JsTestDriver を使ってみているので今日はカバレッジの出力方法をメモ。ただし Mac OS X の話。

まあこの記事 Writing JavaScript unit tests with JsTestDriver | @benmatselby に全部書いてあることなんですが。

1. Downloads - js-test-driver - Remote javascript console - Google Project Hosting から coverage-X.jar を落とす。とりあえず「なんたら.conf」と同じフォルダに plugins フォルダを作ってその中に入れる

2. 「なんたら.conf」に設定を追加

plugin:
 - name: "coverage"
   jar: "plugins/coverage-1.3.4.b.jar"
   module: "com.google.jstestdriver.coverage.CoverageModule"

3. JsTestDriver を動かしてブラウザをキャプチャ

4. 以下を実行、「jsTestDriver.conf-coverage.dat」が出力される

java -jar $JSTESTDRIVER_HOME/JsTestDriver-X.jar --config [なんたら.conf へのパス] --tests all --testOutput [なんたら.dat を出力させたいパス]

5. Linux Test Project - Coverage » lcov の lcov.X.tar.gz をダウンロードして解凍

6. 解凍した lcov-X/bin/genhtml を使って以下を実行 (出力するディレクトリは指定しておいた方が無難。色々ファイルが出てくるので)

genhtml -o [出力するディレクトリ] ./jsTestDriver.conf-coverage.dat

これで html が出力される訳ですが、TDD でやってるとカバレッジ 100% なので見てもおもしろくないですね。。