| @旅行/散歩

Thira, Greece

結婚して新婚旅行に行ってなかったので、新婚旅行代わりに息子殿もつれて三人でギリシャとクロアチアに行ってきた。アテネまでの飛行機はカタール航空で、アテネからギリシャの島々への飛行機、フェリー、クロアチアへの飛行機、すべての宿泊は自分たちで手配した。いわゆるツアーではない旅行をしてきた。

航空券や宿の手配は結婚式の準備や住宅の建設と同じようにつらく、また旅行中は飛行機の欠航があり大変な思いをした。いまはみんな海外旅行は行ったことあると思うけど、家族で、しかも子連れで旅行に行くときには一人で行くときとは勝手が異なるということがわかったので、得られた知見をシェアさせていただきます。

1. 飛行機はホールチケットを買う

旅程に乗り継ぎが発生するような移動がある場合は、途中の遅延・欠航時のリスクを旅行者自身が負わないためにホールチケットにするのが良い。ギリシャのミコノス島からアテネを経由してクロアチアのドゥブロヴニクに移動する際、我々は個別にチケットを買っていたため、ミコノスからアテネへの便が欠航したときに発生した損害(アテネ => ドゥブロヴニクのチケットの予約変更費用)を自分たちで賄わなければならなかった。ミコノス => アテネ => ドゥブロヴニクを一つの航空会社を窓口にして買っておけば、遅延が発生したときの振り替えや代替輸送はチケットを購入した会社が責任をとって手配してくれる。

またドゥブロヴニクではボスニア=ヘルツェゴビナのモスタルという街への日帰りエクスカーションを予約していたが、飛行機の欠航により参加することができなかった。キャンセルを申請したが、キャンセル時の Refund がない代わりに安くなるタイプの予約を選んでいたため、返金してもらうことができなかった。数百円増しで事前キャンセルが可能になるタイプの支払いオプションもあったので、海外で日帰りツアーなどを日本から予約する場合にはそういうオプションを選んでおくのが正しいと思った。外国は日本ではないので何が起こるかわからない。リスクは極力負わない方がよい。

2. クレジットカードの付帯保険を過信せず海外旅行保険に入る

クレジットカードの付帯保険には飛行機遅延やロストバゲージの補償はついていない。学生旅行と違って子どもがいたりする家族での旅行では、飛行機に乗れなかったときに発生する被害額が大きくなりやすい(飛行機のチケットの変更手数料、宿のキャンセル料などなど)。ゴールドカードなど特殊な付帯保険があるカードを保持しているのではない限り、少々お金がかかっても海外旅行保険に入っておく方が良い。

3. 日本円を現地で両替しない

日本円をギリシャで両替しようとしたら恐ろしくレートが悪かった。羽田空港の国際線ターミナルには三井住友銀行の両替窓口があり、ここのレートは €1 = ¥141 だったが、ギリシャの両替レートは €1 = ¥151 と 10 円も悪かった。しかし最強なのはクレジットカードの海外キャッシングで、 JCB カードでキャッシングして ATM で降ろしたところ、 €1 = ¥139 で引き出すことができた。しかもこのレートは手数料込みである。キャッシングなので年率 18% の金利がかかってしまうので帰国後に迅速に返済する必要があるが、賢く使えば一番有利なレートでユーロが引き出せる。新生銀行の口座にある円預金も海外で現地通貨として引き出せてレートは悪くないはずなので活用してみるといいと思う。ただクロアチアに関しては円とクロアチアクーナの両替レートは決して悪くなかったので、渡航先によりけりかも知れない。少なくともギリシャの場合はキャッシングの方がはるかにレートが良かった。

4. tripadvisor でレビューを見て Booking.com で予約する

今回旅行をするまで知らなかったのだけど、 tripadvisor というサイトが旅行者向けの情報をたくさん提供していて、旅行者向けの食べログ的な地位を確立しつつある。このサイトで宿やレストランのレビューを読むことができる。また Booking.com という YAPC 2014 のスポンサーにもなってたりするサイトで宿を予約するのが良い。宿泊予定の宿について、地図が添付されたメールが送られてきて便利。実際に宿泊した人のレビューが読めるのもサイコーだ。

5. なるべく連泊する

ギリシャのサントリーニ島は宿泊費が高くて同じところに連泊できなかったため、一日一日宿を転々とした。しかしこうすると昼間の時間を宿で過ごすことができず、毎日チェックアウトしては次の宿にチェックインしての繰り返しになり、旅行というより移動になってしまう。少々コストがかかったり場所が悪かったとしてもなるべく同じ宿に連泊して街の散策を楽しむ方に力を注いだ方がよい。

6. 洗濯屋を利用する

日本人の感覚だと他人に洗濯を頼むということに抵抗があるかもしれない。しかし外国にはセルフサービスのコインランドリーは少ない。かといって手洗いで毎日洗濯をしていると寝るのが遅くなったりして観光する時間が削られてしまう。洗濯は洗って干して乾かして畳んでという作業にかなり時間をとられる。自分は今回の旅行でセルフサービスのコインランドリーが見つからず、仕方なく洗濯屋を利用してみたのだが、非常に快適だった。洗濯物の量に関係なく値段は €10 ほどで、きれいに洗って畳んでもらって 3 時間で仕上がった。洗濯してもらっている間は自分の身は自由なのでその時間を観光にあてることができ、非常に有意義だった。

7. 子どもを連れて行く

子どもを実家に預けて夫婦二人で海外旅行に行く、という選択肢もあったかもしれない。しかし二週間ほど外国に連れて行っただけでも息子殿はハローとかバーイとか言うようになったし、 "What's your name?" と聞かれて名前を答えるようになった。また子どもをきっかけに他の家族連れや現地の人と話すきっかけができたりす。ベビーカー(ベビーカーは和製英語なので stroller と言わないと通じない)を持って行ったりとか大変な部分はあるが、連れて行って良かったと思う。

8. 水を飲み炎天下を避ける

夏のヨーロッパには初めて行ったが、地中海沿岸地域の夏は湿度が低くて過ごしやすいに違いないと思っていた。確かに湿度は低く日陰は涼しくて過ごしやすいが、強烈な太陽と乾燥で、モンスーン気候に適応した日本人には非常につらかった。夏なのに唇がひび割れてリップクリームが欲しいと感じるのは初めてのことだった。意識して水を飲まないと確実に脱水症状を起こす。またギリシャの太陽は強烈で日も長いため、正午から午後 4 時くらいまでは飲食店に入るか宿で休むなどして炎天下に身を置き続けないようにしないと危ない。恐らくイタリアや南フランス、スペイン、ポルトガル、北アフリカも同じような気候だと思う。帽子やサングラス、日焼け止めも忘れずに。

9. 中学英語を復習する

英文でメールを書いたり英文を読んだり英語で人が話しているのを聞いたりするのはだいたいできるのではないかと思う。しかし話すのが難しかった。腹減った、ビール飲みたい、トイレ行きたい、これ買いたい、荷物預かっててちょんまげ、お釣りちょろまかしてんじゃねーぞこのタコ、飛行機欠航とかふざけんな金返せコノヤロー、みたいな英語は、英文のニュースを読んだりしてるだけでは話せるようにはならない。中学校の英語の授業で習うような英会話文が一番実用度が高い。英語の読み書きには自信がある人でも、旅行前は旅の英会話とかをさらっと学習してフレーズごと覚えといた方がいいと思った。

10. SIM Free の WiFi ルーターがあると便利

スマートフォンになれきった現代人は、日本にいるときと同じようにインターネットにアクセスできなかったら死んでしまうと思う。しかし日本以外の国でインターネットを使うとローミング料金が高額で帰国後にまいっちんぐになってしまう。いまは海外でもパケ放題になるようになったが、それでも一日 2980 円もして、一週間の旅行でも 20000 円オーバーになる。海外向けのレンタル WiFi ルーターもあるにはあるが、一日 880 円程度費用がかかったり、一部の国には対応していなかったりする。

日本以外の国はプリペイドの SIM カードを比較的安価に買うことができ、 SIM フリーの WiFi ルーターにそいつを挿して使うと現地で日本にいるときと同じようにツイッターやホェースブックが使えて便利。道に迷ったときにも Google Maps でさくっと検索できる。ただヨーロッパの観光地の飲食店には必ず無料の WiFi があるので、インターネット使うときには店に入ればよいと割り切れる人には必要ないかも知れない。自分は解約済みの EMOBILE の Pocket WiFi GP02 を所持していて、この端末は海外の SIM カードに対しては SIM ロックがかかっていなかったので、現地で購入したプリペイド SIM カードを挿入して使ってみた。非常に便利だった。

ただ iCloud のフォトストリーム同期を on にしていると、日本国内では 4G 回線や 3G 回線では同期を行わないフォトストリーム機能が、 iPhone からは WiFi ルーターも固定回線の WiFi も区別できないので同期を行ってしまい、データ通信があっという間に上限に到達してしまうので注意が必要。 旅行中はフォトストリーム同期は Off にしておくことが望ましい

なお WiFi ルーターは電池の消耗が激しいので Anker のモバイルバッテリーとチャージャーがあると高速に充電できて快適。


旅行して帰ってきた日の新聞にはギリシャデフォルト間近とか ATM で預金を引き下ろすために並ぶ人多数とか書いてあったけど、自分が現地にいたときには特に混乱もなく、ぎりぎりのタイミングで無事旅行できたのかなと思う。いまの時期にギリシャに行きたいと思う人は少数派かもしれないですけど、何かの参考になれば幸いです。個人的にはクロアチア最高でした。旅行記を別の記事として書きます。

| @労働

会社を辞めた。3年半在籍してた。

ペパボに入る前は凄いブラック企業で働いてて、 Subversion やめて Git 使いたいと言ったら会社辞めろと言われたりしてた。そんなときに蜘蛛の糸のように目の前に垂らされたのが Dazaifu プロジェクトの求人で、藁にもすがる思いで応募し入社したのだった。この辺は過去のエントリに適当に書いてあるので読みたい人は読んで下さい。

ペパボは働きやすくて、毎日18時になったらみんなさっと帰るし、21時過ぎに会社出ると最終退出者であることもしばしばだった。家庭の事情にも理解があって、育児休業をさせてもらったり、ばあちゃんの具合が悪いときには会社休ませてもらったり早めに帰ったりしてたし、ばあちゃん死んだときにはお花とかも出してもらった。労働環境の他にも年末の社員旅行とかプレゼン大会とか社内の催し物があったりして良い雰囲気だった。課長が女性エンジニアにセキュリティルームでセクハラしてたり社長が気に食わない奴はいきなりクビにしたりしてたブラック企業から移ってきた身にはほとんど天国だった。

なにより自分にとってよかったのが、インターネットが会社になったみたいなところだった。会社に @shikakun がいて、あとから @antipop さん( Mr. CTO!)とか @udzura さんとか面白インターネットコンテンツな人も入ってきて、自分が @morygonzalez として存在することが是認される感じがとてもうれしかった。

とはいえペパボでもそれなりに厳しいことはあって、そういうのは一昨年の闇アドベントカレンダーに書いたのでこれも読みたい人は読んどいてください。

社内ではおおよそ一年おきに異動していて FANIC => MuuMuuDomain => minne と渡り歩いた。そう、僕はいま CM やったりしてる minne の中の人だったのです。

3年半の間に PHP を書くこともあったけど、自分の指向性とかを汲み取ってもらい、概ね Ruby を書かせてもらった。ウィンドウズを使えと強要されることはなかったし、 Ruby は書きたい放題だし、毎日会社行くのが楽しかった。

最後にいた minne は本当に良いチームで、みんなでリーンキャンバス描いたりエレベーターピッチを考えたりして、どうやったらサービスが圧倒的に成長できるのかを真剣に考えてた。

エンジニアはみんなできる人たちで、特に初期から minne を支えていた @mizoR さんが凄く、ちゃんとコンピューターサイエンスのバックグラウンドがあるため文系の自分にはない視点で問題にアプローチしていて非常に勉強になったし、また歩く UNIX の哲学みたいな存在で、小さく作ってこまめにリリースし検証することの大切さを教えてもらった。(@mizoR さん作の rake_notification は神 gem なのでオススメです)

新卒入社の @keokent もできる奴で、モバイル端末へのプッシュ通知をサクッと作るしサービス愛も厚いし、風紀の乱れにもうるさくて、Tシャツの裾は常にズボンにインするように指摘されてた。

去年の4月に入社してきた @amacou さんも凄くて、 Ruby/Rails も Objective-C も両方書けて、出張申請とか経費精算さえできればフルスタックおじさんという感じだった。

ムームードメイン時代に仲良くなりプラチナサーチャーで女性ファン急増中の @モノクロメガネ(いけすかないのでリンクはありません) さんに助っ人で来てもらうこともあって、絶対間に合わないだろみたいな無理めなスケジュールでタスクが降ってきたときにもみんなでホワイトボード囲んでワイワイ開発して余裕で終わらせたりして最高だった。モノクロさんは隙あらば Go で Ruby のコードを置き換えようとするところ以外はエンタープライズ力も高いしスクラムマスター業もこなすナイスガイだった。本当にいけすかない。

何をやらせてもスピーディーにこなす若手ネット芸人 @hisaichi5518 さんとも物理的に距離がある状態で仕事したけど、とにかく作り上げるという力はさすがだと思った。チーフエンジニアの @hsbt さんのオラオラと詰めてくる感じの Pull Request もサイコーだった。チームのエンジニアの間では「 @hsbt さんが通ったあとには草の根一本生えない」とよく言ったものだけど、こういう人がいないとフレームワークや言語のバージョンアップとかインフラ構成の大胆な変革はできないことがよくわかった。そういえば @udzura さんという人とも働いたけど、ギャグが寒いこと以外は問題ないです。

デザイナーやディレクター、サポートメンバーも良い人ばかりで、昨日は送別会を開いてもらったんだけど、こんなに良いチームを去るのは残念で仕方なかった。写真はトデガールズに対抗して森井ガールズが結集している様子です。

森井ガールズ

福岡でウェブサービスの開発やってみたいけどどこで働けばよいかわからないインターネットをこじらせたウェブプログラマーの人はペパボの門をたたいてみるとよいと思います。

で、誰?

無名のウェブプログラマーです、このような記事を書いてお目汚しをし誠に申し訳ございません。

なんで辞めんの?

「次に行く理由」があるだけで、「辞める理由」はないのです。

株式会社ドワンゴに転職します(4年3か月ぶり2度目) - Kwappa談話室

僕も同じ気持ちです。

次なにやんの?

Kaizen Platform という会社で働きます。無事試用期間を乗り切れるのでしょうか。ご期待下さい。

| @散財

5月末に家を建てて半年ほど住んで得られた知見を共有します。

2014-05 清貧会館 / Holy poverty Insutitute May, 2014

家を建てた理由

子どもが生まれた

最初は賃貸で引っ越そうとしてた

  • 子育てには車が必要だから
    • 西松屋(車でしか行けないような所にしかない)に行きたかった
    • おむつやミルク缶やベビーカーは車じゃないと運べない
  • 駐車場の安い郊外に引っ越して車買おうとしてた(当時住んでた所は駐車場代高かった)
    • 結局引越費用高くてやめた(40万くらいした)

中古マンションでも探すことにした

  • 中古マンション探すけど良いのは高かった
    中古なのに新築分譲時より高いのとかある

それなら新築マンションでよいのでは、と思った

  • しかし新築マンションは業者が好きになれなかった
    • 偉そう
    • 息がくさい
    • すぐローンの審査申し込ませようとする
    • 考える時間を与えずハンコ押させようとする
  • 買いたいタイミングでよい物件が出回ってなかった
  • マンションは管理費や修繕積立金、駐車場代が重荷になりそうだった
    ローン完済しているのに駐車場代と修繕積立金と管理費合計で毎月4万とか払うの嫌だった
  • 子どもの実家がマンションになるのが想像できなかった
    自分が田舎育ちのため

中古の一戸建て考えるようになった

  • 中古の一戸建てのリノベーションを建築家に相談したら土地買って家建てるのとかかるお金あんまり変わらないと言われた
    土地買って家を新築することにした

土地を買う際に得られた知見

土地の申し込みは同時に何人かが申し込んでいる可能性がある

  • 早くローンの申し込み・審査を済ませないと他の人に買われてしまう可能性ある

基本的に不動産屋は信用できない

  • 腹黒い

よい土地を見つけたら建物を含めた総予算を出さないといけない

  • 土地を決めてからゆっくりプランを練るとかできない
    • 土地を買うときに家全体の総予算を決めていないといけない
      土地を買うタイミングで建設会社も決めてだいたいのプランを固めておく必要がある
    • いつか家を建てたいと思っている人は、「まだ土地もないし家のこと調べるにはまだ早い」などと考えずに具体的な予定はなくても建築雑誌とか本とか読んどいた方がいい
      自分は家を建ててから中村好文さんの本を何冊か読んでとても後悔した。

土地の選び方はとても重要

  • 土地は 土地を買ったことがある人に相談 してから買うのがよい
  • どこのメーカーで建てるかよりもどこにどんな土地を買うかが重要
    • 建物は住んでるうちに価値が減っていく
    • 土地は基本的に価値が落ちない 不動産資産 = 土地の値段 (家は無価値と考えた方がよい)

よい土地の条件

  • 土地のかたち
    • 正方形か長方形がよい
    • 三角や台形はだめ
  • 土地が面している道路の道幅
    • 広い道路に面していると土地が狭くても車出し入れしやすい。道幅 6m 以上の道路(車がすれ違える)がよい
    • 道幅が広いと日当たりがよくなる
  • 道路が公道に面しているか
    • 私道にしか面していない土地は家が建てられないことがある
  • 道路に何メートル接しているか
    • 長く面しているほどよい
  • 道路と土地に段差がないか
    • 隣地よりも土地が低いと日当たりが悪くなる
  • 日当たり、方角
    • 東南角地が一番日当たりよい

中心街まで何分とか駅から徒歩何分とかばかりに目が行きがちだけど、車の出し入れのしやすさが土地の価値になる。土地のかたちがいびつだったり、道路と変な角度で接していたり、接している長さが短かったり、接している道路の道幅が狭かったりすると車の出し入れがしにくい。また面している道路は公道であることが望ましい。接している道路が 私道や持ち分共有の私道だと権利関係が複雑で揉める ことがある(揉めた)。

住宅ローンを組む際に得られた知見

地銀か都銀かネット銀行か

  • 地銀の方が申し込みや審査は早い(対面でやりとり)
  • 金利はネット銀行の方が安い(対面でやりとりできないから多分時間はかかる)
  • 都銀は地銀より金利安いけどネット銀行よりは高く、審査は地銀の方が早い

変動金利か固定金利か

  • 繰り上げ返済をじゃんじゃんするつもりの人は変動金利がよい
  • 基本的に固定金利(フラット35)は変動で組めない(銀行の審査だめだった)人向け
  • バブルのときでも金利は4%くらいだったらしいので金利が10%とかになることは(日本国債が暴落しない限り)ない
  • 変動と固定ミックスでローン組める銀行もある

持ち金全部突っ込まない

  • 住宅ローン金利は異常に安い金利で金を借りられる制度なので、手持ちの資金を極限までつぎ込むより少し多めに借りて手持ち資金を残すのが賢い

上場企業に勤めてるときに組むと審査通りやすい

  • 前勤めてたブラック企業だと収入はちゃんとあったとしても審査通らなかったかもしれない(会社が無名だから)
  • 上場企業だと金利優遇とかがあったりする
    • 東証一部上場の会社だったらさらにもっと金利優遇されたりするのかもしれない

家を建てる際に得られた知見

  • 総予算から土地の値段と引っ越し代や家具代を引いた分しか家には当てられない
  • 家の建設費と別に外構工事費がかかる
    • 家に残り予算全額つぎ込むと工事現場みたいなどろどろの土地に暮らさないといけなくなる
  • 金に余裕があるなら建築家に設計してもらうといい
    • 建築家はいろいろ考えてる
    • 例えば二階のベランダと床に段差を作らないようにするのは木造建築では難しい。建築家だと何とかしてそういうのを実現してくれる。
    • 建築家入らないと住設メーカー(リクシルとか)のカタログハウスみたいになってしまって味気ない
    • 延べ床面積はそんなに広くないけど暮らしやすい間取りみたいなのを考えてくれる
    • 依頼主がよく分かってないニーズを、依頼主の家族構成、趣味、仕事内容をヒアリングすることで引き出してくれる
    • 建築家に頼まず地場の工務店に自分たちが注文したとおりの家を建ててもらったけど何となくしっくりこない
    • 無駄に空きスペースがある
    • 要望通りになってはいるが所詮素人の要望なのでプロに考えてもらった方が良かったのかもしれない

とは言え最近の家はよい

  • 断熱性高い
    • 床暖房もソーラー温熱システムもついてないが居間のエアコン稼働すると家中暖かくなる
    • 24時間換気システム(最近の家はつけないといけないらしい)のおかげで家中の空気が循環していて一部屋だけ寒いとかがない
    • 最近の家はペアガラスがデフォルトなので窓際にいても寒くない
    • 前の賃貸マンションは窓際が寒くて死にそうだった
  • 台所が広いのがよい
    • 料理する気になる
    • でかい冷蔵庫が買える

家を建てて後悔している・心配な点

2階建ては狭い

  • 延べ床面積 100m2 とかあってもマンションの 100m2 とは違う
    • 階段部分の面積も延べ床面積に含まれる
    • ワンフロアで 100m2 あるのと 50m2 が上下に連なっているのでは感覚的な広さが全然違う

手放しづらそう

  • 給料減って住宅ローン払えなくなったときすぐ売れないかもしれない
    • 中古の木造建築はなかなか売れない
    • マンションは比較的すぐ売れる
  • 売っても高く売れないかもしれない
    • 木造建築を売るときは無価値と考える必要がある
    • マンションはそこそこ古くても場所さえよければよい値段で売れる

台風や地震や空き巣が心配

  • マンションなら台風や地震には勝てそうだし、オートロックなので空き巣も一戸建てほどは心配しなくてよさそう。一戸建ては帰省や旅行をする度心配になる
  • 修繕積立金を徴収されない代わりに何かあったら自分で捻出しないといけない

固定資産税高い

  • 想定外だった

町内会

  • 町内会費高い
    町内会費高すぎて嫁さんは町内会脱退するとか言ってる(できるのか)
  • 町内会の清掃活動とかに出ないといけない
    めんどい

家を建てて(郊外に引っ越して)よかった点

  • アホみたいに高い駐車場代払わなくてよい
    • 立体駐車場じゃなくなったので好きなときに車出せる
  • 庭があるので夏はバーベキュー出来る
    • スーパーで買った激安ブラジル産鶏肉も炭火で焼くと涙が出るくらいうまい。生きててよかったと思える。
  • 郊外に引っ越したので驚くほど静か
    • 地域の祭りとかあったりして和む
    • 近所付き合い面倒だけど野菜もらえたりもして便利
    • 常にどぶっぽい臭いしてた都会の空気吸わなくてよくなった

いつかはかっこいい家を建てたいと思ってる人には上にも書いたけど建築家の中村好文さんの本をおすすめします。

| @Mac/iPhone

面白かったので便乗して書きます。

iPod 、大学3年の頃に友達が買って見せびらかしてまわってたのが最初の出会いだった。当時は自分は Windows 使ってて Apple 周辺の事情に疎く、特に iPod を欲しいとも思わなかった。

初めて iPod を買ったのは就職活動に失敗して留年していた頃だ。家の近所をぶらついていて、確か発売されたばかりで結構品薄だったのを偶然発見し、就職活動が終わって始めた居酒屋のバイトでもらった初めての給料で買った。第四世代 iPod のモノクロのやつで、ディスクの容量は 20GB だった。

iPod を買った年の冬に精巣腫瘍になって翌年の正月に病院に行ってがんだと分かり入院・手術した。病院はおそろしく退屈で病人生活を始めた最初の頃はパソコンとか持ち込んだりしてなくて、 iPod で音楽を聴くか新聞を読むくらいしか楽しみがなかった。抗がん剤の治療をするようになってからは、点滴されながらじっと iPod で音楽聞いてた。音楽聞いて抗がん剤の吐き気とかを紛らわせようとしてた。

第四世代 iPod は Apple タイマーが正常に機能して、購入からぴったり一年後に壊れてしまった。 HDD が死んだぽかったので開腹してハードディスク入れ替えたら良さそうだったけど当時はハードディスクもそこそこ高く、海外に旅行に行く直前に(飛行機に10時間以上乗るのに無音はつらかったので)第五世代の iPod を買った。こちらは 30GB のディスク容量で、カラー液晶になっていて写真を閲覧したりもできた。

第五世代 iPod は京都で半年入院してるときに重宝した。この頃は抗がん剤の副作用で耳鳴り・高音難聴に苦しんでいたのでよく音楽を聞いた。あと当時付き合っていた女性にふられたのでコールドプレイの "Warning Sign" をエンドレスリピートしながら京都の寺社仏閣を一人でふらふらと歩いて回ったりした。退院して北海道まで青春18きっぷで行ったときもひたすら第五世代 iPod で音楽を聞いていた。

第五世代 iPod は液晶から壊れはじめた。縦方向に筋が入るようになり、最終的には筋が広がって筋の隙間からのぞき見るようにして画面を見る必要があった。iPhone 3G を買ってからは歩くときは iPhone で音楽聞くようになったので、 iPod はもっぱら車の中で音楽聞くとき専用端末になった。最後はオートバックスの駐車場でドアポケットの掃除かなんかしてるときになくしてしまったっぽくて行方不明になった。

実は最初にインターネットに接続したパソコンは弟が音楽製作用に買っていた初代 iMac のタンジェリンのやつで、パソコンの原体験は Apple にあった。大学ではレポート提出とかの都合上 Windows を使っていたけど、数年ぶりに Apple 製品に触れて再び Apple 熱が高まり、 AirMac Express を買って Air Tunes で音楽聞くようになった。

iPod が画期的だったのは、 iTunes のライブラリと iPod を同期して使うところだった。それまでの MD や既存の mp3 プレーヤーは、プレーヤーに入れたい曲を選択してプレーヤーに移す、という作業が必要だった。昔の iPod の CM に、家の Mac で聞いていた音楽の続きを出かけるときに iPod で聞く、というやつがあったけど、そういう発想は他のプレーヤーにはなかったと思う。最初は馴染めなかったけど、曲のレートや再生回数が iPod と iTunes で同期される便利さに慣れると、 iPod 大勝利だなと思うようになった。2ちゃんねるで SONY のプレーヤーの悪口を吹聴して回るほどだった。

しばらく Apple 製品使ってないうちに OS X が出ていることを知り、 OS X の GUI の美しさにびっくりした。当時の Windows XP のフォントはアンチエイリアスがきいておらずシャギーだった。 OS X といい、 iPod - iTunes といい、 Mac/Apple の方が Windows/Microsft よりもだいぶ進んでいるなと感じた。 Windows に無理矢理 Osaka フォント入れたりして Mac 化したりしてた。次パソコン買うなら絶対 Mac だなと思うようになっていた。

大学卒業して入院しているときには病院があまりにも暇でノートパソコンが欲しくなったので、 DELL の安いノートとかにしたらと母親に言われたものの、どうしても Mac がいいとだだをこねて PowerBook G4 の 17 インチのやつを買ってもらった。これを使って病院でブログ書いたりしてた。ブログいじりが楽しくて PHP とか少し触るようになり( Mac は簡単にウェブサーバーを立てることができるので病院とかでも PHP のコードいじったりするのに向いてた)、結果的に Web の仕事がしたいと思うようになって今日に至っているような気がするので、 iPod 買ってなかったら Mac を欲しいとも思わなくてプログラミングをやり始めることもなく、何の能力を身につけることもないまま今も親のすねをかじってニートをしていたかもしれない。

| @技術/プログラミング

公開している Lokka の DB (MySQL) のデータを、手もとの Lokka の DB (SQLite) に取り込むときに毎回やり方を忘れるので書いておきます。

今回は MySQL to Sqlite converter という gist のコメント欄に書いてある以下の方法を試した。

sudo gem install sequel
sudo gem install sqlite3
sudo gem install mysql
rbenv rehash
sequel mysql://user:password@host/database -C sqlite://db.sqlite

これでデータを MySQL から SQLite に変換できた。Lokka をローカルで起動してアクセスしてみるが記事が表示されない。DB の中にはちゃんとデータが入ってるし、管理画面から記事一覧を表示するとちゃんと記事が表示される。どうも Post.published[] を返すみたい。

手でクエリを投げてみると

sqlite> select * from entries order by created_at desc limit 1;
             id = 960
        user_id = 1
    category_id = 5
           slug = eye-pro-is-shit
          title = Eye-Fi Pro を買ったけどクソだった
           body = [hitode909さんの日記](http://hitode909.hatenablog.com/entry/2013/05/24/093749 "hitode909の日記")...
           type = Post
          draft = 0
     created_at = 2013-10-06 07:28:00.000000
     updated_at = 2013-10-06 13:11:23.000000
frozen_tag_list =
         markup = redcarpet

draft = 0 なので表示されそうなもんなんだけど、よくよく調べてみると SQLite には Boolean 型がなくて、DataMapper は SQLite に Boolean 型のデータを保存するときは t/f の文字列で保存するみたい。これは盲点だった。

結局 draft = 0draft = 'f' に変えてあげればすべての記事を表示できるようになった。

| @雑談

d4990c64f75ca38b6b416a9037adfed5.png (802×562)

Ruby 関連のことを検索していて Shopify の中の人のブログにたどり着いた。なかなか面白いことが書いてあった。

この人は去年の 11 月に iPhone 4 を落として割ってしまったらしい。すぐに iPhone 5 を買おうとしたのだけど、思いとどまって一月ほど iPhone なしで過ごすことにしたそう。自分がどのくらい iPhone に依存してるのか知りたかったのだとか。そしたら意外と良かったらしい。以下超訳。

iPhone があった頃は常に Facebook、Twitter、Email、iMessage、携帯、HipChat、Skype や対面での会話と心が安まらなかった。プッシュ通知を切ったとしても空き時間にメールチェックしたり Twitter や Facebook を見てしまう。常にオンライン状態で、どこにいてもどこにもいないような感じがつらかった。iPhone がなくなったらコンピューターの前にいるとき以外は目の前の友達や同僚のことだけ気にしていればいい。スマートフォンは作業と作業の合間の、さっきまでやっていたことと次にやるべきことについてに省みるべき時間を、ぼーっとゲームをしたり Twitter を見るような用途に費やす手助けをしていることに気がついた。スマートフォンがなくなってからアングリーバードやったり、Facebook を見たりして無為に時間を過ごすことがなくなり、やるべきことに集中できるようになった。

スマートフォンをやめて Nokia レンガ(昔ながらの携帯)で過ごすにあたって、心配してたのが以下の三点だった。

カメラがない

旅行するときはいつも iPhone で写真をとっていたけど、カメラは人に借りれば良いかも知れない。ひょっとするとなくても事足りるのかも知れない。

音楽がない

歩くときは気分を紛らわせるために音楽を聞いていた。しかし本当に音楽を聞きたいときはパソコンの前に座れば良いことに気がついた。音楽なしで歩いてもしんどくないし、周囲の物事に心を巡らせる良い機会になった。

地図がない

iPhone の Map は多用していたけど、方向感覚に自信があったのでどこかに行くときに地図を見るのをやめてみた。そうすると出発前に入念に準備が必要になった。外国に行くときは紙の地図を使った。また本当に迷ったときは人に道を聞けば良いし、尋ね先の人に電話して道を尋ねれば良い。

3ヶ月ほどスマートフォンなしで過ごしてみて、期待していなかった以下のメリットに気がついた。

よく人に電話するようになった

iPhone の頃はメールを多用していてほとんど電話をかけていなかったけど、古い Nokia の携帯だとメールを打つのがつらくてしょっちゅう電話をかけるようになった。同世代の人に電話をかけるとびっくりされる(みんなメールしか使わないから)。携帯の根本機能と会話の楽しさを再発見した。電話した方が話が早く済みそうな場合や深い話の時はメールではなく電話しか使わないようにしている。

携帯の存在を気にしなくなった

鞄の中に適当に携帯を突っ込んで出かけるようになった。ポケットに何も入ってなくて気楽になった。眠る前に携帯がどこにあるか探さなくていいし、安い携帯だからキズが入らないように気を付ける必要もない。心配事が減るのはいいことだ。

上に挙げた懸念事項は正しかったが、それなしでもやっていける

確かに色々不便だがなくてもやっていけることに気がついたし、スマートフォンを持たないことによって得られるメリットがあることもわかった。

“携帯を二週間に一度しか充電しなくて良いのは気が楽” というあたりはなるほどなぁと思った。寝るとき、出かけるときに iPhone を探さなくて良いのも羨ましい。随分楽だと思う。

自分もスマートフォンを使うようになってから Twitter 中毒が重症化し、移動中に本を読むということがまったく出来なくなった。iPad ではなく Kindle がいいと思ったのもネットを見る機能が付いてなくて読書に集中できそうだから。しかし結局手元に iPhone があると Twitter を見てしまう。この人みたいに思い切って落として割ってしまうのが良いのかも知れない。

| @技術/プログラミング

一月くらい前から Lokka の master ブランチを自分のブログ用のブランチに merge してサイトをデプロイすると謎の白画面が出るようになっていて困っていた。現象は極めて謎で、ローカルの開発環境(RACK_ENV='development')では見られず、本番(RACK_ENV='production')だけで発生した。HTTP ステータスコードは 1054 が返ってきたりする。なんか変な gem でも入れてしまったかなと休みの日に動作検証したりしていたんだけどついぞ分からなかった。

SQL 弱者なので気がついてなかったんだけど、2月15日の commit で Site モデルに新しいフィールドが追加されていた(Add default markup in admin/site/edit · 2243dc5 · lokka/lokka ※この機能便利すね)。なので bundle exec rake db:migrate しないといけなかったわけだった。ローカルで動いている開発環境(データベースは SQLite)では Migration なんて行ってないんだけどエラーは出なかった。本番は MySQL で動いていて、こちらでだけエラーが出るようだった。

しかしいざ migrate しようとすると失敗する。

bundle exec rake db:migrate
Upgrading Database...
rake aborted!
Invalid default value for 'updated_at'

のようなエラーが出る。updated_at のデフォルト値がおかしいらしい。このときのテーブルの構造を見てみると以下のような感じだった。

mysql> desc entries;
+-----------------+--------------+------+-----+---------------------+-----------------------------+
| Field           | Type         | Null | Key | Default             | Extra                       |
+-----------------+--------------+------+-----+---------------------+-----------------------------+
| id              | int(11)      | NO   | PRI | NULL                | auto_increment              |
| user_id         | int(11)      | YES  |     | NULL                |                             |
| category_id     | int(11)      | YES  |     | NULL                |                             |
| slug            | varchar(255) | YES  |     | NULL                |                             |
| title           | varchar(255) | YES  |     | NULL                |                             |
| body            | text         | YES  |     | NULL                |                             |
| type            | text         | NO   |     | NULL                |                             |
| draft           | tinyint(1)   | YES  |     | 0                   |                             |
| created_at      | timestamp    | NO   |     | 0000-00-00 00:00:00 |                             |
| updated_at      | timestamp    | NO   |     | CURRENT_TIMESTAMP   | on update CURRENT_TIMESTAMP |
| frozen_tag_list | text         | YES  |     | NULL                |                             |
| markup          | varchar(255) | YES  |     | NULL                |                             |
+-----------------+--------------+------+-----+---------------------+-----------------------------+

調べてみたところ MySQL の Mode が NO_ZERO_DATE になっている場合、MySQL は timestamp 型のフィールドのデフォルト値に 0000-00-00 00:00:00 みたいな値を設定することを許さないらしい。 mysql - Invalid default value for 'create_date' timestamp field - Stack Overflow

検証用に別にテーブルを用意して bundle exec rake db:setup してみたところ、以下のような構造のテーブルができた。

mysql> desc entries;
+-----------------+------------------+------+-----+---------+----------------+
| Field           | Type             | Null | Key | Default | Extra          |
+-----------------+------------------+------+-----+---------+----------------+
| id              | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| user_id         | int(11)          | YES  |     | NULL    |                |
| category_id     | int(11)          | YES  |     | NULL    |                |
| slug            | varchar(255)     | YES  |     | NULL    |                |
| title           | varchar(255)     | YES  |     | NULL    |                |
| body            | text             | YES  |     | NULL    |                |
| markup          | varchar(255)     | YES  |     | NULL    |                |
| type            | varchar(50)      | NO   |     | NULL    |                |
| draft           | tinyint(1)       | YES  |     | 0       |                |
| created_at      | datetime         | YES  |     | NULL    |                |
| updated_at      | datetime         | YES  |     | NULL    |                |
| frozen_tag_list | text             | YES  |     | NULL    |                |
+-----------------+------------------+------+-----+---------+----------------+

created_atupdated_atdatetime 型になるらしい。なので以下のような ALTER 文を実行した。

mysql> alter table entries modify column created_at datetime, modify column updated_at datetime;
mysql> desc entries;
+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| user_id         | int(11)      | YES  |     | NULL    |                |
| category_id     | int(11)      | YES  |     | NULL    |                |
| slug            | varchar(255) | YES  |     | NULL    |                |
| title           | varchar(255) | YES  |     | NULL    |                |
| body            | text         | YES  |     | NULL    |                |
| type            | text         | NO   |     | NULL    |                |
| draft           | tinyint(1)   | YES  |     | 0       |                |
| created_at      | datetime     | YES  |     | NULL    |                |
| updated_at      | datetime     | YES  |     | NULL    |                |
| frozen_tag_list | text         | YES  |     | NULL    |                |
| markup          | varchar(255) | YES  |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+

これで最新のコードをデプロイしても真っ白画面になることはなくなった。以前遭遇した更新時に created_at の値が更新されてしまう問題 もフィールドの型が timestamp だったのが原因なのだと思う。SQLite から MySQL への移行は一筋縄では行かないことが分かった。

DataMapper はソースコード内の記述内容から動的に Migration を行えるけど、ActiveRecord みたいに $APP_ROOT/db/ ディレクトリに Migration ファイルを作ってくれたりしないので DB スキーマの変更が必要なことに気がつきにくい。便利だけど不便な感じがする。Rails で $APP_ROOT/db/ 以下にアホみたいにファイルが出来ていくの嫌だと思っていたけど、スキーマ変更に気がつかずコードをデプロイしてウェブアプリケーション停止みたいな自体は防げると思った。

ブログ書こうと思ってパソコン開いて「ついでに最新版の変更を取り込むか」とかやるとデプロイできなくなったりして書きたかった記事が書けず残念な感じになる。はてなブログでブログ書いてて画面が真っ白になったらひとでくんさんに不具合報告して直してもらえば良いので楽だと思う。