読者です 読者をやめる 読者になる 読者になる

ゆーすけべー日記

はてなBlogってどーなの!?

栄和堂を開店して2ヶ月が経った件

弟が店長、親父がカフェマスターを務めるカフェ&バーである「ブックスペース栄和堂」が開店して2ヶ月が経った。運営するのは僕が代表、そして彼ら2人も所属する株式会社ワディットである。

f:id:kamawada:20151127114031j:plain

僕は現状の仕事がある、そして「物理的に遠い」という理由から、顧問やアドバイザーというような立場でこの栄和堂のプロジェクトに参加している。今日は「定休日」なのでその時間を利用して新メニューの試食会やら弟の「淳也」による2ヶ月のデータ分析結果などを共有した。

f:id:kamawada:20160120143503j:plain

栄和堂は去年2015年の11月16日に、ワディット及び僕らの実家の近くにある鎌倉湘南深沢」にオープンした。そもそもITやWebを専門分野とするワディットがカフェもしくはバーを開店するには「入り組んだ」理由=ワケがある。そのワケがあるからこそ僕らの思い入れは強く、続けていきたい根源となっている。

実は栄和堂は元々「本屋」だった。店主は親父の弟さん、つまり僕の叔父である。いわゆる「街の本屋」で僕も幼少期の頃、栄和堂に行って、文具をあさったり、本棚の匂いを嗅いだり、叔父さんからタミヤの模型をもらったりして喜んだのを、すごく懐かしく覚えている。

f:id:kamawada:20160120181949j:plain

そんな栄和堂を営む叔父が一昨年の3月、急死した。あまりにも突然だったので正直びっくりした。人が世界からいなくなるという体験は不思議だ。

さて悲しい話は置いといて、問題は栄和堂だ。彼が20代の頃から40年以上営業しつづけた書店「栄和堂」をどうするか?結論を簡単に言えば、一旦閉店させた。親戚の中でも比較的動けた親父が踏ん張り、閉店セールをやったり業者を呼んだりして、在庫を一掃した。土地は亡くなった叔父の奥さんである叔母さんのものになったが、買い手がつかない。

そこで「どうせなら」ワディットが借りて何かやろうじゃないか?という話になったのだ。

f:id:kamawada:20150703190552j:plain

当初父親と二人だったワディット社員の僕らは色々考えたが「自らのアイデアに責任が持てない」という状況。そこへ、脱サラした淳也がワディットに参画。淳也は幼少時から持ち合わせている器用さを発揮し(そう、俺は永遠にマリオカートで淳也に勝てない)彼が店長になって栄和堂の場所を有効活用しようと動き出す。3人で話しながら、我々の目指すところは

本屋の再発明

であると定義した。ではどのように再発明するか?を今現在試しているところで、今日の会議で淳也はそれを

本棚を介して人がつながれる場所を提供すること

だと言う。ただ、このような目標を立てつつ、カフェやバーで収益を上げるというモデルは現時点で成功しているとは判断しにくい。正直、工事日数と、なによりもお金がかかっている。

f:id:kamawada:20151028172052j:plain

開店の直後、淳也と親父は当初の売上目標との乖離にウズウズしている感はあった。実際、経営的視点で見ると、結構厳しい。とはいえ、客として訪問してみるとヒイキはあるかもしれないが満足度は高い。そんな中、淳也は詳細にデータを取っていることが今日の打合せで分かった。顧客データを独自の方法で細かく取っている。さらにはとある日にちを決めて、栄和堂の前をどれだけの人が通りかかったか?をカウントして期待しうるトラフィックを測っている。

実営業日で数えるとたった「40日」分のデータなので正確性にまだかけるが続けると指標が立ちやすいだろう。例えば、同じくらい行き来がある、場所の近いカフェで「うまくやってる」ところを見つければ参考になる。

f:id:kamawada:20150703192022j:plain

また、彼は、打ち出した「ブックスペース」というネーミングと実際のニーズとの距離感にも違和感を感じている。これは僕自身も事前に気づきにくかったが、Webなどネットの媒体では尖ったコンセプトが通じるが、リアル店舗の場合、より具体的に安直な表現を使った方が、お客さん=ユーザーに「ここで何が出来るのか?」が分かりやすくなって良い。妥協案かもしれないが、それに気づいた瞬間に、ウィンドウディスプレイに「カフェ&バー」の表記をつけたようだ。

やりたいこと、やらなくてはいけないことがたくさんある

と淳也は言っている。決して焦る必要は無いが、やることがたくさんあることはいいことだと思うので、親父共々頑張ってもらいたい。

f:id:kamawada:20150628115924j:plain

強引にまとめると...

栄和堂というカフェ&バーを僕の弟と親父が「鎌倉の外れで」やっているのでよかったら来てね♪

ということでした。よろしく!

eiwado.space

Golangを初めて本番投入したぜ!

Golang

先日「ボケて」サービス群の中でも「スタンプ」という機能を提供するアプリサーバがGo実装になりました。これが僕にとってほぼ初めての「Golang実戦投入」となります。Goの良さについては去年の10月に僕がやっているPodcast「wada.fm」でも言及していました。ただ、単純に良いからと言って、本番への導入となると既にユーザーを抱えているので、敷居が高いと感じます。そこで、工夫しつつ、じっくりと試して、現在に至りました。後述するようにハマりどころはありましたが、そのGoサーバは安定稼働していて、ユーザーへコンテンツを配信しています。そこで今回は新規にGoを導入する際の一つの事例として、今回、僕がやったボケてのスタンプサーバリプレースの経緯を紹介します。

LL言語への「若干の」不満

まず...

そもそもなんでGolangが必要なの?

ってところ。ボケてのアプリケーションはほぼ全てが以前からPerlで書かれていて、キレイに本番で不具合も無く動いてくれていました。Plack/PSGIが登場してもはや久しく、アプリケーションサーバが安定し、またApp::cpanminus/Cartonといったモジュールインストーラやライブラリ管理も賢くやってくれます。ただ、これはLL全般に言えることなんですが、型が無いんですよね。

型がないってことは、サクッと書くときにはいいけど、堅牢にやりたい時に手間がかかります。 例えばPerlにはData::Validatorというライブラリがあるので、それを使ってメソッドへの引数のタイプチェックなどを追加で実装していました。例えばボケて内のlib/Bokete/Model/Boke.pmには以下のようなコードが記載されています。

sub create {
    state $rule = Data::Validator->new(
        text => 'Str',
        odai_id => 'Str',
        user_id => 'Str',
        category => { isa => 'Maybe[Str]', default => undef },
        tags => { isa => 'ArrayRef', default => sub { [] } }
    )->with('Method');
    my ($self, $args) = $rule->validate(@_);

実装レベルでコードの中に出てくる「データ」もしくは「機能」それぞれに対して厳密にチェックしておきたい場合に、LLだと外部のライブラリを使う手間が生じたり、それが完璧に行われないケースがあるのです。逆に言えばそれがLLのいいところですが、使いドコロによってはより「strictに」やりたいアプリケーションもあるかと思うのです。

また、Perlは素晴らしく書きやすい言語だと思ってはいますが、他の違う言語も習得しておくと後々武器になって、楽しいんじゃないかなーって感じ、Goに手を出したという経緯になります。

Goの魅力

Golangを触ってみて良いなーって感じたことは前述した通り、wada.fmで話しております。興味のある方は聴いて下さい!

www.wada.fm

ただ簡単に列挙するならば...

  • 静的型付け言語だけどスクリプトっぽくかけてとっつきやすい
  • 構造体にメソッド生やして「クラスのようなもの」を実現するとか「素朴」で良い
  • コードを簡潔にするという方針などが現れた「ツンデレ」なコンパイラ
  • goroutine便利だし使いドコロが結構ある
  • Webサーバで負荷テストした時にCPUリソースをキッチリ使いきってくれて消費メモリも既存アプリと比べて少ない
  • 言語仕様的にもミニマムで「組み合わせでなんとかする」って点がPerlっぽい
  • 優良なライブラリもどんどん出てる

などなど、でしょうかね。とにかく触ってみて、スッとコードを書き始めることが出来たのがよかったです。

Goをスクリプト的に利用する

実は今回紹介するスタンプサーバ以前にボケてではGoを使っていました。ただプロダクトとしていつも動くサーバやバッチ、という形では無く、書捨ての「スクリプトっぽい」コードを利用してたのです。

例えばRDBMSのとあるテーブルの構造を変えて、データ移行したい場合においてです。なんでGolangをそこで使うのか?というとgoroutineがあるからです。Goだとgoというキーワードだけで並行処理が走り、かつデータベース接続もロックせずよしなにやってくれるので、MySQLサーバの負荷の様子を見ながら並行数を調整することで「ある程度の負荷をかけながら」素早くデータ移行が出来て便利でした。以下のようにsync.WaitGroupでそのgoroutineで平行に走らせる処理数を調整しています。

for ;; {
  var results []Entry
  err = db.Select(&results, db.Where("column1".IsNull()), db.Limit(limit));
  if err != nil {
    panic(err)
  }
  if len(results) == 0 {
    break
  }
  var wg sync.WaitGroup
  for _, e := range(results) {
    wg.Add(1)
    go func(entry Entry) {
      work(entry)
      wg.Done()
    }(e)
  }
  wg.Wait()
}

このように最初はスクリプト的にGoを使ってみて感触を掴んでみました。

どこからGolang化していくか?

さて、Goのパフォーマンス性能を活かせて、かつ、現行で走っているサービスに影響がなければ、Golang化したいところ。ただ、移行のコストとかも考えると全てをGoにするのは大変だし、Perlの方が得意なところもあるのでその辺は見極めなくてはいけません。ボケてではMicroservicesという言葉が流行る以前から、ある程度サービスをHTTPレイヤーで切ったコンポーネント化を進めておりました。そこで、大きな部分を一気に変更する、のではなく、小さな一部分だけを違う実装に変えるということが容易です。そこで、目をつけたのがスタンプサーバです。

ボケてではボケのコンテンツを画像として保存したりLINEで送る機能があります。「スタンプ」と呼んでいるのはまさに「LINEスタンプ」からインスプレーションを受けています。ようはボケの対象となるお題画像とその他ボケのテキストなどをコアロジックのWeb APIサーバから引っ張り、画像生成して、配信する機能が実装されています。試しに新しいGolang実装のサーバから配信されているスタンプ画像を直で貼り付けてみるとこのような画像です。

http://stamp.bokete.jp/1916834.png

このサービスはボケてのアプリの中でも「フロントエンドの1機能」としてPerlでつくられていましたが、ホストも違うし動かすサーバも違う。また、データはWeb APIから取得してくればOK!と、切り離しやすい箇所だったので、

まさにここからGolang化を試してみよう

となりました。

スニペットを集める

と言っても、いきなり画像処理や文字列の改行計算を含んだ「ひとつの」アプリケーションを書き始めるのはニュービーにとって漠然としすぎてて、ムリゲです。なので、スタンプサーバの実装要件をピックアップし、それごとに小さなGoコードの塊=コードスニペットをたくさん書いていきました。スニペットが集まっているレポジトリから選んでみると...

  • ローカルの画像をリサイズして書き出す
  • HTTP上の画像を取得して書き出す
  • ローカルの画像をWebで配信する
  • テキストを描画して画像として書き出す
  • 改行を含んだテキストを処理する
  • 日本語を含んだ文字列改行の禁則処理をする

などです。おそらく一番に書いたコードはこんなものでした。リサイズ処理にgithub.com/disintegration/imagingを使っています。

package main

import (
    "image"
    "github.com/disintegration/imaging"
    "fmt"
    "os"
)

func main() {
    args := os.Args
    if len(args) < 2 {
        panic("The argument is required.")
    }
    filename := args[len(args)-1]
    fmt.Println("Input filename is:", filename)
    orgImg, err := imaging.Open(filename)
    if err != nil {
        panic(err)
    }
    dstImg := resize(orgImg, 600, 0)
    err = imaging.Save(dstImg, "output.jpg")
    if err != nil {
        panic(err)
    }
    fmt.Println("Resize as output.jpg.")
}

func resize(img image.Image, width int, height int) image.Image {
    dstImg := imaging.Resize(img, width, height, imaging.Lanczos)
    return dstImg.SubImage(dstImg.Rect)
}

このようにスニペットを充実させていく作業をすると

お、これは本番用のアプリも実装出来そうだぞ!

と自信がついてきます。

画像生成サーバの実装と運用

そこでいよいよスタンプサーバの実装です。既に処理部分のスニペットがあるので、いかに個別のファイルにまとめてテストを書いて構造化するか?を考えればすんなりといけました。こんなファイル群でstamp_serverコマンドをつくっています。

$ pwd
/Users/yusuke/go/src/github.com/bokete/webstamp
$ tree ./
./
├── README.md
├── assets
│   ├── font-heavy.ttf
│   ├── font-medium.ttf
│   ├── stamp_404.png
│   ├── stamp_footer.png
│   ├── stamp_header.png
│   ├── stamp_panel.png
│   └── transparent.png
├── assets.go
├── client.go
├── client_test.go
├── cmd
│   └── stamp_server
│       └── main.go
├── stamp.go
├── stamp_test.go
├── util.go
└── util_test.go

デプロイはあまりベストプラクティスが共有されてない?っぽいので、少々悩みましたが、今まで通りAnsibleで以下の工程を自動化しています。

  • 要らないと思うけど「とりま」nginxをフロントに置く
  • スーパーデーモンにはdaemontoolsを使用
  • lestrratさん作のgo-server-starterをベースにホットデプロイを実現する
  • 上記ライブラリのlistenerをアプリ側に実装しておく
  • Perlアプリの時と同じくserver_starter(Go実装)を利用してアプリを立ち上げる
  • アプリをアップデートする際はサーバ側のGOROOT内でgit pullさせて次にgo getしてbin以下にコマンドを生成
  • 予め仕込んであるdaemontoolsディレクトリを$ svc -h /service/stamp_serverとしてgraceful restart

現状のコードだとgraceful shutdownにはうまく対応出来てない疑惑がありますが、画像配信サーバーですし、間に短いTTLを仕込んだCDNを挟んでますし、なんとかなります。

ハマりどころ

一番最初、デプロイしてしばらくたつと、

あれ〜、やけに詰まるな〜 Goだとパフォーマンス悪くなるのかな〜?

なんて自体に陥りましたが、これは別段Golangのせいでは無く、僕が書いていた禁則処理のロジックで稀に無限ループをつくってしまうバグが潜んでいただけでした。「あるある〜!」そう言語が悪いんじゃないんです、自分が悪かったのです。

と、まぁそこが大きな躓きポイントなだけであとは十分パフォーマンス出てますし、不具合もなく快適なアプリになりました!

まとめ

ボケてにおいてスタンプサーバをGo実装で書き直して、Go本番童貞を捨てた話を書きました。本番化しないと分からないことも結構あったので、やってよかったと思います。Perlと比べると言語の性質的に煩雑になるケースもありますが、コンパイルされる時点で「不本意なことを弾いてくれる」というのは強みであるし、単にGolangが気に入ったので、他のコンポーネントもジャッジ次第でGoで書いていきたいですね!

Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発

改訂2版 基礎からわかる Go言語

改訂2版 基礎からわかる Go言語

Rebuildメソッド Early 2016

Podcast

いつの間にかmiyagawaさんとの間でRebuildメソッドという言葉が産まれたのでその紹介。これは決してRebuildを聴いている人向けの話じゃなくって、彼や僕みたいにPodcastをやる側の人向けのメソッドなんだけど!

以下の記事にあるように、PCやラップトップが無いような環境など状況によって、miyagawaさんは「Zoom H5」といういっかついハンディレコーダーを使っている。

Rebuildミートアップっていうオフ会みたいなイベントでの公開収録の時に実物を見て

なるほど!こうやって使うんだ。ゴツくてカッコいい!

って思った数日後には手元にその「Zoom H5」を入手してしまい、Rebuildメソッドを実践することになった次第。

f:id:kamawada:20160114092413j:plain

Rebuildメソッドを語るには「Zoom H5」の据え付けのマイクをそのまま使うのは、なんかソレ(Rebuildメソッド)っぽく無くって、H5に付いているXLR端子に外部マイクを繋ぐのがよりソレ(Rebuildメソッド)っぽい...感じがするw

だんごゆっけの平和な話を収録する時、そのように外部マイクを2本繋げてその様子をシェアしたら、miyagawaさんとこんなやりとりがあって「Rebuildメソッド」なるワードが誕生した経緯。

www.instagram.com

ちなみにwada.fmでも最近ではこんな機材構成(外部マイク+iPadからのポン出し音を外部入力)でやってるので「Rebuidメソッドの応用」。

f:id:kamawada:20151229160754j:plain

また、こうしたH5を含む機材はオフライン用の要素が強いので持ち運びをするわけだけど、その際に「amazon basics」のポーチに入れるとよりRebuildメソッド(miyagawaさんも同じポーチ使ってるっぽいからw)。

f:id:kamawada:20151229190554j:plain

最後にもう一つ。Zoom H5は取り回しを優先する際、単3電池2本で稼働させるが、それでなくっても、USBポートからの電源供給が出来る。よってAnkerとかのポータブルバッテリーを継いじゃえば電池ナシでかつ「かなり持つ」ように電源供給出来る。これもRebuildメソッドらしいw

www.instagram.com


ってことでRebuildのようにステキなPodcastを目指したい場合に、Rebuildメソッドってのがあるってことを知っておくといいと思いました。そして他にもRebuildメソッドがあるはずなので積極的に発掘?していきたいです!

ZOOM ズーム リニアPCM/ICハンディレコーダー  H5

ZOOM ズーム リニアPCM/ICハンディレコーダー H5

初めてのイギリスなう

f:id:kamawada:20160102221257j:plain

大晦日から年明け、そして今もロンドンにいる。嫁が見つけてきたHISの格安ツアーで初めてのイギリスに訪れた。

イギリスと言えば僕の若かれし頃、その自分の労力の多くを費やしたサッカー、そしてビートルズを発端とするUKロックが産まれた場所である。以前からそこがどんなところか?が気になっていた。この偉大な文化がなぜ産まれたのか?少しでもこの目で確かめたかった。


f:id:kamawada:20151231143124j:plain

ヒースロー空港に着くとSIMカードの自販機でEEというプロバイダのプリペイドSIMを30ポンドで購入。日本では先日から「IIJmio+SIMフリーiPhone6s」でモバイルを運用していたので、そのままiPhoneに挿してネットが使える。便利な世の中だ〜と思ったものの、dmm.co.jpを始めとしてエロサイトはロックがかかっていて見れない... なんてこった!クレジットカードで年齢認証すればイケるっぽいが日本のクレカだからか不可能、塞がれている。

f:id:kamawada:20160101010940j:plain

年明けの瞬間はホテルよりももっと都市部のところで花火が上がったりするらしいが、12時間のフライトで疲れていたんで、日本食のデリを購入し、日本から持ってきた「どん兵衛」で年越しそばと共に過ごす。「マズい」と誰もが言っていたイギリスの飯はとりあえず食わない。

f:id:kamawada:20160101035222j:plain

翌日の日本で言う「元旦」2016年1月1日からはロンドン観光。イギリスの日の出は8時頃と遅い。朝焼けの様子。

f:id:kamawada:20160101172912j:plain

初詣。というわけではないがウェストミンスター「寺院」に行く。ダーウィンやニュートンが収められているらしく、偉大な彼らの名前が掘られた「石」の上をズカズカと歩いて行く感じが面白かった。

f:id:kamawada:20160101184512j:plain

昼飯にいよいよ「フィッシュ・アンド・チップス」を食べる。日本でもダイニングバーみたいなところでオシャレに食べることが出来るが、本場のそれはすげータンパク。魚はデカく、ポテトは重い。それぞれカリカリして美味しいとは思うんだけど、だけど、だけども... 「下味」とかそういう概念は無いのだろうか。

f:id:kamawada:20160101212104j:plain

大通りではニューイヤーのパレードをやっていた。デカい「高円寺の阿波おどり」という感じ。なんとなく街の様子を見ると「上品な」印象を受ける。

f:id:kamawada:20160101221837j:plain

ところで、分かってはいたが、イギリスはとにかく天気が悪い。晴れ間なんて拝めない。雨が降ったりやんだり。これが日常だと考えると鬱屈とする

f:id:kamawada:20160102185318j:plain

ついでに物価の話をすると「日本と比べる」という前提ではあるが、たけ〜。コンビニ的な商店で「なるべく安く」買った500mlのペットボトル「コカ・コーラ」が1.25ポンドだった。今のレートだと「1ポンド=175円」である。またデパートに入ってた無印良品を覗くと日本の商品がそのまま陳列されていて、税込み800円の商品で「7.95ポンド」とのこと。

f:id:kamawada:20160103120704j:plain

観光地で一番興味を引いたのは「The Wallace Collection」という博物館。Wallenceさんという方の私物の美術品や骨董品が大量に展示されている。入場料は無料で物価が高いロンドンでは嬉しい。

f:id:kamawada:20160103131349j:plain

注目すべきは昔の騎士達のがたくさん展示されていること。個人でこれ所有しているってマジでWallenceさんは変態だと思う。エキシビションで、鎧の内側に着る「鎖のカブト」があったので被ってみた。重い...

f:id:kamawada:20160103145531j:plain

ロンドンで一番見てみたかった景色がSOHOという場所にある。高校生の時に友達からCDを借りてハマったUKロックの巨匠Oasis。そのアルバム「(What's The Story?) Morning Glory」のジャケットで使われている写真の場所がここ。まさにここ。なんか感動。

f:id:kamawada:20160102221421j:plain

ってことで、本日丸一日また観光で過ごしてから明日、日本への帰路へたつ。まぁなんとなく僕の好きなサッカーとロックが産まれた理由が分かった気がしないでもない。決して、天気が悪いから、飯がタンパクだから、物価が高いから「面白くない」わけではなく、非常に楽しい旅行になりつつあってよかった!

(What's The Story) Morning Glory?

(What's The Story) Morning Glory?


www.wada.fm

ひとり「iPad mini Advent Calendar 2015」コンプ版

この記事はiPad miniの活用法をAdvent Calendarっぽく「25個」紹介するというものです。

と言っても一般的に言われてるような使われ方というよりか「僕なり」のわりとハードボイルドな?Tipsになるかもしれません。その結果「iPad miniを使いこなしているつもりが周辺機器を揃えているうちにiPad破産する」可能性があるので気をつけて下さい。ではいってみましょう!

1. iPad mini 4はちょうどいいタブレット

f:id:kamawada:20151220093247j:plain

僕が持っているiPad miniは「iPad mini 4」の...

  • スペースグレイ
  • 容量は64GB
  • WiFi+Cellularモデル

です。正直こんだけ使うなら128GBにしておけば良かったなんて後悔しつつありますが、現状満足しております。iPad miniは「1」と「2」からのユーザーでTouchIDと呼ばれる指紋認証に対応する今回のiPad mini 4は既に完成された域に達している感があります。またこのCellularモデルはSIMフリーと呼ばれる端末ですので普段は「IIJmio」のSIMを挿しています。

f:id:kamawada:20151220093311j:plain

CellularモデルとWiFiオンリーの端末では微妙に見た目が違い、Cellularの場合背面の上部に黒い帯が入ることになります。

f:id:kamawada:20151220094431j:plain

ちなみに、今回の記事でiPad mini等のブツ撮りで使っているカメラは、つい最近Amazonで安くなっていたから購入したFUJIFILMのX-M1という筐体です。ブツ撮りにしては暗いですが、パンケーキの35mm換算で41mm、XF27mmというレンズを付けて撮影して、JPEG撮って出し多くの写真は加工無しでお届けします。早速散財ですね。

iPad miniは軽いし、サイズが持ち運びを考慮すると、普段使いにはちょうどいいっす。A5サイズのRHODIAのノートと比べるとこんな感じ。

f:id:kamawada:20151220095308j:plain

Android端末も実験的に使いはしますが、基本Mac、iPhoneを利用しているのでiPadはそれらとの相性の良さもありますね。

ロディア No.16 横罫 オレンジ

ロディア No.16 横罫 オレンジ

2. iOSとOSXの違いを理解する

iPadは「mini」に限らず、最近では「Pro」でもiOSが採用されています。いわゆるMac OSでは無いので、MacBookなどのモバイルブックとは出来ることが異なります。例えば僕の場合、普段の仕事では、Mac OSのOSXを使いTerminalからシェルをいじりコマンドラインベースの開発を行います。しかし、iPadなどのiOSではローカルでの開発はほぼ出来ないと考えていいでしょう。iOSでは大抵のことがアプリという概念に隠蔽され、アプリでもやれることが限られているため、比較的OSXよりもやれることが少ないと言えるかもしれません。ただ、逆に言えば「使い方に特化した」アプリがたくさん出ているので逆手に取れば

iOSの方が楽チン便利やん〜

ってケースもありますね。また、例えば同一LAN内に置かれたスピーカーに音を飛ばして流すAirPlayの対応に関してはiOSの方が優れているといえるでしょう。YouTubeの音声をAirPlayで飛ばすにはiOSの方が楽チンです。

f:id:kamawada:20151220100620j:plain

このようにiOSとOSXの違いを理解しつつiOSの利点を活用するとiPad miniも活きてくるでしょう。

3. 気軽に持ち歩く

iPad miniはこの小さなサイズから気軽に持ち歩くことが出来ます。小さなショルダーバッグに入れるので便利ですね!そもそも本体のバッテリー容量が大きいので電池切らすことは中々ないのですが、保険として、また、iPhone用としてもAnkerのモバイルバッテリーも一緒にカバンの中に入れています。PowerCoreの10400だったらiPad miniを1回以上ほどフル充電出来ますね。

4. 優秀なモバイルWiFiルータ

iOSのCellularモデルならば、MacBook etc.にとっての優秀なモバイルWiFiルータになります。Appleのアカウント設定がウマくいっている前提ですが、iPadに触れずとも簡単にMacBookからテザリング出来るのは気に入っています。

f:id:kamawada:20151220102009p:plain

このように、わざわざiPad側でテザリングONにしなくても、勝手にOSXの無線LAN設定一覧に出てくる。

5. ながらで他のことをやる

iOS9からの新機能によりiPad mini 4ではSlide OverSplit Viewといった「ながら」で出来ることが増えました。例えば「ピクチャ・イン・ピクチャ」の機能を使えば、ビデオを右下に流しながらWebブラウジングなんてことが可能です。このピクチャ・イン・ピクチャ。最初、知らず知らずに挙動してて、ビックリしましたw

f:id:kamawada:20151220102821j:plain

6. 音楽垂れ流し端末

とある音楽垂れ流しサービスSpotifyの特別招待を受けたので、まだ日本で正式にサービスを開始してないものの、僕は使える状態にあります。居間にiPhone/iPad用の簡易スタンド兼充電器を置いといて、そこでSpotifyの音楽をBluetoothやAirplayでスピーカー経由で流すというのを一時期やっておりました。もちろん音源はApple Musicとかでもいいと思います。こんなイメージです。

f:id:kamawada:20151220103325j:plain

充電スタンドはiPhone用ですがBelkinのを使ってました。

f:id:kamawada:20151220103340j:plain

後述する「ガチスタンド」に比べると倒れやすくて頼りないですが、まぁ、ライトユースなら結構便利です。

7. カバーを付ける

出先で動画をダラっと見たり、ハードウェアキーボードを使う際にApple純正のスマートカバーは使いやすいです。

f:id:kamawada:20151220104115j:plain

カバーを閉じると勝手にiPadがスリープするのがいいよね!

f:id:kamawada:20151220104152j:plain

8. 電子書籍端末

主にKindleを利用して電子書籍端末としての利用は、iPad miniのユースケースのひとつです。特にAmazonのKindle端末と比べてPDFの閲覧がしやすいので重宝します。オライリーのeBookで購入したPDFとか最適かと思います。

f:id:kamawada:20151220104529j:plain

9. 漫画ビューアー

個人的にはKindleよりもLINEマンガの方が「漫画」を読むには適していると思っています。例えば、作品をシリーズで管理出来たり、購入出来たりする点が優れてますね。僕は彼岸島をこのiPad mini+LINEマンガで一気読みしたことがあります。

f:id:kamawada:20151220105322j:plain

10. 移動中の暇つぶしの道具

特に海外へ行く時の飛行機の中でiPad miniを活躍させています。電子書籍の役割を使い「小説を読む」というのもいいですが、活字だと疲れちゃうんで、漫画か動画を中心に閲覧していますね。その際は大抵、スマートカバーを付けて、ヘッドフォンまたはイヤホンを席に持ち込む形です。

11. 飛行機の中で映画を見て泣く

2年前にUSへ行った際に、ちょうど「言の葉の庭」という45分程度の短いアニメ映画が「上映開始と共に同時有料配信開始」していたので、iTunes Storeからダウンロードして持って行きました。当然iPad miniで見たのですが、すっげーいい作品で、最後ひとりで飛行機の席に座りながら、涙タラタラ流してましたw

f:id:kamawada:20151220110536j:plain

アニメや短めの動画コンテンツをiPad miniで飛行機の中で見るってのは相性が良いですね。

12. 目的地の「地球の歩き方」を見る

地球の歩き方はついつい買ってしまいますが、リアル本だと分厚くて重たいです... そこでKindle本の地球の歩き方を購入してiPad miniで見るってのをやったらわりとよかったっすね。飛行機の最中だともう「その国につく直前」なので地球の歩き方を読む動機が高まっていていい暇つぶしになります。

13. ハードウェアキーボードを選ぶ

iPad miniのソフトウェアキーボードは正直僕には打ちにくいっす。まぁiPadをビューアーとして割り切ればいいんですが、どうしても入力したい時のためにハードウェアキーボードの紹介をしましょう。色々試したけどベストはREUDOの「3200BTi」ってやつ。

f:id:kamawada:20151220111551j:plain

分厚くて少々重いのが難点ですが、Emacs派の僕としては「controlキーがAの左側にある」唯一のモバイルキーボードとして最高です。打ち心地も優れてます。

f:id:kamawada:20151220111629j:plain

14. キーボードと組み合わせてメモ帳

こうしたハードウェアキーボードを使いつつ、Day Oneなどのアプリを使えば素早く的確にメモを取ることが出来ます。大抵の打ち合わせはこの組み合わせでOKっすね。

f:id:kamawada:20151220111818j:plain

15. 障害時対応出来るかもを実現する

Web関係のサービスを運用していると万が一の障害対応がiPad miniで出来ないかどうか?を考えてしまいます。特に上記したREUDOのキーボードがあればEmacsキーバインドを利用しやすいので快適に出来る可能性があります。で、実際、最低限の対応が出来る環境を

  • SSHクライアントアプリを利用する
  • 開発サーバをVPSで立てておく
  • VPSからVPN接続出来るようにしておく

などの対策で構築することになりました。

16. SSHクライアント

OSXでは開発環境をローカルに揃えることが出来ますが、iOSではそうとはいきません。ですが、SSHクライアントアプリを使い、予めVPSなどに立てておいた環境にログインし、そこから作業を行なうことで諸々解決します。SSHアプリには「Prompt2」を利用しています。

f:id:kamawada:20151220114011j:plain

17. コードを書けるようにする

VPSには今のところLinodeのTokyoリージョンを選んで、ホストを立てています。CentOSとかまぁ何でもいいですがLinuxディストリビューションなので当然の如く、簡単に開発出来る環境は出来ちゃいます。Unicodeの扱いがPrompt2のせいなのかiOSの限界なのか分かりませんが、バグついたり、どうしてもOSXと比べると歯がゆいところありますが、既知の簡単なバグ修正くらいならば出来ちゃいそうです。

f:id:kamawada:20151220113905j:plain

18. デプロイ出来る環境を用意する

運用しているサービスがとあるVPN内にあるので、そこへホスト上から繋げられるようにしておけばデプロイもOK!これでPCを持ち歩かずともiPad miniやiPhoneで最悪障害対応出来るぜ!っていう安心感はあります。

19. テレビ&ビデオ

うって変わってエンタメな話。nasneっていうTVレコーダーと組み合わせるとiPad miniがテレビもしくはビデオになります。具体的にはnasneをテレビ回線とLANに接続し、iPad miniにtorneというアプリを入れればOK!

f:id:kamawada:20151213184359j:plain

しばらくテレビ離れしている僕ですが、nasne+iPad miniのおかげでだいぶテレビっ子になって来ました。

nasne 1TBモデル (CECH-ZNR2J01)

nasne 1TBモデル (CECH-ZNR2J01)

20. ポン出し機

ラジオや演劇の舞台などで、とあるタイミングに合わせて音を出すことを「ポン出し」と言います。僕がやってるPodcast「wada.fm」ではジングルをリアルタイムにポン出しする必要があるのでそのためにiPad miniが超活躍しています。CueZyというアプリがマジでフィットしています。

f:id:kamawada:20151220114554j:plain

21. マイクスタンドを活用する

余っていた卓上のマイクスタンドがあったので「iKlip」という製品と合わせて、頑丈なiPad miniスタンドをつくってみました。これがデスク際に置くものとして、すっげーいい感じです。

f:id:kamawada:20151220114913j:plain

元々のマイクスタンドはaudio-technicaの「AT8652」というコンパクトながらもガッシリしたモノ。これにiPad専用のフォルダーiKlipを接続します。

f:id:kamawada:20151220114920j:plain

そしていよいよ、iPad miniを横向きに挟む。

f:id:kamawada:20151220115008j:plain

安定感抜群!

audio-technica マイクスタンド AT8652

audio-technica マイクスタンド AT8652

22. 便利なバンドスコア

最近、高校まで演ってたギターを再開しようと思って、練習開始しているんですが、バンドスコアとか欲しくなります。が、今更いちいち物理本で買うのもなんだなーと思っていたら、TabProっていうアプリを発見して驚愕しています。抽象的に言えば、集合知でつくったタブ譜なりバンスコを見れるビューアーだぜ!って感じでしょうか。つまり課金すれば延々とバンスコが見れます。日本のアーティストもいくつかありますね。スクショはレッド・ツェッペリンの天国への階段のソロ部分のギター譜を表示したところです。これとスタンドを組み合わせればギターコピーも捗ります。

f:id:kamawada:20151220120054j:plain

23. 音楽再生を歌詞表示でカラオケマシン

Musixmatchというアプリを使えば、再生している音楽の歌詞表示が出来ちゃいます。iPad miniがカラオケマシンと化します。

f:id:kamawada:20151219192344j:plain

しかもスタンドを活用すれば、デスクトップマシンの隣で音楽を流しながら「歌詞を見る」ってことが出来るのでなんかいいです。

24. デスクトップ隣の垂れ流しプレイヤー

もちろん歌詞表示だけでは無く、YouTubeやビデオなどのプレイヤーを使えばPVやライブビデオ、そしてnasneで録った映像なども垂れ流して楽しむことが出来ますね。

f:id:kamawada:20151220092418j:plain

これで仕事が捗るかどうかは知りませんが...

ちなみにAirPlayを使って音をharman/kardonの「AURA」から出してます。元々AirPlayに対応しているスピーカーです。

【国内正規品】harman/kardon AURA ワイヤレススピーカー Bluetooth対応 ブラック  HKAURAAPBLKJN

【国内正規品】harman/kardon AURA ワイヤレススピーカー Bluetooth対応 ブラック HKAURAAPBLKJN

25. Bluetoothヘッドフォンでライフチェンジ

最後のTipsは飛び道具的にBluetoothヘッドフォンを紹介します。既にこの手のヘッドフォンを持っている方はよくご存知かもしれませんが「ケーブルが無くていい」ってのはいいっすね〜 最近手に入れたBoseのSoundLinkというヘッドフォンです。

f:id:kamawada:20151220120744j:plain

主にiPhoneとの組み合わせで使っていますが、ワイヤレスなのが楽でしょうがなくて、外出する時の必需品になりました。移動中、iPad miniとの相性もいいと思います。

まとめ

以上、写真多めで僕がiPad miniをどのような役割として使っているか?試しているか?を紹介してきました。特にマイクスタンド+iKlipとの組み合わせはオススメです。また、年末年始にイギリスへ旅行に行くのでその際にもまたiPad miniが活躍してくれるでしょう!以上、iPad mini活用法のAdvent Calendarをひとりで一気にやるよく分からん試みでした。