Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

2017年7月に読んだ本

今月は28冊。今月はデザイン思考がらみの本が多数。そのため、新書読みははかどらず。

星5本

★を5つつけた本は、『誰のためのデザイン? 増補・改訂版 ―認知科学者のデザイン原論』、『入門 公共政策学 - 社会問題を解決する「新しい知」 (中公新書)』、『MBAより簡単で英語より大切な決算を読む習慣』の3冊。

今月は、思い立ってデザイン思考の学習を進めていたので、基本書であるところの『誰のためのデザイン』もいまさら読んだ。もっと早く読んでおけばよかったなーと思ったけど、こういうレベルの本をこれからもたくさん読めると思うと、新しいことを学ぶのはほんと楽しい。

『入門 公共政策学』は、社会問題の解決についての学について、より実践のプロセスに重きをおいて解説した本。きわめてリーダブルで、理想的な本。内容も面白い。『決算を読む習慣』もまた、リーダブルかつ楽しく、学ぶことの面白さを伝えてくれる。

その他

上述の通り、デザイン思考関連の本をいくつか読んだ。まだ数冊積んであるので、引き続き読む予定。経営学的な合理的な発想をここ数年学び、内面化していたのを、適切にアンラーニングしていく必要があると思っている。その他、堤清二の経営者としての実績に興味を覚え始め、3冊ほど読んだところ。非常に興味深い人物。

kentaroの本棚 - 2017年07月 (28作品)
新潮 2017年 08 月号 [雑誌]
新潮 2017年 08 月号 [雑誌]
-
読了日:07月09日
評価3

渋谷音楽図鑑
渋谷音楽図鑑
牧村憲一
読了日:07月09日
評価4

powered by Booklog

glint.hの紹介(Test::TCP/GlintのC版)

サーバに対してなんらかのリクエストを行いその結果をテストするような、要するにインテグレーションテストをする際に、なんかいい感じにテスト用かつテスト時のみそのサーバを立てたいことがあります。PerlやRubyでは以下のライブラリを、その用途に使えます。

自分的に空前のC期で、インテグレーションテストもCで書きたい!という気持ちになってきたので、上記ライブラリのC版も作ってみました。

github.com

こんな感じで使えます。

#include "glint.h"

// テスト対象のサーバを `exec` する
// この関数の中身は、子プロセスとして実行される
void my_glint_callback(char *port) {
  execl("tests/test-server.rb", "ruby", port, (char *)NULL);
}

int main() {
  glint *g = glint_new(my_glint_callback);

  // サーバを起動する
  if (!glint_start(g)) {
    perror("failed to start the server");
    exit(1);
  }

  // ポートが自動で割り当てられるので、そのポートを使って接続
  your_client_connect('127.0.0.1', g.port);

  // ここでなんかする。テストとか。

  // お片付け
  glint_stop(g);
  glint_free(g);
}

と、ここまで書いてはみたものの、やっぱインテグレーションテストはPerlなりRubyなりでやるほうがずっと楽に決まってるよな……という気持ちになってきたので、あんま使うこともない気もする……。

「ミドルウェアにmrubyを組み込む方法」についてまとめた

ミドルウェアの設定を書いたり運用したりしている時に、リクエストに対して動的にあれこれしたいなーという気持ちになったことは一度や二度ではないと思います。たとえば、nginxにおけるngx_mrubyのような感じで、リクエストに応じてmrubyで処理を書くみたいな。

自分自身もそういう気持ちに何度かなったのでそういうコードを書き始めたのですが、その過程で、ミドルウェアにmrubyを組み込む方法について簡潔にまとめられた資料を見つけられなかったので、できるだけわかりやすくまとめてみようと思って以下のようなスライドを作成しました(これを用いて、社内の技術勉強会で話しました)。

speakerdeck.com

mrubyの組み込みをやってみようと意気込んでみたところで、いきなりnginxなどのような大きなミドルウェアに対峙してしまうと、Cやmrubyの知識に加えて、そもそもそのミドルウェアの内部仕様も知る必要があり、ハードルが高いと思います。なので、このスライドでは、簡単なエコーサーバをmrubyで拡張するという道筋で説明するようにしました。

最小限の説明ではありますが、mrubyの組み込みをするときには必ず出て来るようなポイントを押さえてはいると思いますので、これからそういうことをしようという方には、参考になるところもあると思います。

2017年7月31日

半年に一度の謎の飲み会。RIO GRANDE GRILL 恵比寿。美味しかったのだが、やはり思ったよりもずっと食べられないのであった。帰りに蔦屋に寄り、『凹凸を楽しむ 東京坂道図鑑』を購入。帰宅してさっそく読んでいたのだが、なんのタイミング化で興が乗って『[まとめ買い] バキ(少年チャンピオン・コミックス)』を買って読み始める。

2017年7月30日

起きて、『医療者が語る答えなき世界: 「いのちの守り人」の人類学 (ちくま新書1261)』を読む。「呪術」とかいっちゃうところが不要に文化人類学という感じで鼻白むのだが、ここであげられているような患者目線というのはこれからもっと大事になっていくと思う。

昼食は、久々に和利道。さらに、『霊長類 消えゆく森の番人 (岩波新書)』を読む。霊長類そのものはともかくとして、エコツーリズムを推進する人々と、森林や鉱物資源をとりまく人々など、アフリカ、東南アジアの経済に興味を抱く。

しばし昼寝。のつもりが、20時過ぎまで寝てしまう。

ビールを飲みつつ『自民党―「一強」の実像 (中公新書)』を読み始める。のっけから派閥について説明があるのだが、自分がなんとなくしか理解してないのに驚く。読み進めるの楽しみ。

本を読むのに飽きてきたので、さらにビールを飲みつつコードを書き始める。楽しい。

進化したKarabinar-Elementsで、Ctrl-[と同時に変換モードを英数に戻す

Karabiner-Elements が超絶怒濤に進化している。今も!という記事で知ったのですが、キーカスタマイズソフトのKarabinarの、macOS Sierraへの対応バージョンであるところのKarabiner-Elementsがあれこれできるようになっていて、僕の要求についてはすべて満たせるようになっていました。

その要求とはすなわち:

  • SandS
  • Ctrl-mでReturn
  • Ctrl-[PNBF]で↑↓←→
  • Ctrl-[でEsc
  • iTerm上のVimで、インサートモードから抜ける時にIMEを英数に戻す(Vim使いの人は、これのありがたみがわかると思います)

なのですが、macOS Sierra + Keyhacでキーバインドをカスタマイズという記事を書いたときにはKarabinar-Elementsではできなかったものが、いまはできるようになっています。めちゃ便利ー。

SandSやEmacsモードについては、設定画面からKarabiner-Elements complex_modifications rulesを開いて、そこからクリックひとつで設定をインポートできるようになってる!すごい!

「iTerm上のVimで、インサートモードから抜ける時にIMEを英数に戻す」という要件については、僕はいまはVSCode(+Vimプラグイン)を使っているのだけど、それも合わせて、Terminal.app、iTerm、VSCodeで実現するなら、以下のような設定を ~/.config/karabiner/karabiner.json に足せばOKです。

{
    "description": "Esc with convert input mode to eisuu",
    "manipulators": [
        {
            "from": {
                "key_code": "open_bracket",
                "modifiers": {
                    "mandatory": [
                        "control"
                    ],
                    "optional": [
                        "caps_lock"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "escape"
                },
                {
                    "key_code": "semicolon",
                    "modifiers": [
                        "control",
                        "left_shift"
                    ]
                }
            ],
            "conditions": [
                {
                    "type": "frontmost_application_if",
                    "bundle_identifiers": [
                        "^com\\.apple\\.Terminal$",
                        "^com\\.googlecode\\.iterm2$",
                        "^com\\.microsoft\\.VSCode$"
                    ]
                }
            ],
            "type": "basic"
        }
    ]
}

2017年7月29日

午後から雨がふるということで、自転車はやめにして読書の日。『Cプログラム高速化研究班 コードを高速化する20の実験と達人の技』、『夏目漱石と西田幾多郎――共鳴する明治の精神 (岩波新書)』を読む。

夕食は、中目黒にしばらく前にできた、五島うどんのお店。いろいろ不安な感じではあったものの、出されるものはよかった。九州のお酒があるのもいい。

帰宅して、ビール飲みつつホームページいじりをしたり、筋トレYouTube動画を観たり。なんだかんだで延々と観てしまって、すごく時間泥棒な状態になっている。よくないなー。