auientの日常

ノンジャンルで書きたいことを書くブログ

おいしい紅茶の店マップを作った話

自分は紅茶が好きで、外に出掛けた時も紅茶の店があるとつい寄りたくなります。

参考にするのが、日本紅茶協会のおいしい紅茶が飲める店リスト。

www.tea-a.gr.jp

これが超有用な情報源で大変に頼りになりますが、ページの作り上、店を探しにくいことが気になっていました。

そこで。Google Mapsにこの店の情報をプロットした「おいしい紅茶の店マップ」を作ったのでお知らせします。

www.google.com

ついでに、協会の認定店ではないけれど個人的に気になるお店も載せました。ピンの色を変えて分かるようにしています。

完全に俺得案件ですが、よろしければお使い下さい。 

地図を見て気づくこと

地図で視覚的にお店の所在が分かると、色んなことに気がつきます。

 

例えば空白地帯。東北地方、紀伊半島、四国はお店が少なくてさびしいですね。

f:id:auient:20150506173113p:plain

 

また首都圏と見ると、東急田園都市線に沿ってお店がたくさんあることが分かります。優雅なマダムが多いんでしょうか。また中央線沿い〜吉祥寺にお店が多いのも分かります。

f:id:auient:20150506173118p:plain

 

見えるようにするっておもしろいですね。

 

俺の子連れおすすめスポット - 城南島海浜公園

この記事は、俺の子連れおすすめスポット Advent Calendar 2014の12日目です。

城南島海浜公園を紹介します。

城南島という埋め立て地の果てにある公園です。

良い所は、ド迫力の飛行機が見られることです。

  • 羽田空港の滑走路の延長線上に公園があり、まさに着陸せんとす、という飛行機が間近で真下から見られます。
  • ぜひスマホFlightRadar24をインストールしていきましょう!
  • 地図を見ると分かる通り、公園と滑走路が平行になってます。ここを山手線かってくらいの勢いで飛行機がガンガン降りてきます。


あと、

  • 海浜公園の名の通り浜辺があります。お砂場遊びセットを持って行くと良いでしょう。アサリもとれるのでちょっと大きい子でも楽しめるかも。
  • 地味ですが、東京湾を行き来するタンカーなど船もたくさん見られます。
  • キャンプ場があり、肉や道具を持って行くとBBQもできるようです。泊まりも可能。ただし人気があってなかなか予約できないみたいです。
  • 釣りができるスペースもあるみたいです。


この公園は良い所ばかりではなくて、

  • 車が必須です。バスは1時間に1本。駅から歩ける距離じゃありません。
  • 工業地帯なのでコンビニとか便利施設は全然ありません。レストランもなし。遊び道具や飲食物は十分に準備して行きましょう。
  • 風向きや天気によっては近くの滑走路が使われないこともあるようです。その時は……えー、残念でした。

逆にこれが分かっていれば、なかなか穴場だと思います。

俺の子連れおすすめスポット - 丸の内kitte

この記事は、俺の子連れおすすめスポット Advent Calendar 2014の10日目です。

自分のオススメは、丸の内郵便局跡地にできたkitteです。

良い所は、

  1. 眺めのよい屋上で休める。割と広いので子供も走り回れる。東京駅の新幹線と在来線がバッチリ見られるので電車好きの子にはかなりおすすめ。
  2. 地下1階の食事スペースでまわりを気にせず食事ができる。全国のお弁当が買えるので手ぶらで行っても大丈夫。お弁当を選ぶのもたのしい。*1
  3. 入場無料の博物館がある。これだけでも行く価値あり。
  4. ファッションや雑貨の店があり、大人もお買い物を楽しめる。

こんなとこですね。
東京のど真ん中なのに意外と無料で遊べます。


(ずっと新幹線を眺めていた息子)

*1:ただし離乳食はさすがにないのと、フードコートほど広くはない点に注意。

お台場で自転車を借りた話と、盗まれた話、婦警さんの話

この前のぼやきといい、もはやauientが調べたことではないし技術情報でもないけど、今日はあまりにも色々なことがあったので、その話を記録しておきます。

お台場で自転車を借りた話

江東区臨海部(豊洲・お台場)コミュニティサイクル」(http://kcc.docomo-cycle.jp)というものがありまして、要するにこれはお台場エリアのレンタサイクルです。1回きりだとほぼ100円、1日フリーで500円というリーズナブルなお値段で赤いミニベロ自転車が借りられ、クソ広いお台場エリアを効率的に移動できるのです。貸出・返却は無人でケータイとSuicaを使うハイテックな仕組みとなっているのですがそこは割愛。まあいい感じで未来でエコな、何かそういうやつです。

今日、私はスニーカーがほしくてお台場に行きました。で、上記の自転車をみつけ、ショッピングセンターを回るついでに青海埠頭を探検したり、有明〜東雲のタワーマンションを見物するのも乙かと思い、自転車を借りてみました。

このレンタサイクルのよいところは、エリア内十数カ所に設置されたステーションに自転車を返却してしまえば、「自転車を管理する」という責務から解放されることです。自転車についてまわる鍵の問題は、(盗難などのトラブルにあわないよう)自分で自転車を管理しなければならない、という命題が根底にあります。その点ステーションがたくさんあるこのレンタサイクルは、一旦無事に自転車をステーションに返却してしまえば、その後盗まれようが壊されようが、自分に責任はありません。*1 買い物等で自転車を離れる間に心配することがないというのは、ストレスフリーでとても快適です。

その自転車を盗まれた話

そんなことを考えながら買い物をしていた私。2件目のショッピングセンターは、入り口がやや(数百メートルほど)ステーションから離れていたため、少し迷って、私はステーションではなく、ショッピングセンター入口のそばに自転車をとめました。自転車には差し込み錠*2
という簡易的な鍵がついていたのでそれをかけて、若干の不安をよそに買い物に行きました。そして約2時間後、戻ってみると……自転車がなかったのですよ。

まず撤去されていないか周囲を探し、なさそうなので管理センターに電話をします。事情を説明して理解を得ましたが、なんと自分が警察に被害届を出す必要があると言われます。
代わりの自転車は貸してもらえたので、これで交番を探すことになりました。もちろんさくっとGoogleの力を借りて最寄りの交番を探し、相談。担当してくれたのは新人の婦警さん*3でした。関係ないですけど、お台場で起きた事件は警視庁湾岸署の管轄になるんですね。

で、被害届を書くのですが、これがまた面倒。被害者は自分ですが、盗難にあったものの所有者は管理会社です。婦警さんは不慣れなのもあるのか何回も電話のやりとりをして確認していました。特に被害物の時価の欄が鬼門で、警察としては適当なことを書くわけにいかないし、会社側は購入時の金額ならともかく時価とか考えてません。たぶん担当者も困っただろうなと思います。そんなことやってる間に交番には他の人がくるし、まー忙しいわけです。

折悪くお台場のどこかで旧車イベントみたいなのをやっていて、頭の悪いバイク乗りや可哀想な改造をされた車がぶわぶわうるさい。電話が聞こえない。すべって頭でも打って静かにしてもらいたいとこですが、それも警察の仕事を増やすと思うと、そんなこと思うのも申し訳ない。

なんだかんだで書類ができたのは被害に気づいてから1時間後でした。やっと終わったーと豊洲にむけて出発。ゆっくり30分くらい自転車を漕いで東雲あたりに差し掛かったところで携帯に着信が。すわスピード解決か!と思って出ると婦警さん。

「すみません、書類の記入を間違えてしまったので訂正印を押しに戻って来て頂けませんか?申し訳ないんですけども……」

おい!( ;´Д`)

その後3kmをダッシュで戻って訂正印を押しました。2箇所(笑)。がんばれ婦警さん。がんばれ。

ちなみに
  • 交番のベテラン警官さん曰く、レンタサイクルが盗まれるのは珍しいとのこと。あんましょっちゅう発生する事件ではないみたい。
  • また、もし自分が訂正印のために戻らなかったとしたら、うやむやにできる……ということはなくて、被害物を郵送したり、届出人が僻地に行ってしまった場合などは婦警さんが直接出向いて始末をつける必要があるとのこと。たかだか自転車の盗難でクソ面倒ですね。時々ニュースになる警官の書類廃棄とか、ちょっと動機が分かった気がします。*4

その後の話

で、この話は終わりかと思いきやオチがついてました。
豊洲ららぽーとへ行きラーメンをすすって帰ろうとしたところ、なんと偶然長野から出てきた友人夫婦と遭遇*5。マジで偶然に1年ぶりくらいの再会。フードコートで食器を返そうとしてばったりという巡り会い具合。
スピリチュアルとか信じないけどこれは奇跡と思いました。盗まれて、書類書いて、呼び戻されて、全部バッチリこのタイミングじゃないとフードコートで会わないよ!

というわけで、ライブ後の友人と銀座で飲んでホクホクで帰宅しました。婦警さんこんな偶然をどうもありがとう!悪いことばかりじゃなかったよ!これからもがんばって!

*1:まあ、困ることはあるかもしれませんが。

*2:参考:http://astamuse.com/ja/published/JP/No/1998131583

*3:泉野明みたいなショートヘアの美人さん

*4:婦警さん曰く、被害物は司法書類なのでいい加減は許されない由。法治国家日本!

*5:ライブ見に来たらしい

テスト駆動開発の効率の悪さ

今、運のいいことに担当の仕事が新規案件で、しかもわりと裁量があるので、UnitTestを実践&勉強している。(やっと!)
いい機会なのでテスト駆動開発を試してみたのだけど、これがどうにも効率が悪く、良い方法だと思えない。

たぶん、原因は設計が固まってないことだと思う。

今は、スケッチみたいに書いては消して、クラス分割やデータの持たせ方・依存関係のバランスを探るような作業をしている。この状況でテスト駆動をやってみて、

  • 「やっぱこの構成ダメだな」と思ってテストコードまで書き直すオーバーヘッドがでかい(めんどい、手戻り作業量が増えて嬉しくない)
  • 単体テストケース内のクラス利用例だと単純すぎて、結合時のクラスの利用方法がイメージしづらい。参考にならない

という問題を感じている。

これ、自分のやり方がまずいだけなのか、そうでないのか。
コード書く前にばりっとモデリング済ませてからやると、確かにうまくいきそうな気はするけど、最初からそんないい設計できないし。
どうなんだろーな。

別に火は吹かないid:auientによるshell tips

id:naoyaさん、id:wadapさんのshell tipsの記事が話題になっていたので、便乗して自分もtipsを書いてみようと思います。

シェル操作編

$_で直前の引数を参照する

[nt@localhost] $_で一つ前のコマンドの最後の引数を参照できます。argv[argc-1]になるようです。これはクソ長い名前のディレクトリを作ってcdするときなどに便利です。

[nt@localhost] $ mkdir -p very/long/path/or/confusing_name_directory/20140426
[nt@localhost] $ cd $_
[nt@localhost] $ pwd
/home/nt/very/long/path/or/confusing_name_directory/20140426
[nt@localhost] $ 

irbや確かpythonでも _ で最後の戻り値を参照できますね。いつからある機能なのか知りませんが、ここら辺から来てる慣習のような気がします。

!!で直前のコマンドを実行する

!!が一つ前のコマンドに展開されます。別にヒストリーを1つ戻っても同じですが、同じコマンドをsudoするときにドヤ顔できます。

[nt@localhost] $ service httpd restart
Error: Permission denied
[nt@localhost] $ sudo !!
sudo service httpd restart
[nt@localhost] $

これは古いシェルにはない機能かも。手元のbashtcshにはあり、kshにはなかったので。

Ctrl-z、jobs、fg、bgでジョブを自在に操る

Ctrl-zで現在のプロセスを中断できる、というのが紹介されていました。ならばjobsとfgとbgもセットで覚えてしまいましょう。

[nt@localhost] $ vi foo.rb

# viの中でCtrl-zを押すとシェルに戻れる

[1]+  Stopped                 vim foo.rb
[nt@localhost] $ 
[nt@localhost] $ tail -f php_error_log 

# tail -f でも同じ

^Z
[2]+  Stopped                 tail -f php_error_log
[nt@localhost] $ 
[nt@localhost] $ make -f large_program.mak 

# 長ーいコンパイル中もOK

^Z
[3]+  Stopped                 make -f large_program.mak
[nt@localhost] $ 

確認するにはjobsコマンドを使います。これで現在のジョブが一覧表示されます。

[nt@localhost] $ jobs
[1]   Stopped                 vim foo.rb
[2]-  Stopped                 tail -f php_error_log
[3]+  Stopped                 make -f large_program.mak
[nt@localhost] $ 

元に戻るにはfgコマンド(fore ground)を使います。引数なしで直前のジョブ、fg - で一つ前のジョブに戻れます(cdと同じ!)。fg %1 と番号指定することで任意のものに戻れます。[1][2][3]と表示されているのがそれですね。ジョブ番号といいます。

元のジョブを続けたいけど入力は必要なくて待つだけ、というときにはbg (back ground) を使います。引数のルールはfgと同じ。これはコマンドを&つきで実行したときと同じ状態(バックグランド実行)になります。で、元のジョブを終了したいときはkill %1でOKです。

# makeはバックグランド実行したい
[nt@localhost] $ bg
[3]+ make -f large_program.mak &

# tailはもう見ないので終了
[nt@localhost] $ kill %2
[2]+  Terminated: 15          tail -f php_error_log

# viに戻る
[nt@localhost] $ fg
vim foo.rb
set -o vi

bashのデフォルトのキーバインディングemacs風(Ctrl-aで行頭、Ctrl-eで行末など)になってますが、これはたまたまそうなってるだけで、set -o viでviふうになるよ!escでコマンドモード、hjklで移動のおなじみのやつです。元に戻すにはset -o emacsとします。
ただこれはあまりオススメできなくて、自分はvi派だけどシェルはemacsキーバインディングにしています。コマンドみたいに短い入力だとモードの切り替えが面倒なんだよね。まあ慣れか。

シェルプログラミング編

sh -n, sh -xでデバッグする

sh -n script.shとすると構文チェック、sh -x script.shとすると実行コマンドを標準エラーに出しながら実行。シェルスクリプトの開発時には便利です。

set -u, set -eで堅牢なスクリプトを書く

スクリプト内でset -uとすると、未定義の変数展開をエラーにしてくれます。set -eとすると、コマンドがエラーになった時点でスクリプトの実行を中断してくれます*1
私に言わせれば、これを使っていないシェルスクリプトはuse strict; use warnings;していないperlプログラム、ErrorExceptionを使っていないphpプログラムのようなものです。使い捨てにするスクリプトならともかく、お金をもらって書くスクリプトには是非書きましょう。

{}でコマンドをグループ化する
echo "メッセージ" >> logfile.txt
ls >> logfile.txt
別のコマンド >> logfile.txt

こんなスクリプトをときどき見ます。毎回ファイルを開いていてダサいですね。ファイル名の指定もDRYじゃありません。{}でグループ化しましょう。

{
  echo "なにかメッセージ"
  ls
  別のコマンド 
} >> logfile.txt

ちなみに、別記事で紹介されている&&、||の条件判断とグループ化を合わせるとこんな書き方ができます。

[ -f testfile.txt ] || {
   echo "file not found."
   exit 1
}

grep word file.txt > tmp.txt && {
   tmp.txtを使った処理
   :
   rm -f tmp.txt
}

rubyのブロックみたいでちょっとかっこいいですね。ただしset -eしていると||が分岐しないでそこで終了しちゃいます。使い捨てのものに使ってひとりでドヤるにとどめておきましょう。

シェルスクリプトを捨てる

シェルスクリプトを書く上で大事なのが、シェルを使うのをやめる判断です。シェルは難しいことをやるのに向いていません。理由はたくさんありますが*2スクリプトが大きくなるとそのうち保守が不可能になるので、技巧的だなーと思ったらさっさとシェルスクリプトを捨てて別のまともなプログラミング言語を使うことです。
代わりの言語はperlがいいでしょう。*nixならshの次に環境に入ってる確率が高くてモジュラーなプログラムが書けます*3。ちなみに、いくつかの商用UnixLinuxで仕事してきましたが、入ってる率の高いスクリプト言語を感覚的に並べるとこんな感じになります。

sh,awk > perl >>> bash > python >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ruby
エディタの件

ついでにエディタの話を。
もしあなたが画家のようなプログラマーなら、生産性の高いものを使えばよいのです。しかしもし問題解決を旨とする職人ならば、悪いことは言わないのでviを使えるようにしておきましょう。例えるならemacsは画家のアトリエみたいなもんですが、viは鉛筆1本です。他人のemacsを使わせるのが拷問として知られる一方、訓練されたvi使いはどんな環境でも仕事ができます。sh, awkと同じでどこにでもあるからです。客先のサーバにemacsが入ってることなんてまずありません。

      • -

追伸:

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

この本はとても良い本なのでおすすめしておきます。ここに書いたことは全部のってます。

*1:ちなみにこれを対話的に使うシェルでやると、コマンドtypoして強制ログアウト、未定義の変数展開で強制ログアウト、コマンドがエラーを返したら強制ログアウトという超ハードモードになります。.bashrcに書くなよ。絶対に書くなよ

*2:サブシェル問題とか動的スコープとか、シェル関数がまともな関数機構ではないとか

*3:ただしver 5.6だったりしますが