Lazuli

らずり

最近の読み物。

君主論 (講談社学術文庫)

君主論 (講談社学術文庫)

なんとなく読んだ。長く続く君主制とはどんなものかみたいな内容。君主になるといっても民族や身分からして様々なコンテキストがあって、パターン別にどういった政治を行うのが効率的か細かく書かれている。おもしろいんだけど、いかんせん翻訳が読みづらくてつらい。これ、その、あれ、それらといった指し方をする回りくどい文章がうざい程に多用されている。多用されすぎていて、何を指してるのかまじで分からん。


はじめよう!  要件定義 ~ビギナーからベテランまで

はじめよう! 要件定義 ~ビギナーからベテランまで

要件定義の必要に迫られて、ちゃんと知ろうと買った。君主論と打って変わってなんて読みやすい文章でしょうかね。


「原因と結果」の経済学―――データから真実を見抜く思考法

「原因と結果」の経済学―――データから真実を見抜く思考法

因果推論の入門的な本。介入群と対照群を比較する様々な手法が説明されている。例題も小難しくなく良かった。

というツイートを見て買った。


アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引き

アジャイルレトロスペクティブズ 強いチームを育てる「ふりかえり」の手引き

所属チームのイテレーション振り返りの改善に。なぜ振り返りが必要か、どういった振り返りがプロジェクトを成功に導くのかが書かれている。
先日ファシリテーターをやるときがあって、これを参考にやったら結構うまく回せたから読んでおいて良かった。


Team Geek ―Googleのギークたちはいかにしてチームを作るのか

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

読んでなかったから読んでおくか、という感じで。評判と変わらない内容ですばらしい。


メモランダム

メモランダム


エッセイ。だれかのブログでお薦めされていた気がする。どこかは忘れた。まさしくエッセイという本。
ただまあフェミの匂いが結構強くてちょっと途中からうんざりしてしまった。


日本語ということば (Little Selectionsあなたのための小さな物語)

日本語ということば (Little Selectionsあなたのための小さな物語)

日本語にまつわるコラムの寄せ集め。いまはなき Mellow My Mind というはてなダイアリーで昔紹介されてるのを読んでからずっと気になっていた。最後の「甘えるということについて」がそれ。
感想は、ここ数年読んだ文章の中で一番心に来る文章だった。感動とか悲しいとかそんなチャラいもんじゃないんだけど、俺には語彙力もそれを表現できる文章力もない。レビュー読んだりしてくれ。気になったら買うとよい。


女子中学生の小さな大発見 (新潮文庫)

女子中学生の小さな大発見 (新潮文庫)

小学生たちの愉快な自由研究がたくさん載っているという触れ込みで購入。なるほどーと読んでいたけど、中盤に差し掛かるところで飽きた。


間取りの手帖remix (ちくま文庫)

間取りの手帖remix (ちくま文庫)

摩訶不思議な間取りが淡々と紹介されてる本。結構面白い。
最後の方に著者と間取り好きな人が対談してくコーナーがあって、そこにくるり岸田繁が出ていて驚いた。著者も岸田氏(以外も含めて)もよくわからん発言を自信ありありでしていて、俺からすればお互いに一方通行の意思疎通できてない会話のように見えるんだけど、何か通じ合ってるのかちゃんと終わりに向かって収束していく会話で謎だった。


aku-you.booth.pm

インターネットもぐもぐさんという方がやってる同人サークル?かな。中心人物っぽいけど組織構造は知らない。
いくつか買って読んだ。みんなぶっ飛んでいて、そんな金遣いでよく生活出来るなと感心する。内容はもちろん面白い。

Modern development with Google Apps Script

Google Apps Script(以下、gas)で今っぽいモダン環境で開発出来たから書いておく。

背景

以前、会社の業務時間を管理する Slack ボットを作った(ネタ元は宮本さん)。日報が Google Drive で管理されていることもあって gas で作られている。

作って運用してみたら社内で結構好評で徐々に利用者が増えていった。
そうなるとトラブルがあったときに対応出来るような作りにしておきたい。ただ、雑なパクリだったから謎構成になってしまったし、QUnit という一昔前のテスティングフレームワークを使っていたりで、何か手を入れるとしても触りたくない気持ちしかなかった。
gas のデメリットを解消しつつ良い感じに作り直せないかなーとやってみた。

モダンな JavaScript とは

以下の要件で書けるようにした。

  • ES2015 で書く
  • mocha でテストを回す
  • ESLint で構文チェックする
  • Yarn でパッケージ管理する
  • node-google-apps-script でデプロイ

ES2015 で書く

browserify でトランスパイル出来るようにした。とはいえ、gas は独自の JavaScript 仕様なため少し工夫をする必要がある。

export default が使えない

export default な構文を普通にトランスパイルしてもエラーで動かせない。
babel-plugin-transform-es3-member-expression-literalsbabel-plugin-transform-es3-property-literals というプラグインを追加する必要がある。
これがあればトランスパイルしてもエラーが出ずに実行出来る。

.babelrc

{
  "plugins": [
    "transform-es3-member-expression-literals",
    "transform-es3-property-literals"
  ]
}
gas のクラスが無い

当然ながらローカルに gas のクラスが無いから、トランスパイル時に参照出来なくてエラーになる。
これを解決するには gasify というプラグインが必要。便利。

便利関数が微妙に使えない

確認出来た限りだと find と引数展開は使用出来なかった(gas がエラーを吐く)。もしかしたら、これもプラグインで解決出来るのかもしらんが、調べる気にならなかった。
愚直に forEach を使ってやった。forEach は使えた。

mocha でテストを回す

テストで問題になるのも gas のクラス達。
ネットを彷徨うと様々な人がテストで困っている様子。
解決案は以下のようなものが見つかる。

  • テスト用の gas スクリプトを作って、gas 上で回す
  • Sinon.JS でモックする
  • gas-local というモックツールを使ってテストする
  • 自作モックを使う
テスト用の gas スクリプトを作って、gas 上で回す

CI サービスが使えないし諦め。

Sinon.JS でモックする

さすが簡単にモックは作れる。問題は、実在するクラスがないとモックを使用出来ないということだ。
UrlFetchApp をモックするには UrlFetchApp のクラスが用意されていないといけない。
モックを作って、テスト用のクラスも作ってとだるいので諦めた。

gas-local を使う

ES2015 では動かせなかった。諦め。
たぶん頑張れば使えるんだと思う。

自作モックを使う

gas-local のやり方見てたら自分でモック作ればいいじゃんねと気付いた。
やってみた。

// setup.js
import SpreadsheetApp from './mock/SpreadsheetApp';

global.SpreadsheetApp = SpreadsheetApp;
// SpreadSheetApp.js
import Spreadsheet from './Spreadsheet';

export default {
  openById() => (Spreadsheet),
};
// SpreadSheet.js
export default {
  // do something...
};

利用する gas の API を適当に定義すれば問題なくテストに使える。
少々めんどくさいが、うまく動くので良い。

ESLint で構文チェックする

Airbnb設定を利用した。
ちょっと厳しいところもあるので適当に緩めて。

ESLint を実行したときも勿論 gas のクラスは存在しないためエラーになる。
eslint-plugin-googleappsscriptプラグインとして読み込んでいれば良しなにしてくれる。

{
  "extends": "airbnb",
  "plugins": [
    "googleappsscript"
  ],
  "env": {
    "googleappsscript/googleappsscript": true
  },
  ....
}

ESLint は CI で回すのも便利だけど、git のフックを使うともっと良い。

# .git/hooks/pre-commit
#! /bin/sh
git diff --cached --name-only --diff-filter=AM | grep '\.js$' | xargs eslint

とやっておくだけで、コミット時に自動で ESLint が走って、エラーだとコミットが中断される。

Yarn でパッケージ管理する

npm と互換があるから使うのに何も困らなかった。

yarn add package_name
yarn add package_name --dev
yarn install

これだけ使えればだいたい事は足りる。
なにより yarn.lock でバージョンを固定出来るのが良い。npm shrinkwrap は嫌な思い出しかない。

node-google-apps-script でデプロイ

node-google-apps-scriptGoogle 製のデプロイツール(といっても API を使ってアップロードするだけだが)。

gapps upload

とやるだけでアップロードしてくれる。
設定は API キー作って認証情報登録してアップロード先を指定するだけ。詳しくは README とか見て。
アプリケーションの公開までやってくれると最高なんだが、そこは手動でやらねばならん。微妙に使いづらい。
それでも自分でアップロードするのと比べると断然ラクなんだけど。

最近読んだ本

読み中も含む。

暗号解読〈上〉 (新潮文庫)

暗号解読〈上〉 (新潮文庫)

サイモン・シンの本は面白いものが多い。これは暗号技術がどう発展していったか、古代ギリシャの初歩的な暗号からエニグマまでの歴史を逸話混じりに書かれている。ぐんぐん読めた。
下巻もあるそうだがまだ読んでいない。


ヒエログリフを書こう!

ヒエログリフを書こう!

暗号解読に感化されて、古代文字読み書き出来たら楽しそうという判断で買った。挿絵がかわいい。
かなり噛み砕いて書かれているから分かりやすいけど、分かりにくい。
古代文字とはそういうものだろう。


面白くて眠れなくなる元素

面白くて眠れなくなる元素

残念ながらそれほどだった。まあ眠くなる話だった。他の眠れなくなるシリーズも気になってるけどどうなんだろう?
化学話は俺には向いてないかもしれない。


インターネットルーティング入門 第3版 (ネットワーキング入門)

インターネットルーティング入門 第3版 (ネットワーキング入門)

読み中。雑な知識でインターネットしてるからちゃんと知ろうということで買った。
硬派な内容で、雰囲気で理解してた俺には難しいところもあるが、読めないことはない。


高速スケーラブル検索エンジン ElasticSearch Server (アスキー書籍)

高速スケーラブル検索エンジン ElasticSearch Server (アスキー書籍)

Elasticsearch を使う機会があったから買った。
本の内容は現行バージョンよりだいぶ古いけど基本的な API の使い方は変わらないので支障はなかった。参考になった。
これ読んだ後に本家ドキュメント読むと理解が違う。

という本を読んだ。
入浴施設の設計思想とか載ってるかなーと思ったけど期待した内容はほぼなかった。
ヨーロッパの入浴の歴史や、平安時代から続く温泉の歴史あたりは面白かった。

資料本ということで中盤以降はずっと様々な入浴施設の写真と設計図が紹介されている。
90年出版だったかな、27年前だしいくらかの施設は既になくなっているかもしれないが、残っている所もあるだろうし良さげな所へは行ってみたい。

本状況

10年戦えるデータ分析入門は読み終わった。分かりやすかったし面白かった。

くだんの本の最後で、統計学の初学として「マンガでわかる統計学」が良いぞと書いてあったから今はそれ買って読んでる。漫画か〜となりがちだけど文章より漫画のほうがサクサク読めるのは確かだし、先入観を持たずに読んでみようという感じで買った。
確かにちゃんと統計学の基礎を始めるという内容で出だしは良い。

あと、平民新聞で軽く紹介されてた「流星ひとつ」というのも買った。

「流星ひとつ」一杯目の火酒まで読んだ。引退して収入もなくなったら大変でしょ?と聞かれた藤圭子は軽く「別に」と答える。沢木「そうかな」藤「そうだよ。だって……確かに、いままで、贅沢はしてきたよ。だけど、それはそれ、そういうこともありました、そういう時代もありました、ていうだけのことだよ。やっぱり、あたしは、家でご飯と漬け物を食べるのがいちばん好きだし、親子丼とかカツ丼とか、御飯の上に何かがのっかっている簡単なものが好物だし、服だって、セーターとシャツとズボンがあれば、それでいいし……自信があるんだ、あたし」最後の、自信があるんだってところがいいな。この章のハイライトは、注文した酒がようやく届いて、「初めまして!」と乾杯しようとする藤圭子に対して沢木が「実は、あなたに会ったのは初めてじゃないんですよ」と打ち明ける場面だろう。ここからインタビュアーとインタビュイーが入れ替わるように、藤は沢木の語りに惹き込まれていく。全然おぼえてない、どこで?と不思議がる藤圭子に対し、「当然だけどね、わからなくて」と答える沢木は、五年前に、(後に深夜特急としてまとめられる事になる旅の最終地点)パリで出会った一人の少女の話をする。

こんな紹介。面白そうで買った。

それと、寿司を作ってみたくて寿司大全なるものも買った。はてブで話題になってたやつ。結構分厚い。
ひと通り読んでみて軽い気持ちで握れそうだったらやってみる。

そういえば本の消化活動してるしと amakan に登録してみたけど、流星や大全あたり載っていなくて残念だった。


マンガでわかる統計学

マンガでわかる統計学

流星ひとつ

流星ひとつ

すしの技術大全

すしの技術大全

wish list にとにかく突っ込んでいた本が溜まってきたから消化活動することにした。
最近は「杏のふむふむ」って本を読んだ。なんてことないエッセイで、どっかで連載してたのを本にまとめたという背景らしい。本屋で立ち読みしたときに文章がうまくて惹かれたから突っ込んだとかそんなような理由だった気がする。
杏という方には特に思い入れもなく、エッセイだから個人の話で何も俺の役には立たないけど日常が淡々と書かれた読み物は面白い。やっぱり文章が上手くてユーモアもあって読みやすかった。サクッと読み終わった。

いまは「10年戦えるデータ分析入門」を読んでる。まだ序盤で分析らしいことは何もしてない。


杏のふむふむ (ちくま文庫)

杏のふむふむ (ちくま文庫)

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

ロジカルシンキングを読んだ

ロジカル・シンキング―論理的な思考と構成のスキル (Best solution)

ロジカル・シンキング―論理的な思考と構成のスキル (Best solution)

どうしたら論理的な思考になるか、注意すべき点や手法が書かれてた。
プレゼン頑張るような職業の人はこういうことをやっているんだなー。
面白かった。

初めて Kindle for Mac 使って読んだけどハイライトも検索もしやすいし良かった。
こういった類の本はタブレットよりこっちのほうが良さそう。