ArangoDB ってのが面白いと思うんだ

 最近 Graph database が盛り上がってるように感じる。

 さて ArangoDB という DB を知っているだろうか。
 MySQL とか MongoDB とかと比べると知名度は低いものの、NoSQL、とりわけ Graph database 界隈では名が知られている。Graph database 界隈と書いたが、さしずめこの領域では Neo4j が幅を利かせている。Neo4j なら聞いたことあるって人はたくさんいると思う。

Graph databases

Neo4j

 Neo4j の強みとしては、そのクエリ言語である Cypher の読みやすさが一つ挙げられる。Cypher の紹介ページ に書かれている最初のサンプルを引用すると、こうだ。

MATCH(:Person{ name:"Ann"})-[:MARRIED_TO]->(spouse)

このクエリは「name が "Ann" である Person と MARRIED_TO で結ばれている相手を探して変数 spouse にセットする」のだが、それを SQL で表現しようとするとおおよそ直感的とは言えない join に苛立たせられるだろうと思う*1
 Neo4j は先行者であり、現在は後続の Graph databases からパフォーマンステストで叩かれまくっている。僕も試したんだけど正直、ある程度のレコード数になると遅さが目立つようになる。

Dgraph

 勢いだけで言うなら、最近いちばん盛り上がりを見せたのは Dgraph じゃないかな。
『オープンソースの分散グラフデータベースDgraphが$3Mを調達しv.1.0にやっと到達』Tech Crunch
 Dgraph のクエリ言語は GraphQL+- という、昨今話題の GraphQL を Graph database 用に進化させた言語である。Dgraph の紹介としてはこのスライド 『Dgraph - A high performance graph database written in pure Go』 Speaker Deck の 14 ページ目 〜 24 ページ目が分かりやすい*2

・その他

 他にも Graph database はたくさんあるけど紹介していたらキリが無い(OrientDB, Amazon の Neptune, GraphDB, ...)。ArangoDB の話をしよう。

ArangoDB

 ArangoDB は Graph database であることが主ではなく、あくまで Multi-Model NoSQL database という触れ込みになっている。簡単に言ってしまうと、JSON で表されるような構造化されたドキュメントを value とする kvs でありつつ、そのレコードを使って Directed graph を形成したりできる database である。

f:id:kura-replace:20180420020618p:plain

データを操作するには 2 つの方法がある。ひとつは AQL というクエリ言語を使うこと、もう一つはシェルから JavaScript を叩くことである。
 なお最新のパフォーマンス比較は↓こちら。LGTM。
『NoSQL Performance Benchmark 2018 – MongoDB, PostgreSQL, OrientDB, Neo4j and ArangoDB』

Dgraph と ArangoDB とのパフォーマンス比較をした良い記事が見つからなかったので良かったら教えて欲しいのだけど、その比較を待つまでもなく ArangoDB を推したくなる理由を次に書こうと思う。

ArangoDB を選択する理由

 データというのはプロダクトにとってライフタイムの長い性質のリソースであって、それをどういう形で持つのかというのはとても重要である。おいそれとアクの強い、信頼の薄いデータストアに置くわけにはいかない。「では ArangoDB がきな臭いか?」というとそれは判断が割れるところであろうが、少なくとも知名度を一つの尺度とするなら MySQL や MongoDB には敵わないだろう。しかしそれを踏まえてもなお検討を続ける価値はあると思う。

1. Multi-Model であること

 データの保存先として、何も考えずに RDB を選ぶ時代は終わった。とはいえ、他の選択肢として何があるかと言ったとき MongoDB しか無いというのも面白く無い。改めて「データは、それを利用するアプリケーションからどう見えるべきか?」という問いに真っ正面から向き合ってみると、それに応える有力な選択肢として Graph があると思う。アプリケーションが使う全てのデータを Graph として見るというのは無理があるが、Graph 的なデータを部分的に持つアプリケーションというのはたくさんあると思うのだ。Document は保存したいし Document 同士の Relationship も保存したい、当然 Collection を横断する SQL 的な join もやりたい。Middle size のプロジェクトに対して ArangoDB が妥当性を持つ余地がここにある。*3

2. foxx

 ArangoDB には、foxx という、microservice を作る機能が乗っている。データベース内で動く JavaScript を書くことが出来、またそれは DB のインメモリデータへアクセス出来る。DB が Microservice になるのだ。
 通常 Web アプリケーションは少なくとも 2 つの大仕事をしている。ひとつはフロントエンドに返すデータの構築*4、もう一つは何らか「形式立ったロジック」に沿ったデータアクセスである。DB が Microservice になるということは、後者の「形式立ったロジック」を DB 側に配置できるようになるということである。またネットワークオーバーヘッド削減にも寄与する。
 その他 foxx の面白さを最も的確に語っているのは公式のページだと思う。

3. 決定的な欠点が無い

 Transaction もある*5、クエリ言語もある、クラスタリングもある、プラットフォームに合わせたインストール手段、コミュニティ*6もある、開発も継続されている。だから、(我々の)プロジェクトと ArangoDB 双方の将来を考えたとき、どうしてもココが真っ暗だというポイントが無い。そう言えるものって一握りですよ。

以上、そんなわけで

日本でユーザーさん増えてほしいなぁと思うわけです。

*1:SQL を dis っているわけではない。それは時代遅れの態度だと思う。ここでは Graph database が得意とする領域がある、ということを言っているに過ぎない

*2:ただ 17 ページ目の「データモデルとして RDF triple を採用」というのはちょっと違うと思う

*3:Neo4j では全部が Graph になってしまう。

*4:例えば Rails で view の render をするとか

*5:ところで MongoDB にマルチドキュメントの ACID トランザクションが来るのは 2018 夏らしいですね

*6:Slack が過疎って無いんですよ奥さん!

Go to the world which has no 'goto'.

Twitter でこんなのを見かけた。

--- 以下フィクションのため実在の人物や団体などとは関係ありません ---

続きを読む

macOS 10.13.2 へのアップデートで SOCKS proxy の挙動が変わった

これでちょっと困ったぜ、というメモ。

2017/12/13 macOS High Sierra 10.13.2 アップデートについて - Apple サポート

 

業務で普段 SOCKS proxy を使っている。

f:id:kura-replace:20171221113509p:plain

で、これを ON にしつつ、ssh で踏み台を経由しつつ社内のサーバーにログインしていたのだが、アップデートしたらこの ssh が固まるようになった。

 

・対策

上記ダイアログの「プロキシ設定を使用しないホストとドメイン」に踏み台を記述する。

 

これつまり踏み台への ssh がプロキシ経由になっているんだろうと思うが冒頭のリンクにそんなこと書いてないんだよなぁ。PAC ファイル対応の影響っぽい気はする。

3 歳半までに読ませて良かった絵本

 普通、大人になったら絵本なんて見ない。ひとりの大人が普段から絵本の棚へ足を運ぶというのは、子供がいる場合に限定されるんじゃないか。絵本は子供の頃には誰もが触れたものなのにも関わらず、絵本の棚を日頃から見ている人とウン十年も見ていない人に大別されるということは、絵本市場にとって決して良いことではないように思う。僕も以前は絵本コーナーなんて目もくれなかったが、子供ができたことを契機に書店や図書館で絵本コーナーを眺めるようになった。

 そこで気がつくのは、この絵本という市場にはどうしようもないクソみたいな本が溢れているということ。心のこもっていない絵だったり、やたら少ないページ数、ペラペラな内容、割高感... などなど。特に、2 歳以上が対象の絵本で、何かテーマ(挨拶、色、動物、オノマトペなど)を掲げてそのテーマに関するネタを並べる構成になっているものには目も当てられないものが多い。そういった作り方をすると一冊にまとめやすいというのは分かるんだが、率直な感想として子供をナメてんじゃないかとすら思う。
 そんな感じで絵本市場にすこーし怒っているのだが、ちゃんと探せば良書というのは見つかる。良書と言っても究極的には "僕にとっての" 良書にしか過ぎないわけだが、その時々の流行りでもなく出版社のイチオシでもないセレクションは誰かにとってきっと有益だと思うので書いておきたい。

 

なお、以下、断りなくガンガンネタバレする。

 

* 〜 0 歳半
 最初に見せる 1 冊は、原色を使ったのを選ぶと良いと思う。これは情操的な側面よりもそもそも乳児の目の構造が繊細な色の違いを認識できないという体の発育的な側面に依るところが大きいため。書店に行けば、そういう絵本が売っている。ぶっちゃけ、そういう絵本の選択肢は限られているので割愛する。

 

* 0 歳半 〜 2 歳

1. くだもの

くだもの (福音館の幼児絵本)

くだもの (福音館の幼児絵本)

 

 平山和子さんの絵はとても丁寧で美しい。これ以外にも「やさい」「おにぎり」などがあるが、この「くだもの」が最も美しく、また内容も偏りが無くて好感が持てた。絵の美しさだけでは無く、各ページの「はい、どうぞ」というセンテンスの繰り返しの面白さもある。また食べた経験のある果物が増えていくという食生活の変化や、言葉の習得という生活の変化も相まって、何度も読み方を変えて楽しめるめちゃくちゃコスパの良い 1 冊。

 

 2. んぐまーま

んぐまーま (谷川俊太郎さんの「あかちゃんから絵本」)

んぐまーま (谷川俊太郎さんの「あかちゃんから絵本」)

 

 最初から最後まで何が描いてあるのか全く理解できない絵本。色マジックをめちゃくちゃに紙の上で滑らせたような絵と、例えば「みょぷらぬ のに?」などそもそも日本語でも擬音語でもない文字が並ぶ、完全ぶっ壊れの 1 冊。

 でもちょっと考えてみて欲しい。一般に、絵本に出てくるキャラクタといえば可愛いクマだったりウサギだったりするが、それは現実の熊や兎を可愛らしくデフォルメしたものである。しかし乳児は実際のそれを見たことがないし、仮に見たことがあったとしてもその熊や兎の特徴をうまく切り出しキャラクタライズして描かれた「クマ」や「ウサギ」であることなど理解できるはずがない。乳児に「クマ」「ウサギ」という概念はそもそも存在しないのだ。もっとサイケデリックな色彩感覚で世界を見ているはずである。視覚だけではない。音だってそうだ。この絵本はそういう世界観を持つ乳児に、絵を見ることの楽しさを訴える本だと思う。
 そういうポイントを絵本という形に昇華させた谷川俊太郎は天才だと思うが、同様のコンセプトであろう「もこ もこもこ」「ぽぱーぺ ぽぴぱっぷ」よりもこの本の方がよりピュアな印象を受ける。

 

3. Brown Bear, Brown Bear, What Do You See?

Brown Bear, Brown Bear, What Do You See?

Brown Bear, Brown Bear, What Do You See?

 

 Eric Carle の絵を使った絵本は世界中で読まれているが、絵が独特でありながら妙な癖が無いのが良い。僕も好きだ。ページをめくるたびに動物の絵が描かれていて、単純にその絵を楽しむこともできるが、動物がそれぞれワントーンの配色になっているので例えばその動物が何であるか分からないような乳児であっても色の変化だけで楽しめる。リンクしてあるのは英語のものだが日本語のものも出ている。各ページの動物に「What do you see?」と問いかけてページをめくらせる構成が読み進める動機の継続を促していて、巧みだなと思う。

 僕は英語の本を少し混ぜるようにしているが、その目的は子供に英語を覚えさせることでは無く、ざっくりいうと二つある。一つは普段使っている言語以外の言語が存在するということそれ自体への抵抗を無くし、ものごとを多面的に見ることの足がかりにすること。例えば「これは犬であるが Dog でもある」ということがもう既に面白いじゃないか。もう一つは僕自身が英語を理解できず"コレどういう意味?"ってなって調べて納得するというプロセスを子供に見せることで、よく分からないものが現れた時の処世を、子供の手の届く範囲のものから体現すること。(後者は、僕ぐらいのプアな英語力では 3 歳児向けぐらいの絵本で完全には読めないものが出てくるのでその時に。)
 まぁとにかく、たとえ正しく英文を読めなくとも、少し混ぜてやるのが良いと思う。絵本は言語の壁を超えて楽しめるコンテンツなんだし、しかも子供はわけの分からないものを全力で楽しむ能力に長けている。

 

4. 絵本 強力 補修テープ

 本じゃないがついでに。

絵本 強力 補修テープ (3cm×5m) H-27-B

絵本 強力 補修テープ (3cm×5m) H-27-B

 

  乳幼児は「絵本が食べ物ではない」ということが分からない。また「新聞紙みたいに破って遊ぶものでは無い」ということも分からない。だからボロボロになるまで補修してその本能に付き合ってやるべきだと思う。そのために絵本用の補修テープが便利である。セロハンテープと比べて黄ばみにくく、光を反射しにくく、テープ縁にホコリがつきにくい。

 

* 2 歳 〜 3 歳
物語を楽しめるようになる。

 

5. Dream Snow

Dream Snow

Dream Snow

 

  Eric Carle の絵本その2。この本はハードカバーが良い。なぜなら最後のページにオルゴールが埋め込まれているから。木に飾りをぶら下げ、5 匹の動物たちとささやかなクリスマスを祝うおじいさんに、読者である子供がメロディーを贈ることによって物語が終わりを迎える。読了時の余韻がとても良いのと、子供が物語に参加できる面白さがあるのがこの本の最大の特徴。僕は基本的に、触って遊ぶ系の絵本とか、開くと飛び出す系のしかけ絵本は買わないのだが、この本はそういう絵本にありがちな粗雑さが無い。

 うちの子には 2 歳半ぐらいに与えたが 3 歳半の今でも時々読んでやる 1 冊。

 

4. クエスト にじいろの地図のなぞ

クエスト にじいろの地図のなぞ (講談社の翻訳絵本)

クエスト にじいろの地図のなぞ (講談社の翻訳絵本)

 

 字が全く無く、絵のみで物語が進む絵本。字の無い絵本というのは探せばぼちぼち見つかるが、その中で物語になっているもの、さらに言葉が未成熟な幼児が楽しめるものは本当に少ない。

 字が無いので、最初、親が "淡々と文章を読む係になりきることで気配を消す" ことができないことに疲れると思う。この絵本は親が口語で適当に語ってやれば良い。親が普段の口調で、絵を見て "(文字通り)物語る" ことで、子供は話の続きをいつもよりじっと聞き入っているような気がした。それを何度も繰り返すと、今度は子供が自分の言葉で話をしてくれるようになる。子供による絵本の読み聞かせによって僕が寝かしつけられてしまった最初の 1 冊。

 

5. いちねんめいろ

いちねんめいろ (ほるぷ創作絵本)

いちねんめいろ (ほるぷ創作絵本)

 

 うちの子に限らず迷路が好きな子は多いと思う。が、これまた迷路を扱う絵本には幼児向けの良いものが少ない。この本は、4 月, 5 月, ... 3 月という順に、一年のそれぞれの時期を迷路に描いた力作である。

 迷路を扱う本を探していると、迷路を載せている幼児向けの本には以下のようなグレードがあることに気づく。

  1. 壁だけの迷路
  2. 壁だけの迷路 + 全体を俯瞰すると何かの形になっているまたは少し立体的にしてある
  3. 壁だけの迷路 + 道中にイラストが散らしてある
  4. 明示的な壁がなく、木や人などが迷路を構成している

大人がパズルゲームの一環として迷路をやるなら 1. が迷路としてノイズが無いので良さそうだが、指でなぞる事それ自体を楽しむ子供なら 4. の方が断然良い。この本は 4. にあたる。
 また、大量に配置されているイラストには一つも複製が無いという事も取り上げておきたい。僕はイラスト中に複製が置かれるコンテンツを嫌っている。これは迷路に限らず、例えば絵探し系の絵本にも言えると思う。例えば「アンパンマンをさがせ!」シリーズでは、一見するとアンパンマンの大量のキャラクタの中から探し物をするみたいで楽しそうだが、よくよく見るとキャラクタがまるでスタンプでぽんぽん押されたように各々ポーズを取っていて、キャラクタ同士の絡みがほとんど無い。また表紙に同じキャラクタが四人も五人も描かれていたりして、もはやこれは絵として成立していない。「いちねんめいろ」はその点しっかり描き込まれている。
 ちなみにこの本の中の全ての迷路は絵探しにもなっている。面白いのは、その絵探しの問い自体が絵の中に紛れている点である。迷路を楽しんだあとは、絵探しの問題探しをする。そして絵探しができるわけだ。


 話はそれるが、迷路本はちょっとひねりを入れるといろいろに楽しめる。とりわけ、道幅が広く描かれている迷路を用意してそれにシールを貼って遊ぶのが興味深かった。例えば曲がり角に花や車のシールを貼れば賑やかな道になるとか、行き止まりにキリンのシールを貼れば嬉しくてわざと行き止まりへ寄り道したくなるとか。これは単にシールを貼るのが楽しいというだけでなく、自分で遊び道具を作ることもまた楽しいという意味で、二重に美味しい。

 

6. The Gruffalo

The Gruffalo

The Gruffalo

 

  グラファロは Julia Donaldson の代表作である。ストーリーはこうだ。

主人公は一匹のネズミ。彼は狐・フクロウ・蛇といった天敵から逃げるために、彼自身が適当に想像した、存在しない怪獣「グラファロ」との友情をほら吹いて歩く。しかし突然、本当に想像通りの怪獣「グラファロ」に遭遇してしまう。グラファロは彼を食べようとするが、彼は「僕は森で皆に恐れられているんだよ、知らないの?」とさらに嘘を重ねて待ったをかける。そして今度はグラファロを連れて先ほどの天敵たちに会いに行く。そうすると皆、彼に吹き込まれた事前情報にピタリ一致する怪獣が目前にいることに恐れ驚き、逃げ出す。グラファロはその様子を見て、彼は本当に恐れられているんだと思い、そして彼から逃げていく。無事に一人になったネズミは、誰にも邪魔されずゆっくりクルミを齧る。

 この話は、ネズミを食べようとするキャラクタが嘘情報に翻弄される滑稽さが面白い。ポイントは、その嘘情報がキャラクタそれぞれで異なるということにある。3 歳ぐらいになればそういう情報の非対称性をなんとなく理解できるようになる。この絵本を繰り返し読んでやると、理解する瞬間に立ち会うことができる。3 歳と言わず 4 歳でも 5 歳でもきっと楽しめる絵本だと思う。
 続編として「The Gruffalo's Child」があり、その他彼女の作品には「The Snail and the Whale」「Room on the Broom」などがある。いずれも良書だと思う。


* 3 歳 〜 4 歳

少し長めの物語を楽しめるようになる。

 

7. わすれられないおくりもの

わすれられないおくりもの (児童図書館・絵本の部屋)

わすれられないおくりもの (児童図書館・絵本の部屋)

 

 老いたアナグマが、話の序盤で死ぬ。これは、アナグマの死を悲しみ、彼との思い出に浸る動物たちが互いに慰め合いながら死を受け入れる様子を描いた物語である。

 幼児期に近しい人の死というイベントにエンカウントするかどうかは人それぞれだが、そういうことが無かったとしても、公園でアリを踏み潰すなどして死が何なのかは知っていると思う。この本は身近な人の死というものをどう受け止めていけば良いかを教えるのに良い内容になっている。死を扱う絵本はいくつかあるが、夢の中で死者と会って何かを悟るとか、いつまでもクヨクヨしてはいけない的な心境の変化を経て生の感触に奮い立つとか、またはもっと別の宗教的な解決を図るとか、そういうのはいちいち仰々しくて良くない。この本はその点とてもマイルドで、夜、寝かしつけの時に読んでやったって良い。
 原作は英語なのだが、小川仁央の日本語訳が良いので日本語版の方が良いと思う。

 

8. 手ぶくろを買いに

手ぶくろを買いに (日本の童話名作選)

手ぶくろを買いに (日本の童話名作選)

 

  人間を恐れる母狐と、動物を見逃してやる人間がいる。主人公の子狐は、その両者の間に立たされる。この話には動物と人間それぞれの優しさと偏見の両方がちらちらと出てくるのだが、それによって子供と大人の対比が描かれている。新美南吉、黒井健のペアによる絵本としては「ごんぎつね」の方が有名だが、「手ぶくろを買いに」はごんぎつねのようなやや衝撃的なラストにはなっておらず、幼児にも読み聞かせやすい。ただ、文章に使われている言葉や比喩表現は幼児には難しいものが多く、本文をちゃんと理解しようとすると多分 5 〜 6 歳ぐらいまで待たざるを得ないと思う。まぁそれは「クエスト」と同様、口語で話してやれば済むので問題ではない。
 なお、うちの子はこの絵本の絵が嫌いだと言った。著名なイラストレータといえど、子供には好き嫌いがあるのでそれはしょうがない。興味深かったのは、絵が嫌いだから絵本も読んでほしくない、という態度をとったこと(まぁ、この時本人の機嫌が悪かったというのもあるんだが)。
 しかし、絵が嫌いと言う子供に「わかってねーな。オメーもまだ若いなw」ととりあえずたしなめ、本は想像しながら読んでも良いこと、絵本の絵は見たくなければ見なくても良いこと、例えば狐さんの話なら自分が好きな狐さんの顔を想像するだけで物語がぐっと面白くなることなどを教えた。そうすると、すっと読み聞かせを聞いてくれるようになった。また既に読み古した他の絵本であっても「このリスさんがゾウさんみたいに大きい顔だったらどうなる〜?」とか(正直よくワカラナイ)話を振ってきたので、まぁ、また一つ楽しみ方が増えたということだろう。絵本との向き合い方はそうやって色々で良いよな、という気がする。

 

* 最後に

 何だかんだ言っても、子供は自分が興味があるものにしか反応を示さない。子供が面白そうだと思わないものを無理に押し付けるわけにはいかない。親が与えるタイミングで子供が興味を示さないことだって多いと思う。これは絵本に限らず、おもちゃにしたって、知育ナントカって書いてある教材の類にしたってそうである。気負って英才教育するのはサムいなとも思う一方、子供が欲しいと言うものばかりを与えるのも何か違う気がする。

 基本的に値札がつけられて売っているものである以上、その商品のターゲットは子供ではなく親であると思った方が良い。子供が遊ぶものが陳列された売り場の棚では、当の子供はそっちのけである。だから与えるものと興味を持つ持たないのミスマッチが起きる。

  たとえその時子供が興味を持たなくとも、子供の視界に入るところに置いておくと、ある日突然手を伸ばしたりするもんである。親自身がおもしれーなって思えるものを子供と共有できたらそれは単純に嬉しいし、そのための道具として絵本というのは手ごろなコンテンツであるように思う。

優秀なエンジニアは

優秀なエンジニアは「優秀なエンジニアは○である」「優秀なエンジニアは□□をしない」みたいなざっくりした色分けを、他人に対してやらない。*1

エンジニアがやることのひとつに技術による問題の解決があるが、そのためには物事を細かく分割して見る '目' を養っている必要がある。例えば A という問題があってその原因が a1 == 1 && a2 == 2 であるからだ、というようなとき。

「a1 == 1 も a2 == 2 も条件のひとつなんだから、 a1 == 1 になる事をそもそも禁止するか、a2 == 2 になる事をそもそも禁止するか、どちらかを選ぶべきだ」という人と、「a1 == 1 であることも a2 == 2 であることもそれ単体では問題ではないのだから、それらが揃わないようにすべきだ」という人に分かれる。例が雑で申し訳ないがこれは経験的にそう感じる。*2

で、結論がこのどちらになるにせよ、両方の考え方を考慮した上で結論を出せる人のほうが、片方の考え方しかせずに結論づける人より、エンジニアとして優秀だと思う。"問題を分割して見る '目'" と書いたのはつまりそういう事を指している。往々にしてベストな結論というのはそのコンテキストによって決定づけられるものであろうが、ベストであって欲しい結論に一般性を持たせたいがためにコンテキストに一般性を押し付けるのは何かすごく政治的だし、エンジニアがそういう筋書きをするのはある種の思考停止だと思う。エンジニアリングというのは政治に対するカウンターパンチではなかったか。

*1:という文章が矛盾しない理由は僕が優秀ではないからだな

*2:もちろん、「そもそも a1 == 1 && a2 == 2 という条件が複雑であること自体が問題 B であり、この問題 B の抜本的解決によって問題 A のみならず将来的に A' や A'' について考える必要すら無くなるのだ」という意見もあるが、それは 'いかにして問題を発見するのか' という問題へのアプローチの中で発揮される優秀さでありちょっと別の話なので横に置いとく

新型 MacBook キーボード

 最近、仕事して家事をこなして子供の相手をして、それだけで 1 日が終わるようになって、自分の時間が全然取れなくなった。それはある意味では幸せなことなのだろうが、学生のとき、まだプログラミングを知らなかった頃は 1 日 2 冊ぐらいのペースで猛烈に読書にハマっていたし、プログラミングを知ってからは 1 日 12 時間ぐらいコーディングしていた時期もあった。学生当時に読んだ本で「起きている時間のうち 1/3 を自分のためだけに投じることができない人は総じて不幸である」的な事が書いてあったのを読んで「あぁ今の自分はそういう意味では幸せなんだな」と思ったのを覚えている。いま、妻も子供も寝静まったあと一人になって、ふっとそういう時期を思い出すとき、その落差に悶々とすることがある。これを書いている今夜はまさにそういう日で、だったら blog 書いてないでコードでも書けよって気もするが、新型 MacBook を一日使ってみた感想とかを書いてみたい。

 待ちに待った新型 MacBook が届いたのだ。届くまでの間、目に止まったレビュー記事は積極的に読んでいたので、1 ポートの不便さについての指摘やキーボードの悪評については知っていたが、いざ使ってみるとそんなに悪くないように思う。網羅的にレビューするつもりはないのでキーボードについてだけ書く。

 最初はまず押し込みの浅さに違和感を感じた。しかし少しタイプしてだんだんそれに慣れていくとこちらの方が良いなと思うようになった。というのも、最小限の力でタイプが進められるので、押し込みの弱さに起因する打ち漏れが少なく、打ち直しが少ない。普段は MacBook Pro を使っているのだが、新型 MacBook を使っていると、手に馴染んだはずのそれよりも速くタイプできるようになった。

 またタイプしているときの音がとても静かなのが良い。MacBook Pro だと妻が寝ているときにコードを書いたりすると「タイピングの音がウルサイ!子供が起きるでしょ!」と怒られたものだが、これくらい静かならまぁ許容範囲じゃなかろうか。以前 Kindle を買ったときにもページめくりの音がしない事を評価したが、とにかく静かに利用できるデバイスというのは子持ちの家庭にはとてもありがたいのだ。

f:id:kura-replace:20150428041224j:plain

 細かい話をしだすとキリがないのでバッサリ割愛するが、じゃあ総合評価でこのデバイスはお買い得かというと、割高だと思う。内部のスペックの低さや、1 ポートがいずれ 2 ポートになるであろう事も考慮すると、後継モデルを選ぶほうがずっと賢明だろう。それでもしかしこのモデルを買うというのは、信仰心とか好奇心とかの気分的な充足感にそれなりの対価を払うということであって、だったら概ねこの買い物には満足だなーと思う。

集中せずとも失敗しないのがプロだろうが、集中を呼び寄せるのもプロだろう。

 仕事をしていて「今は集中できていないな」と気付くことがある。ずっと集中しっぱなしというのはあり得ないから、「後でまたペース上げて取り返せば良いか」と思うのだが、そのまま何となくその日の業務が終わることもある。

 

 さて、羽生善治のこの本が面白かった。


Amazon.co.jp: 決断力 (角川oneテーマ21): 羽生 善治: 本

 この本を端的に紹介するのは非常に難しい。説明を文章にするとこの本の良さを損なってしまうような気がするのでやめておく。

 

 この本では何度も、氏が集中することについて書かれている。その文章から伝わってくる気迫のようなものは、将棋の対局の中の緊張感や、貪欲になって学び研鑽するときの狂気などを想像させてくれる。

 そうして一通り読み終えて、本の中で書かれている「集中すること」と、最近の僕が言っている「集中すること」との間にはずいぶんと格差があるなーと気付いた。どうも最近の僕は、手が動かせているならそれは集中している、と、考えているような節がある。そのため仕事する時間の気分を少しでも良くするようにと、ラジオを垂れ流しておいたり、作業用の音楽を YouTube に探しにいったり、やたら味の濃い飲料を口にしたりしていた。しかし、そうやって仕事した気になっていた僕は、ラジオの操作をしたり、 YouTube の広告が終わるのを待っていたり、冷蔵庫を開けたりしているだけで、そもそも期待していたような集中モードの時間にありつけていない。git で、最も集中できていたであろう時期のコミットと最近のコミットを比較してみるとその差は瞭然だった。書いたコードの行数が違うとかそういう事ではなく、自分が書いたコードの密度は自分がよく分かっているものである*1。「自分の管理は(足らないところはあれど)自分でやっている」という自覚は、どうも幻覚だったらしい。

 そこで、仕事しているときにバックグラウンドで音を鳴らすのを止めて、飲料は水かブラックコーヒーに限定した。たったそれだけで、グッと集中できるようになった。思考の根がより深いところに届くようになり、時間あたりの密度が非常に濃くなる感がある。読書するときにも適用したら、本の読み込みが良くなった。

 

 「集中するためには気分をハイにするのが大切で、そのために何かを足してみよう」という発想は基本的に間違っているんだろうと思う。「集中するためには気分の善し悪しなどどうでも良くって、まずはノイズっぽいものを取り除いてみよう」という発想の方が良いようだ。気分の善し悪しが集中をトリガするのではなく、集中することが気分の排除をトリガするのだろう。

*1:コードレビューで指摘してもらうコードの品質とはまた別の話をしている