once upon a time,

Iris Tradをビール片手に聞くのが好きなエンジニアが、機械学習やRubyにまつわる話を書きます

Amazonで買ったThinkpad トラックポイント キーボードを修理した

みんな大好きトラックポイントキーボードですが、僕も昔使っていて最近miyagawaさんが使っていると知って再び使うようになりました。

今はThinkpadIBMからLenovoに移管したので、故障などしたらLenovoに問い合わせる必要があります。 ですが、保証書には3年保証と書いてあるものの、問い合わせ先のドメインIBMのままで連絡先がわかりません。 そのため、Amazonで買って故障を経験した人が、「次回は修理ができるように通常の販売店で購入します」と書くなど皆さん苦労されているようです。 今回買って3ヶ月(厳密にはWishlistからいただいてから3ヶ月)で壊れたトラックポイントキーボードを修理したので、やり方をメモしておきます。

1. 保証書とAmazonの購入履歴を用意する

Amazonは、アカウントサービスの注文履歴から、「注文の詳細/購入明細書」というのが見ることが出来ます。 通常、Amazonで買った保証書には、店舗名等は記載されていないのですが、こちらの購入明細を用意できれば問題はないそうです。

僕の場合は、wishlistからいただいたものだったので、送っていただいた方に連絡をしてPDFを送付していただきました。

f:id:chezou:20170419185029p:plain

2. レノボ・スマートセンターに問い合わせる

レノボ・スマートセンター(Lenovo スマートセンター)

電話で問い合わせをします。携帯からだとお金がかかるので注意してください。 電話は、「Thinkpadシリーズ」と「その他・よくわからない場合」で分岐するところがあるのですが、なんとなく後者にしてしまいました。

症状とともに連絡をしましょう。 なお、自分の場合はある朝起きたら熱を持ったキーボードが反応しなくなっていたため、修理を依頼しました。ケーブル起因なのか、マシン起因なのかということを問われるので、事前に切り分けをしておくと良いでしょう。

3. メールで保証書とAmazonの購入履歴を送付する

先方から教えていただけるメールアドレスに対してメールを送ります。すると、折り返し電話がかかってきます

4. 交換品が送られてくるのを受け取る

交換品を佐川急便さんが送ってきてくれました。大体2,3日で配送されましたが、在庫が切れたタイミングなどでは1週間ほどかかることもあるそうです。

5. 故障品を送り返す

数日後、別便で故障した品を受け取りにくるそうです。来るそうですと言っているのは、まだ自分の場合はsend backをする前の状態だからです。正直、iPhoneなどと同じようにその場で発送できてもいいのにな、と思います。

というわけで、Thinkpadトラックポイントキーボードが壊れても、無事交換していただけます。安心して使い倒せますね!

Docker imageを用意してWindows/macOSでスムーズに同人誌を作った話(Sphinx編)

こんにちは、ハイラルに移住したchezouです。最近は、Rから始まりRで終わる言語をよく書いています。

いよいよ明日に迫ってきた技術書典2ですが、お-13で技術書供養寺として頒布を行います。 内容は、僕の機械学習の実務におけるtipsとfastFMを使った推薦、@tokorotenさんのKickstarterの分析、@hagino3000さんのスプラトゥーンデータマイニングということで盛り沢山です。初めての同人誌ですが、140ページを超えた薄くない薄い本になりました。

是非買いに来てください!

tl;dr

  • 技術書を書くときに、LaTeXを含んだDocker image使ってCIでビルド出来るようにすると共同執筆が捗るよ

前回までのあらすじ

今回は、メンバーがWindowsの人とmacOSの人の混成チームであったこと、全員がPythonに馴染み深い人だったので、reStructuredTextベースのSphinxで書きました。

なお、メンバーの中には一度Jupyter notebookで下書きを書いて、それをnbconvertを使ってrstとして変換する人もいました(賢い)。この辺、Jupyterは元々Pythonのエコシステムなので数式含んだJupyter notebookをrstまで変換できるなら、良い選択肢かもしれません。

SphinxのDocker imageの作り方等は過去に書いているのでそちらを参考にしてください。

chezou.hatenablog.com

なぜDocker imageを用意したか?

  • 原稿執筆は余計な障害(環境構築とか)が入ると、その対応で燃え尽きる
  • 原稿執筆は往々にして〆切ギリギリから開始するので、最短距離を走れるようにしたほうが成功確率が上がる
  • OSが異なる環境でのLaTeX周りのトラブルシュートをしたくなかった
  • ビルドにコケる原稿のpushが防げた

この目論見はすべて当たりました。実際に、共著者の皆様からはすぐに執筆開始できたとの喜びの声をいただきました。

[追記]

じつはどちらもLinuxで書いていたともいえることがわかりました…

[/追記]

Sphinxのdocker imageでできたこと

  • WindowsでもmacOSでもすぐに書き始められる状況を準備できた
  • Gitlab CIを使って、マージされたものをCIでPDFを用意する
  • 奥付を作る
  • (docker image関係ないけど)re:viewで書きかけていた原稿をreSTに変換できた

奥付については、少しトリッキーなので後述します。

Sphinxのdocker imageでできなかったこと

  • 原稿のグレースケール化(Adobe Acrobatでやった)
  • 納得の行くfontの埋め込み(ヒラギノを使うためにmacOSでフォントを埋め込んだ)

Previewのグレースケール化は信用ならないので、グレースケール化には少なくともmacOSだとAcrobatが必須かもしれません。

fontの埋め込みは、IPA系のフォントだとライセンス的に問題なくコンテナ内で埋め込めるのですが、日本語の太字が綺麗にでなかったので結局MacSphinxをビルドしてヒラギノを埋め込みました。*1 そのおかげで、tokorotenさんの原稿の画像サイズが少しずれて手直しが入りました。。。dockerベースでフォント埋め込みまでやっていればいけたのに…。無念。

奥付の作り方

以外とハマったんですが、以下のgistのように一度citationをflashすれば行けます。 デフォルトでは、citationが必ず最後に来るようになっていますが、それを回避できます

Sphinxで奥付を足す方法 · GitHub

Re:VIEWの書きかけの原稿をreSTに変換できた(相互変換出来る時代に)

実は書きはじめのときに、shirouさんがRe:VIEWの原稿をSphinxの原稿に変換していただきました。ありがとうございました。

github.com

何故か手元にあった結構ボリュームのあるRe:VIEWの原稿を変換できて、大体の問題は解決されているのではないかなと思います。

なお、逆向きのSphinxの原稿からRe:VIEWを出力するプラグインもあります。これで、気が変わって別のフォーマットにexport/importが容易になりましたね!

github.com

おわりに

今回は、shirouさん、shibukawaさん、tk0miyaさんといった#sphinxjpの皆様にお世話になりました。困ったことがあったときに、日本語で聞ける環境があるというのは非常に助かりました。

それでは、明日は秋葉原UDX2階のアキバ・スクエアで僕と握手!

Indigogo ではじめてバックして来た dot を使って3ヶ月がたった

最近のbackspace.fm でdotが「来る来る詐欺」でAir podsに完全に飲み込まれたという話が出ていたので、きちんとレビューしてなかったのを思い出したのでレビューします。

dotは一言で言うと、AirPodsみたいな小さいBluetoothイヤホンです。

https://www.indiegogo.com/projects/dot-world-s-smallest-bluetooth-headset#/

はじめての Indigogo

f:id:chezou:20170130213220p:plain

僕がバックしたのは、miyagawaさんがdotみたいなイヤホンをinstagramか何かで買ったというのを見て、これかな?と勘違いしたからだったんですが、2015年12月にindigogoでバックしてたみたいです。ステレオで$79+$29のシッピングコストです。最初の申込みから少し遅れていたのですが、当時は2016年4月に届く予定と言っていて、結局届いたのは2016年の10月でした。

はじめてのIndigogoで学んだのは、バックしたときが欲しい気持ちの最大値になっていて、届く頃には類似品が出てきて市場が開拓されていて切ない気持ちになること。こなれたものを手に入れたいなら待っていたほうがいいのかもなーと思いました。

dot レビュー

www.instagram.com

箱はこんな感じでおしゃれ。

www.instagram.com

中身もきちんとオシャレに梱包されています。

www.instagram.com

充電器兼ケースは、イヤホンがそれぞれマグネットでひっついて充電されます。 重さもたいしてないので、ポケットの中に充電ケースを常に入れておいて、オフィスや家についたら充電するような感じにしています。

ケースの充電はケースを2つに割って真ん中にある穴にmicro USBで刺すのですが、真ん中で別れるところもマグネットでひっつくため、バラバラでどっか行ってしまうということはありません。ただ、ケースを充電しながら給電できるのは、片方だけなので注意が必要です。 また、モノラル二個としても使えるので、片方充電してもう片方は聞き続けるという使い方も可能です。 公称値で3時間持つと言っている電池ですが、backspace.fmや最近のrebuildは通しで聞けるかどうかはわかりませんが、充電器を忘れて往復2時間弱の通勤で充電しないでも再生し続けられたので、なんとかなるかもしれません。

www.instagram.com

大きさは小さめの腕時計よりも更に小さい感じ。AnkerのIE20と比べて見ても小さいのがわかります。

Bluetoothのペアリングは、JabraよりはいいけどAnkerのIE20と同じくらいかなという印象です。めちゃくちゃ安定はしてなくて、街なかでちょこちょこ切れる感じだけど、我慢できる範囲です。最近のiOSのアップグレードで接続は安定してきましたが、一度ペアリングが切れかけると片方ずつ接続が復帰するので同期するまでに少し時間がかかります。*1

音については、個人的にはIE20の方がクリアで好きかなという印象です。個人的には、こもった感じがしてそんなにいい音だとは思いませんでした。遮音性に関してはIE20よりもよく、うっかりすると周りの音を聞き逃す感じです。

操作は、最初に同時に長押ししてペアリングをして、その後iPhoneなどとペアリングするという流れです。一度Dot同士をペアリングしてしまえば、後は気楽に使えます。 電源オンは両方のスイッチを3秒くらい長押しする感じです。タイミングずれててもいいですが、どっちが右か左かはまぁ音がでるのでそれを聞いて間違っていたら入れ替えています。 電源オフはどちらかのスイッチを3秒くらい長押しすると両方消せて、1秒長押しするとSiriが起動する感じなのは今時の感じですね。 マイクの拾いはそんなに良くないかな、と思うので、あまりメインで使うのには向いていないのかもしれません。

軽くて小型なので、カジュアルに持ち運びができてポケットにとりあえず突っ込んでおくという運用ができるので気に入っています。

今となってはAirPodsが安定していると評判なので、そちらのほうが良いかもしれませんが、$100で手に入ったということではいい買い物をしたな、と思っています。

*1:前のiOSのときはブチブチ切れていて本当に辛かったけど、最近は良い

また一つ年をとった

同い年のmirakuiさんがCTOになったりして、そろそろ組織に中で立ち回りが変わる年代なのかなと思ったりしてる。ちょうど一年前の今頃今の会社の面接を受け、初めての英語の契約書を1日2日で読んだりして、色々と慌ただしくしたところから首にならずに一年経った。backspacefm聞いてると、外資は当たり出し続けないと干されるよねみたいな話もあったので、価値を出し続けていきたい。コードを書く時間は減ったけど、いいペースで新しいプロダクトがでる変化の激しい会社なので、誰の役に立つものなのか考えて伝えていくのは楽しいと思ってる。幸いにして同年代がオフィスにもpyspaにも多いので、自分の役回りにあまり不安はないので、できることを少しずつ広げようとしている。

また、kawasaki.rbが三年半以上続いているのもありがたい限り。Rubyだけではない地域の技術の集まりとして、これからも細々と続けていきたいです。 https://kawasakirb.connpass.com/event/49105/

最近のトピック - 在宅勤務のしすぎで運動不足のため、夫婦で30日スクワットトレーニングを始める。楽しい - podcastの出演者を探すのがちょっと大変になってきた。相棒/出演者欲しい - 昔全然聞けなかったATPが普通に聞けるようになってた - Pythonばっかり書いてたら、Rも書くようになった。dplyr便利

最後に、例のリストです。 http://amzn.asia/17SpDXd

Gitlab CIを使ってSphinxのドキュメントを自動でPDFにビルドする

gitlab.comは自前でDocker image登録できたり、CI持っていたりと便利ですね。しかも、privateレポジトリもお金かからないという太っ腹。 技術書典2に向けたレポジトリはgitlab.comで管理しています。

今回は共著者にPython使いが多いためSphinxを使って書いているんですが、Sphinxはcommon markでも書けるのでmarkdownでも文章を書くことが出来ます。

前回の記事では、数式入りのmarkdownからPDFを生成するDocker imageを作りましたが、それを使うと簡単にGitlab-CIでPDFが生成できます。

chezou.hatenablog.com

やり方は簡単、あなたのSphinxのプロジェクトに、以下のような.gitlab-ci.ymlを書くだけ。もちろん、必要に応じてpathsは変更してください。

image: chezou/sphinx-recommonmark:latest
pdf:
  script:
    - make latexpdfja
  artifacts:
    paths:
    - build/latex/techbookfest02.pdf
  only:
    - master

こうすると、masterにpushしてCIが成功する度に、PDFが生成されてダウンロードできます。

f:id:chezou:20170123123725p:plain

めっちゃ簡単。お試しあれ。

数式入りのmarkdownをSphinxを使ってhtml/pdfにする

Sphinxmarkdown拡張を扱うためのrecommonmarkというライブラリがあります。 これを使うとreSTではなく、markdownを書いてhtmlやPDFが吐けるようになります。

詳細は以下のエントリにやり方がまとまっています。

tech.3rd-p-zombie.net

実は、このrecommonmarkはconfigに設定を書くだけで、数式をmarkdownの中に埋め込めるのでした。

conf.pyの上の方に以下をimportし、

import recommonmark
from recommonmark.parser import CommonMarkParser
from recommonmark.transform import AutoStructify

source_suffixの修正、source_parsersの追加

source_suffix = ['.rst', '.md']
#source_suffix = '.rst'
source_parsers = {
    '.md' : 'recommonmark.parser.CommonMarkParser'
}

最後尾に以下を追加します。

def setup(app):
    app.add_config_value('recommonmark_config', {
            'enable_math': True,
            'enable_inline_math': True,
            }, True)
    app.add_transform(AutoStructify)

すると、

 ```math
  (a + b)^2 = a^2 + 2ab + b^2

 ```

とかくと、以下の数式の部分のようになります。(document)

f:id:chezou:20170122160632p:plain

また、inlineの数式も以下のように書けます。 (document)

This formula `$ y=\sum_{i=1}^n g(x_i) $`

ただ、残念ながら式番号を出す方法はわかりませんでした。

[追記]

conf.pyにmath_number_all = Trueを足せば数式がでました。ですが、参照はできないと思うので参照が必要な場合はreSTで書く必要があると思います。

gyazo.com

[/追記]

$ make latexpdfja

とすれば、PDFが、

$ make html

とすればhtmlが生成されます。

さくっと書くときにはmarkdownで行けるのはありがたいですね。

Sphinxlatex環境を用意するのが面倒な人向けに、docker imageも作りましたので活用してみてください。

https://hub.docker.com/r/chezou/sphinx-recommonmark/

参考

macのJIS配列のキーボードをKarabiner使わずにUS配列にする

macOS Sierraに上げる前に、Karabinerが動かない問題をなんとかしたいと思っていました。 El capitanでちゃんと検証してから上げないと、色んな人みたいに死ぬなと思ってKarabiner-Elementsに移行できるか検証しました。

今回の要件

  1. JIS配列の本体のキーボードをUS配列で使いたい
  2. 外付けのUS配列のキーボードで右cmd単体でかな(IME ON)、左cmd単体で英数(IME OFF)として使いたい

とくに、1.についての情報がみつからなかったので、実際に試してみた。

Karabiner-ElementsでUS配列にする

最近のKarabiner-ElementsはGUIがついているので、かなり楽ちんで、設定項目は2つ。

1つ目は"Virtual Keyboard"のKeyboard Type: ANSIを設定すること。これで大体USキーボードの配列になります。

f:id:chezou:20170119221149p:plain

2つ目の設定は、"Simple Modifications"でinternational3grave_accent_and_tildeに変えれば行けた。これでかつる!KarabinerのJIS->USと揃えるにはinternational1も同様に割り当てれば良さそう。

f:id:chezou:20170119221202p:plain

ちなみに、検証はAnkerのBTキーボードで試しました。安いUSキーボードとしてはそこそこ使えます。

cmd->英数,かな

これは、英かな使えば大丈夫。

しばらくこれで試してみようと思います。問題なければSierraにあげてみます。