文字っぽいの。

文字を書いています。写真も混ざります。

HHKB Pro2とMacBook Proで擬似セパレートキーボードし始めた。

※この記事は疑似セパレートキーボードで書かれています。

f:id:FromAtom:20170522190523j:plain

こんな感じ。

元ネタはここ。

hatenanews.com

前からErgoDox Ezが欲しいんだけど、値段が値段だけに躊躇していた。そもそもホームポジションもへったくれもない打ち方をしていたので、セパレート式のキーボードでちゃんと打てる自信が無かった。 都合よく手元にはHHKB Pro2とMBPというキーボードが2台あったので試してみることにした。

やってみた感想としては、

  • 半日ぐらいで慣れて普通に打てる
  • 楽な姿勢でタイピングできてとても楽
  • SierraでKarabiner死んで不安だったけど、Karabiner-Elementsを入れればちゃんとCtrl等の同時押しも認識された
  • キーボードの高さやキータッチが違うけど案外なんとかなる

という感じ。つらい点としては

  • けっこう場所をとる
  • CtrlやEnterの位置は同じなのでちょっと手首がグネる

という感じ。とはいえ案外使いやすくて開発速度も遅くならなかったので、ErgoDoxが買えるまでこのまま使っていこうと思う。

Xcode8.2.1でRelease Buildすると"Compiling Swift source files"が無限に終わらない

環境

  • Xcode8.2.1
  • Swift3(Swift2.2から移行してきた)
  • OSX El Capitan

起こること

Debug Buildだと普通にビルドが通って、シミュレータでも実機でも動くし、アーカイブもできる。しかし、ReleaseフラグをつけてArchiveをしようとすると、Compiling Swift source files で処理が止まってしまい、永遠に進まない。

Swiftはコンパイル遅いからしかたないと思って待っていたけど、流石に2時間放置して進まないのはおかしいので調べた。

(今のところの)解決策

Optimization Levelを Fast, Whole Module OptimizationからFast, Single-File Opitimization に変更したらビルドできるようになった。

f:id:FromAtom:20170322165740p:plain

下記の記事でみつけたけど、「Xcode8.2.1のバグでは?」って書かれてる。どうなんじゃろうか。

stackoverflow.com

開発合宿で熱海に行って、サーバサイドSwiftでWebアプリを作りました。

f:id:FromAtom:20170212193157j:plain

fromatom.hatenablog.com

これの旅行記です。熱海でもくもくとサーバサイドSwiftをいじって、Webアプリを作ってきました。

開発成果

見たい映画やアニメがどのサービスで配信しているか探せるWebアプリ『sansa』を作りました。

f:id:FromAtom:20170212175628p:plain

例えば iron で検索するとこうやって出てくる。

f:id:FromAtom:20170212175756p:plain

詳細画面に飛ぶと

f:id:FromAtom:20170212175808p:plain

こうなっていて、下にあるHuluとかを押すとHuluの視聴ページに飛ぶ。ただし、USリージョン(かつ英語)しか対応してないので、日本人には使いにくい。この辺については後述。

背景

あるアニメや映画を見たい時に、「さて、いったいどのサービスで見られるんじゃろ?」となることが多くて、それを解決したかった。僕はAmazon プライムビデオとHuluを契約してるんだけど、例えば「けものフレンズ」が観たいと思った時に、両方のサービスにログインして検索をする必要があって面倒だった。そもそもなかったときの徒労感がヤバイ

技術的な話

このWebアプリはHTMLとCSS以外はすべてSwiftで書かれています。そうですServer Side Swiftです。みなさんはSwiftですか?

github.com

フレームワークkitura、テンプレートエンジンにStencilを利用している。本腰を入れてServer Side Swiftで開発した感想としては、とにかくつらい。つらさを箇条書しておく。

  • JSやCSSなどの静的ファイルを配信する方法がわからない
    • 情報がなさすぎてたどり着くまで大変だった
  • APIKitやDecodableなどのiOSで手慣れたライブラリが使えない
    • APIKitはなぜか通信が走らない
      • Kituraとの相性がわるい?Linux対応してない?
    • Decodableは動いたけどHeroku上で動かない
      • Linux対応してないってP-R見てわかった
  • 新しいライブラリを追加する度に swift package generate-xcodeproj を叩かないとXcode上でライブラリが認識されない
    • なんでやねん
    • 簡単なMakefileを作って解決した

こんな感じで入れたライブラリが軒並み動かなくて、全部自分でAPIClientやJSONのObject Mappingまわりを自作した。成果発表の5時間前にDecodableがHerokuで動かないことが分かって、全部のモデルを書き換えたのはさすがに疲れた。

現状の、Server Side SwiftはJSONを生成して返す程度なら良さそう。ただ、プロダクションレベルで導入するのは、まだ待ったほうが良いなという印象。Swiftは、Swift3でようやくベータ版が終わってver1.0.0なった言語だと思う。ようやくLinuxでもへんてこなツールや環境変数を使わなくても開発ができるようになったので、1年後ぐらいには強くなってそうだなという気持ちです。

また、映画の情報は Guidebox API | A Free Movie, TV and Video APIというAPIを利用した。無料で使えて便利なんだけど、US Regionしかまだデータが揃ってないらしい。JPでアクセスすると「手伝ってくれる人募集!」って書いてあってなるほどってなった。

宿

[熱海 開発合宿] で検索したけど、微妙そうだったり、部屋の空きがなかった。というか[熱海 開発合宿]で検索するといろんな会社の開発ブログみたいなのがヒットするんだけど、みんな同じ場所を利用していて新規性皆無で辟易とした。新規開拓したいので、じゃらんと一休でえっさほいさ検索した。

探した時のポイントは、

  • 予算は1泊1万円程度
  • そこそこ高速な有線LANか無線LANが部屋にある
    • Free Wi-Fiがロビーのみにあるってのが結構多い
  • 朝晩のご飯が部屋食ではない
    • 開発合宿は延長コードバトルになるので部屋食は大変
  • お風呂の利用可能時間が長い
    • 夜10時に閉まるとかだと厳しい

という感じ。手順としては最初にじゃらんでいくつか良さそうな宿をみつくろっておいて、全部の宿に電話して「部屋にネットあります?Youtubeが快適に見られますか?」と聞いていくといい感じになる。最終的に、チェーンなホテルだけどココにした。

www.livemax-resort.com

ウェルカムドリンクとしてコーヒーが飲み放題で、ガブガブ飲んでいた。あと、チェックアウトを1部屋1000円で12時にできるのが嬉しい。開発合宿の最終日は疲れ切っているし、のんびりしていたいのでとても良い。

しおり

事前にDropbox Paperでしおりを作って配布しておいた。持ち物や宿情報とか、宿でXcodeのインストールをしないなど基本的なことをまとめてある。

f:id:FromAtom:20170212181633p:plain

開発環境

f:id:FromAtom:20170212193316j:plain

窓際を陣取って、こういう風景を見ながら、ワインを飲みながらコードを書いていた。高等遊民感があってとても良かった。

よくあるご飯で安心。ソフトドリンクが飲み放題で良かった。朝からメロンソーダやコーラが飲めて脳みそがクラクラする。 f:id:FromAtom:20170212182256j:plain f:id:FromAtom:20170212182228j:plain

発表会

部屋に大きいディスプレイ(一般人はテレビと呼ぶ)があったので、それにつなげて発表会をした。2日目の24時に発表開始だったんだけど、それまでになんとか動くものを作ろうとみんな必死になっていて良さがあった。

f:id:FromAtom:20170210003435j:plain

ノウハウ

連絡手段

今回は8人で参加したんですが、連絡手段はSlackにしました。新しくTeamを作って、slackinをHerokuにデプロイして招待した。こういう短期的なやつでも面倒くさがらずにTeam作ったほうが良いと思う。会社でSlackを使っている場合、そこで新しくchannelを作ろうと考えがちだけど、そうすると仕事の通知も見ることになって集中できない。あと、使い捨てのWebHookやBotも気軽に入れられるし、Teamごと消せばいいので後処理も楽ちん。

f:id:FromAtom:20170212183745p:plain

けものフレンズメソッドによる煽りも飛び交う、実に平和なSlackでした。

持ち物

電源タップとAnkerのUSB充電器(5口とかのやつ)が重要。後は、家で使っている無線LANルータを引っこ抜いて持ってくと良い。

あとは、こういうのを持っていって、Jazzとかけものフレンズとかあいまいみーを流しておくと良い。

今回得た知見として、天井から音楽を流すとカフェっぽくなって集中しやすいというのがある。

泊数

1泊だと全然時間無くてつらいし、3泊だとだれるので、2泊3日がちょうどよい。

熱海

熱海、開発合宿に向いて無さそう。日帰り湯で他の宿行こうかなって思っていたけど、すごい強気の値段設定だし、宿と宿の間が離れていてつらい。『湯巡り』コンテンツがないと厳しい。あと、観光目的でブラブラ歩いても何もないのがちょっとつらい。これはたぶん開発合宿の2日前に京都に旅行に行っていたので、相対評価になっている気がする。ただ、干物や鮮魚は美味しかったし、今回利用したホテルは良かった。

海が見たいという理由と、都内からアクセスしやすいという理由で選んだけど、おそらく望んで再訪することはないと思う。次は湯田中渋温泉郷とか、白骨温泉に行こうかな。

まとめ

  • 熱海で2泊3日の開発合宿をしました
  • サーバサイドSwiftでWebアプリを作りました
  • 開発合宿は技術的な疑問を雑に聞けるので良いですね
  • 今回泊まったホテルは便利で良かった
  • たーのしー!

マキタの掃除機を買いました。

前まで使っていた掃除機はNationalと書かれている古さで、重いし取り回しもしにくいしで大変だったので、マキタの掃除機を買った。ホテルやビルの清掃で使われてる掃除機というとわかりやすそう。

特徴

  • 重量が1.1kgですごく軽い
    • MBPの13インチより軽い
  • バッテリー式で便利
    • マキタのドリルとかに使われてるやつでかっこいい
  • 紙パック式
    • やっぱ紙パックの方がぱっと捨てられる便利だと思う
  • 業務用としても使われる頑丈さとシンプルさ
  • LEDライトがつく
    • 隙間を掃除する時に地味に便利。使う前は「いらんやろ」って思ってたけど、地味に便利。
  • バッテリーの充電が20分で終わる
    • その分充電器のファンが回ってうるさいけど、許容範囲。
    • 充電器はでかいけど、オトコのコって感じで良い。電動ドリルとか持ってると共通化できて便利。

f:id:FromAtom:20170210180152j:plain f:id:FromAtom:20170210180211j:plain

とにかく軽いし、吸い込みも良いし、さすがマキタだなという質実剛健さで使いやすい。過度な装飾やヘンテコ機能がないというのは、なんて使いやすいんだろう。最高の買い物だった。

備考

前から人気だったマキタ掃除機の新商品とあって、すごい人気。人気に生産が間に合っていなくて全然売ってない。Amazonでも、

ヨドバシカメラでも、 - http://www.yodobashi.com/ec/product/100000001003261473

売り切れている。僕の場合は12月末にヨドバシカメラで取り寄せを頼んで、届いたのは2月頭だった。めっちゃ時間かかるので、欲しい場合は早めに動いたほうが良いです。