RubyKaigi 2017 に行って来ました(3日目)
発表
10:00-10:40: Compacting GC in Ruby by @tenderlove
10:50-11:30: Ruby for Distributed Storage System by @tagomoris
https://www.youtube.com/watch?v=KrWhhgWHTwE&feature=youtu.be
13:00-13:40: Bundler 2 by @colby-swandale
13:50-14:30: JRuby at 15 Years: Meeting the Challenges by @headius & @enebo
14:40-15:20: Boosting Performance Bottlenecls: Improving Boost Type by 60% by @jules2689
https://jnadeau.ca/presentations/rubykaigi2017/
15:50-16:30: Improving TruffleRuby’s Startup Time with the SubstrateVM by @nirvdrum
16:40-17:40: Towards Ruby 3x3 performance by @vnmakarov
発表感想
あとで追記予定です。Performanceの話が色々聞けて良かったです。特に、TruffleRubyと最後のKeynoteでのMJitの話が、夢のある話で印象的でした。
全体振り返り
7本x3日 = 21本の発表と、LT12本を見ていて、振り返ると盛り沢山でした。 どれも面白かったですし、言語処理系やパフォーマンスに興味を持ってる自分としては、詳しい人の話を聞けて楽しかったです。JRubyやTruffleRubyもかなり注目しているので、中の人を見れたのが個人的にグッドでした。
懇親会では、以前から話してみたかったRubyコミッターの方たちと話せて、良い機会になりました。自分の中でのOSSへのモチベーションも上がった気がします。 総じて、行って良かったなーと思います。
RubyKaigi 2017 に行って来ました(2日目)
発表
9:40-10:40: Keynote by @matz
10:50-11:30: An introduction and future of Ruby coverage library10 by @mame
13:00-13:40: Improve extension API: C++ as better language for extension by @kou
13:50-14:30: Automated Type Contracts Generation for Ruby by @valich
14:40-15:20: Asynchronous and Non-Blocking IO with JRuby by @jkutner
15:50-16:30: Bending The Curve: Putting Rust in Ruby with Helix by @chancancode and @hone
16:40-17:20: Write once, run on every boards: portable mruby by @yurie
17:30-18:30: Lightning Talks
- http://rubykaigi.org/2017/presentations/lt/
- スライド
- Implementation of Web Standards in Mastodon by @_furoshiki
- How to develop CRuby easily with Vim by @ujm
- How to specify
frozen_string_literal: true
. by @znz - Use case of Refinements with black magic by @joker1007
- A WebSocket proxy server of Niconico comment server by Ruby by @kinoppyd
- Auto Completion in Rails::WebConsole by @sh19910711
- My Challenge of embedding mruby into a bare-metal hypervisor by @chikuwa_IT
- Glitching ruby script by @shyouhei
- DNN/GPU with Ruby by @ainame
- Migration from hiki to markdown in Rubima by @miyohide
- Independence of mruby. by @take-cheeze
- LLVM-based JIT compiler for CRuby by @k0kubun
発表感想
Keynote by @matz
RubyのModuleをベースにして、色々なプログラミング言語の機能を取り入れながら、Moduleが色々な役割を担うようになってきたよって話でした。 最近増えたRefinementやprependの狙いや位置付けについて、matz本人から話を聞けたのは良かったです。こうしてまとめられてるのを見ると、確かにModuleは色々な役割を担っててなんだかんだで複雑になってる気もしました。個人的には、namespaceとしての利用が面白いと思ってます(rubyのrequireはただRubyコードを実行するだけでimport, exportみたいな概念はないので、Moduleとしてglobalな空間での衝突を避けないと大変なことになる。。。w)
An introduction and future of Ruby coverage library10
test の coverage とはなんぞやぞいうお話と、Ruby の coverage library をもうちょっと良いものにしようとしてるよというお話。 Ruby で test coverage を計測したことなくて気付いてませんでしたが、line coverageしか公式ではサポートしてない状態だったらしいです。機能追加してくれるのはありがたいと思います。
Improve extension API: C++ as better language for extension by @kou
C++ で Ruby の extension library を作るなら、こんな風に C++ の中で Ruby っぽく書けて良いよ、みたいな話でした。 APIを考えるのが好きみたいで、実際にlibraryとしてある程度動くものを作ってるのがすごいと思いました。発表中に「binding libraryを作りたいわけじゃない」と言ってましたが、むしろbinding libraryを作る際に役立ちそうだと思いました(Rubyのオブジェクトを触ったりRubyのメソッド定義がやりやすくなってるように見えたので)。
cf. https://github.com/jasonroelofs/rice
Automated Type Contracts Generation for Ruby by @valich
RubyMineの中の人による、Rubyのテストコードから型情報を集めてうまく集約して出力する仕組みを作っている(作った)というお話。 型情報を集約するロジックの話はなかなか面白かったですし、RubyMineが色々機能拡張してるのはすごいと思いますが、全てのケースをテストで網羅するのはちょっと難しそうだなーと感じました(発表してる人は、みんなの力を合わせれば可能だ、と言っていてちょっと夢を感じましたが)
Asynchronous and Non-Blocking IO with JRuby by @jkutner
JRuby で非同期ノンブロッキングIOを利用したいケースのサンプル実装として、RatpackとNettyを利用したHTTPサーバーアプリケーションを作ってみたよってお話でした。
cf. https://github.com/jkutner/jruby-ratpack-async-demo
JVM系だとPlay FrameworkもノンブロッキングIOとして有名な気がするので、JRubyから利用は出来ないのかが個人的にはちょっと気になりました。
Bending The Curve: Putting Rust in Ruby with Helix by @chancancode and @hone
Rust で Ruby の native extension を作る為のライブラリとしてHelixというものを作っていて、こんな感じだよというお話。
2年前のRubyKaigiでも話してるのを聞いていたので、ちょっと気になっていました。Rustのマクロを使い倒してるみたいで、強力なマクロシステムを持つ言語は良いなと感じました(Cのマクロはただの文字列置換ですが、Rustのマクロはparseした結果に触れるみたいです。コードを見てると、ident
やty
の様にidentifierとtypeが明確に区別されていたので、変なミスや予想外の変換が防げて良さそうだと感じました)
Write once, run on every boards: portable mruby by @yurie
Rubyでマイコン上で動くプログラムを書いてるよ、一度書いたプログラムを共通で使えるようにしていこうよってお話でした。 デモでトラブル続出していたので大変そうでした。
Lightning Talks
たくさん発表があって説明しきれないですが、みんな発表のレベルが高いしユーモアセンスもあって面白かったです。LTは自分も挑戦してみたいなーと思いました。
懇親会
mirakuiさん、matzさんみたいな前から話してみたかった方と話せてよかったです。 matzさんには写真まで撮ってもらえて、嬉しかったです。
matzさん
Rubyのeachやブロックはかなり先進的だと以前から思っていたので、どういう経緯で「each
メソッドという発想に至ったのか」みたいな話を聞きました。each的な存在はsmalltalkから着想を得たと言っていて興味深かったです(調べてみたら、smalltalkにはcollection closure methodと呼ばれるメソッド群が存在していて、その中にrubyのeachに相当するdoの他、select, sort などblockを受け取ってcollectionに作用するメソッドが存在することがわかりました。smalltalkすごい)。for
やwhile
みたいなキーワードになってた方がメソッドよりもかなり簡単に最適化出来るはずで、どういう発想でそこに至ったのか気になってたので聞けてよかったです。ついでに、他のプログラミング言語にもiteratorを宣言する構文があった(関数の引数としてiteratorを渡せるようになっていた)という話を聞きましたが、言語の名前は忘れましたw
mirakuiさん
Cookpad CTO 大変ですか、みたいな話をしました(チーム編成、評価制度など)。 海外と国外の開発どう進めてますか、という話も興味があったし自社でも色々考えてる部分なので聞いてみました(海外と国内で大きくシステムを2分してる。海外はその中でさらに国ごとに機能を分けてる、それは料理は地域固有の文化に密接に結びついており、文化ごとに適切な表現や探し方、機能が異なってくるから、そうせざるを得ないと思ってる、など)。やはり、どのサービスも海外展開というと苦労してるんだなー、という印象を持ちました。
2日目総括
発表をたくさん聞けて大満足でした。特に、LTで「もっと長い時間で話せる内容の発表」がたくさんあり、全体のボリュームが割増されていた様に感じます。
RubyKaigi 2017 に行って来ました(1日目)
発表
10:30-11:30: Keynote by @n0kada
https://slide.rabbit-shocker.org/authors/nobu/rubykaigi-2017/
13:00-13:40: Fiber in the 10th year by @ko1
13:50-14:30: How Close is Ruby 3x3 For Production Web Apps? by @noahgibbs
14:40-15:20: Gemification for Ruby 2.5/3.0 by @hsbt
https://www.youtube.com/watch?v=VKm93Mwe__k&feature=youtu.be
15:50-16:30: How to optimize Ruby internal by @watson1978
16:40-17:20: mruby gateway for huge amount of realtime data processing by @naritta
17:30-18:30: Ruby Commiters vs the World
発表感想
Keynote by @n0kada
Rubyコミッターの日常はこんな感じですよ、というお話。 ライブコミットやスライドのライブ編集など、その場にいる事で楽しめるコンテンツが盛り込まれていて、会場で聞くことができてよかったです。Rubyのコードはコアっぽいところはそこそこ読んでるつもりですが、parse.yは複雑すぎて変更が難しくなってると感じます。。。
Fiber in the 10th year by @ko1
Fiberを10年前に作ったけど、意外なところで使われて嬉しかったし、ちょっと微妙な実装だったところを最近直したりしてたよ、みたいなお話でした。 Fiberはコルーチンやサブコルーチンの機能を実現できるので、個人的には結構好きだったりします(https://qiita.com/south37/items/99a60345b22ef395d424 みたいに async/await の実装に使えたりするので面白いです)。
How Close is Ruby 3x3 For Production Web Apps
Rubyが3x3に向けてどれだけ早くなってるかを調べるために、Rails appを対象にしてbenchmarkをとってみたよ、という話。指標は色々あるけど、http requestを捌くthroughputで1.5倍くらい早くなってるとの事。 会社としてこういう取り組みをしてるみたいで、OSSへのモチベーションが高い会社なんだなーと思いました。
Gemification for Ruby 2.5/3.0
Rubyの標準ライブラリをGemに移行して行ってるよ、というお話。狙いとしては、Ruby本体からライブラリを切り離す事で「Ruby本体はバージョンアップできないけど特定のライブラリだけバージョンアップする」みたいな事をやりやすくしたいらしいです。 個人的には、Gemに移行する際に基本的にgithubにレポジトリを作ってるみたいだったので、外からコードが見えやすくなってコントリビュートのハードルが下がりそうなのが好感触でした。
How to optimize Ruby internal
watsonさんが3月頃からRubyにperformance改善のpatchを送り続けていた際に、どういう狙いでどういった変更を行ってたかを話していました。 自分もちょうどその頃Rubyのコードを読んだりRedmineのIssueを見たりGitHubのPRを見たりしていて、watsonさんの怒涛のperformance improvementのpatchも目撃していたので、どういうモチベーションだったのか聞けて良かったです。
mruby gateway for huge amount of realtime data processing
h2oのmruby handlerの中で外部通信を並列で行いたくて、その辺の処理をうまく記述するためにhttp_requestとFiberを組み合わせて書いてたよ、というお話。 僕の中ではFiberは基本的にloopと組み合わせて使う印象で、そのループがおそらくh2oの管理するイベントループなのが興味深かったです(もしかしたら何か勘違いしてるかも)。
Ruby Commiters vs the World
Ruby Commiter が会場のみんなから質問を受け付けて色々答えるセッションです。 EndohさんがCookpadのフルタイムコミッターになりましたっていうニュースの後で始まり、EndohさんがRubyへ型システムを載せようとしてる事から型の議論が熱かったです。matzさんは型を手で書くのはすごく嫌、どうしても入れるならせめて後から消せる形(コメントにメタ情報として記載)で、と言っていて、強い思い入れを感じました。個人的にはcompile時にstaticに型チェックして欲しい気持ちはあり、その為なら多少記述が増えても良いと思う派ですが、そこをテクノロジーで何とか記述させずに済ませたいという気持ちはわかるなーと言うスタンスです。
懇親会
- Rubyコミッターの方とたくさん話せました。
- 以前から話してみたかった人と話せたので、良い体験でした。
Watsonさん
彼の patch を参考にして自分も performance improvement の patch を書いたりしていたので、以前からお話ししてみたかった方でした。どうやって着手する箇所を見つけてるのか気になってましたが、やっぱりコードを端から見ていって直せそうな箇所を直す、というアプローチをとっていたらしいです。(普通のアプリケーションの速度改善なら profile をとってボトルネックを見つけて、という形で performance improvement は行いますが、Watsonさんはばらばらと色々な箇所に着手していたので、profiling とは別のアプローチが必要だよなーと感じていました。)
rheniumさん
自分のpatchのreviewを行なってくれた人で、調べるとすごく若い雰囲気を感じたのでどんな人か気になっていました。話すと、大学3年生らしく、やっぱり若かったです。どういう経緯でRubyコミッターになったのか、みたいな話をしました(openssl本体やopenssl gemにバグがあって修正patchを送っていたら、任命されたらしいです)。
Endohさん
実は2年前のRubyKaigiでお話ししたことがあり、さらに弊社CTOと大学の同級生というちょっとした繋がりもあり、覚えてくださっていて向こうから話しかけてくれました。とても嬉しかったです。Rubyの型システムをどういう形にするかは悩ましいけど、PythonのType Hintsっぽいものが落とし所としてはありえそう、みたいな話をしました。
k0kubunさん
llrbなどが良いアプローチだなーと思っていたので以前からお話ししてみたかった方でした。話しかけたら、向こうも自分を知ってくれていて、嬉しかったです(自分の書いたpatchを彼がスライドで取り上げてくれたことがあって、そこで認知してくれていました)。
Rubyを根本的に早くするにはJITやその中での様々なoptimizeが必要なはずで、while
みたいなキーワードは扱いやすい方だけどeach
みたいなメソッド呼び出しのループは難しいよね(blockのinline化やメソッド再定義された時のdeoptimizeが必要)って話をしたら、「VradがJITに着手していて、『2ヶ月後にはCRubyのJITが作れる』らしいよ」と言っていました。すごいw
Vradimir MakarovさんはRuby 2.4で内部のhash table実装高速化もしていてすごい人なので、期待したいです。
2016年振り返りと2017年に向けて考えている事
あけましておめでとうございます。気がつけば2016年もあっというまに過ぎ去り、2017年になりました。
新年明けたばかりで良い機会なので、2016年にどういう事をしたか、どういう事を考えていたかを振り返った上で、2017年に何をしていきたいか考えてみたいと思います。
2016年の仕事の振り返り
まずは仕事面での振り返りです。
僕は2015年4月から新卒のソフトウェアエンジニアとして働き始めたので、2016年は2年目として過ごす事になりました。
取り組む内容として「ソフトウェア開発というアプローチで『サービスを作る』」という部分は変わりません。ただ、2年間働いて積み重ねてきた事の結果として、取り組む内容や責任を持つ範囲が広がった様に思います。
2016年に取り組んでいたのは、主に「新規サービスの立ち上げ」や「小さく始まったサービスをリニューアルして本格的に始動させる」といった事で、エンジニア2人程度の小さなチームではあるものの、「チームのリーダー」として働く様になりました。
ここで「チームのリーダー」と表現したのは、サービスを開発するチームの技術的選択と人事的な評価に責任を持つのが求められる役割で、いわゆるテックリード+エンジニアリングマネージャーみたいなポジションです。初めての経験なのでどんなものかと思いつつ、最近はこの辺の話題がRebuild.fmのおかげでいろいろ盛り上がっていて参考になる情報も多かったので、手探りながらも取り組んでいました。
その他、弊社では会社の文化として「サービスの成長の為の"取り組み"にもエンジニアが責任を持つ」様にしているのですが、そこにはいつも難しさを感じています。弊社では、開発する機能や施策の決定、その効果に対してエンジニアが責任を持ち、サービスの成長を評価するための数字を目標として設定します。このあたりの取り組みは、過去に別のブログにもまとめました。目標に向けてのアプローチを自分で考える為、やりがいや責任感を強く感じる一方、より良い取り組みは無いだろうかと常に頭を悩ませる事にもなります。アイディアなども重要になって来る上に正解は無く、自由と責任はセットだなーと常に感じています。
「意思決定」という言葉はよく聞くものの、それに伴う「責任」について最近は考える様になりました。
2016年のプライベートの振り返り
プライベートを振り返ると、2016年はずっと本を読んだりコードを読んだりしていた様に思います。
僕はHajime Moritaさんという方を勝手に一方的に尊敬していて、彼のブログやツイート、Podcastでの発言をいつもありがたく読んだり聞いたりします。その中でも彼のRebuild.fm ep127に置ける「実装のアイディア(最適化のアイディア)はOSやプログラミング言語、RDBみたいな昔から研究されてるソフトウェアの実装から盗める」発言を聞いて以来、コードを読むことに対するモチベーションが増しました。これが、本を読んだりコードを読んだりする事に専念していた主な理由の様に感じます。
備忘録も兼ねて、2016年に興味を持ったトピックをリンク付きでまとめて見たいと思います。(どうでも良いコメントですが、自分が読んでいた本や文章を振り返ってみたら、自分の興味の変遷が分かって面白かったです)
プログラミング言語処理系の実装
プログラミング言語処理系には昔から興味があり、言語処理系作成について記述した書籍(言語実装パターンやコンパイラ―原理・技法・ツールなど)を興味ある部分だけつまみ食いしたり、特定の言語処理系について記述した書籍(Ruby under a microscopeなど)を読んだりしていました。
また、オンラインの媒体としては、48時間でSchemeを書こうやLambda Calculus - Write You a Haskelを写経してみたり、8ccのcommitを最初から追いかけて写経してみたりしていました。
Parser の実装
プログラミング言語処理系の実装方法の中でも、自分の中で特に興味があったのは「Parser の実装方法」です。JSONやSQL、汎用プログラミング言語などソフトウェアの至る所でParserは必要になる(情報を表現するにはその情報を表現する為のフォーマットとそのフォーマットから情報を取り出せるParserが必要になる)ものの、ほとんどの場合には既存の実装を用いて済ましてしまう為、自分で興味を持たない限り「どう実装されてるかを知る機会が無い」と感じていました。重要性の割に、自分はちゃんと仕組みを理解してないと感じたのです。
yaccの文法は昔勉強した事があったのですが、「yaccの使い方」が分かっただけで、内部で何をしてるか、あるいは他の方法が無いのかなどが気になってました。
という訳で書籍を読んだりコードを読んだりしてた訳ですが、結果として自分の中で知識が整理されて、すごく良かった様に思います。
まず、「文法」と一言で言っても、その文法のParserの作りやすさ、実行時間はその「文法」に依存します。文法が許すなら、LL(1)再帰下降Parserの様な「入力文字列長に対して線形の実行時間で処理できる」Parserを作ることができます。LL(1)再帰下降Parserはまた、1字先読みでdispatchすれば良いのでコードも読みやすく、手で書くのも簡単だったりします(JSON Parser くらいなら、自分で書く事も簡単にできます。まあ、僕の実装はmatchの判定しかしない&色々バグはあるんですが。。。)
一方、複雑な文法になると「固定長先読み再帰下降Parser」では次にmatchする文法規則は決定出来ず、matchを試して失敗したらバックトラックしてまた別の文法規則でのマッチを試して、、、といった動作が必要になります。この様にバックトラックが入ると、メモ化などをしない限り実行時間が入力文字列長に対して 指数関数的 に増大し、実装も複雑になります。その為、文法をどう設計するかはparserの実装に対して重要な意味を持ちます。
再帰下降Parserもバックトラックなどが入ると自分で一から書くのは大変になる為、parser generatorを利用したり、parser combinatorなどのライブラリを利用したりします。また、ボトムアップなparseを行う手法(LR法)もあったり、その為のparser generator(yacc など)を利用したりも出来ます。
parser generatorが何をやってるか、また自分でparserをイチから書くならどう書くか、parseが簡単な文法というのはどういったものか、parserを書く為に利用できるツールやライブラリにどういったものがあるか、といった事について自分の中で知識が整理されたので、スッキリしました。
正規表現エンジンの実装
正規表現エンジンの実装は昔から興味があったのですが、正規表現技術入門 がすごく勉強になりました。オートマトン理論ベースの実装とVMベースの実装の概念とコードがどちらも詳しく解説されていて、読むと正規表現エンジンに対する理解が深まりました。
計算理論の話
Parserや正規表現エンジンの勉強をしていたらだんだんオートマトンやチューリングマシンに対してしっかりした理解をしておきたいと考える様になり、一時期計算理論の基礎を読んでいました。個人的に一番良かったのは非決定性に対する理解が深まった事だと思います。以前までNPの説明がイマイチピンと来てなかったのですが、非決定性チューリングマシンの動作やツリー状の探索パスがイメージできる様になった事で、しっくり来る様になりました。
変化に強いシステムを作る方法
仕事をする様になると「大きなコードベースに触れる機会」が増加し、コードを整理して「変化に強い状態を保つ重要性」を実感する様になりました。その為のテクニックには様々なものがありますが、特に同僚にオススメされたオブジェクト指向のこころという書籍が「デザインパターンというアプローチで変化に強いシステムを作る方法」を大変わかりやすくまとめていて、良い本だなーと思いながら読んでいました。個別のパターン以上に、「インターフェース・集約の利用、流動的要素のカプセル化」みたいな原則とその理由がまとまってるのが良かったです。
Concurrency
ムーアの法則の終焉が噂される現代において、Concurrencyの重要性は高まり続けています。しっかりと理解しておきたいと考えて、Concurrencyにも興味を持っていました。
Concurrency を実現しようと考えた時、最も一般的な方法はthreadを利用する事です。特にマルチコアを並列で動かそうと思うとカーネルthread(ここではgreen threadと違いカーネルにschedulingされるthreadという意味でこの用語を用いています。Unixであればpthreadを意味してます。)の利用が必要で、pthreadの利用方法についてインターネットサーバでのPthreadとepollやPthreadsプログラミングを読んだりしていました。
また、その他のConcurrencyのプリミティブ、特に有名なのはEarlangのアクターやGoのgoroutineですが、それぞれの利用方法に加えて、どう実現されているのか、特にschedulerの実装がどうなっているかを解説した記事(How Erlang does schedulingやThe Go scheduler)を読んだりもしてました。どちらもカーネルthreadをうまく利用してマルチコアを活用してくれるので、とても便利な道具だと思います。data raceやrace conditionといったthread programmingの複雑さに生身で立ち向かうのは辛いので、これらの抽象化はうまく活用したいです。
ちなみに、concurrency primitiveには他にも色々なものが存在しているらしく、Concurrent Programming for Scalable Web Architecturesの5章が良い感じにまとまっていました。通して読めてはいないですが、興味深いと思ってます。
分散システム
コアレベルでの並列化に加えて、マシンレベルでの並列化の重要性も高まっています。計算リソースの確保という意味ではHadoopやSparkが、またデータベースの地理的な分散や可用性の確保、書き込みのスケーラビリティの実現という意味ではCassandraなどがオープンソースの分散システムとして注目されていると思います。
自分はkuenishiさんのブログを読んで分散システム自体には興味を持っていたものの、具体例を知らないためにイマイチ理解できていませんでした。そこで一念発起してCassandraを読んで見たのですが、これがとても良い本でした。
まず、自分の中であやふやだった知識が明確になりました。結果一貫性、因果一貫性、強一貫性といった用語の明確な定義(読み込み時に、最新の書き込み結果を反映している事を保証するかどうかが違う)、CAP定理が意味する事、Cassandraがネットワーク分断時にどういった動作をするのか、コントロール可能な一貫性とはどういう事か、そういった事について理解を深める事ができました。それらはまた、分散システムの複雑さに Cassandra がどう立ち向かっているかについての理解でもあって、具体的な例を知れたのはとても良かったです(今後、別のシステムの説明を見たときの比較対象になるので)。
ちなみに、Cassandraは他のNoSQLや内部の細かいアルゴリズムの説明もしたりしていて、内容がとても充実していたのも魅力的でした。
その他、興味深かった本
Unix考古学という本を気まぐれで読んでいたのですが、これがかなり面白かったです。UnixやC言語が生まれる時代的背景も興味深いですし、Unixベンダーが1980年代後半に争っていた話なども噂でしか知らなかったので面白かったです。
ピクサー流 創造するちからという本もかなり良かったです。これは、ピクサー、ディズニー社長のエド・キャットムルが映画制作というクリエイティブな作業を行うチームをどう作りあげてきたか、またどういう取り組みをしてきたかをまとめた本なのですが、エドが「常によく考え続けてる」ことを強く感じる本となっています。
個人的に強く印象に残ったのは、「ピクサーで作られるどんな映画も、作り始めた段階では例外なく駄作」という話です。彼らは毎回挑戦をするからこそ最初はひどい出来で、しかしそこから何度も何度も修正を加え続けるからこそ「素晴らしい映画」を作り上げられる事、それを経験からくる実感と共に語っているのが興味深かったです。映画制作の最中には「どうしようもないと行き詰まるタイミングが必ずやって来る」というのも、それを何度も経験して乗り越えてきたからこそ言える事だと思います。その為のプロセスを確立していて、プロセスやチームを信じられるというのもすごい話だと思いました。
2016年振り返りまとめと2017年の取り組み
2016年は「知りたい事、興味のある事についてちゃんと理解を深めよう」と思って過ごしていました。それはそれで学ぶことが多くて良かったのですが、一方で本を読んだりコードを読んでそのまま満足してしまうケースが多すぎた様に感じています。
2017年は、コードを書く事、特にそれをpublicにする事を強く意識していきたいと思っています。OSSへの貢献などは、興味がありつつも全く出来てない分野なので、取り組みたいと思っています。
仕事面では、取り組んでる内容に習熟することに加えて、「責任」というものとの付き合い方にも慣れていきたいと思っています。
2015年、2016年に買った技術書105冊
僕は技術書を買ったり読んだりするのが好きです。昨年4月からソフトウェアエンジニアとして働き始めて、学生の頃に比べると経済的に余裕が出来たため、技術書を買うペースが飛躍的に上昇しました。
もはや自分でも何を持っているのか、何冊持っているのかが分からなくなってきていたので、リストアップして数えてみました。
数えた結果
2015年、2016年に買った本は105冊でした。以下がその内容です。思ったよりも多かったです。
並べてみるとなかなか面白くて、同一ジャンルのものも何冊か買ってます。同じものについての説明でも別の観点があったり、あるいは説明の分かりやすさ自体が異なったりするので、個人的には意味があるんじゃないかと思ってます。
積読もあるので、今後も読み進めて行こうと思っています。
2015, 2016年に買った技術書
- 作者: Peter J.Jones
- 出版社/メーカー: 翔泳社
- 発売日: 2015/01/19
- メディア: Kindle版
- この商品を含むブログ (4件) を見る
- 作者: 馬場俊彰(ハートビーツ)
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/12/27
- メディア: Kindle版
- この商品を含むブログを見る
[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)
- 作者: 安井真伸,横川和哉,ひろせまさあき,伊藤直也,田中慎司,勝見祐己
- 出版社/メーカー: 技術評論社
- 発売日: 2008/08/07
- メディア: 単行本(ソフトカバー)
- 購入: 133人 クリック: 2,270回
- この商品を含むブログ (289件) を見る
ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化
- 作者: Ilya Grigorik,和田祐一郎,株式会社プログラミングシステム社
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/05/16
- メディア: 大型本
- この商品を含むブログ (3件) を見る
- 作者: Josh Carter,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/08/22
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 79回
- この商品を含むブログ (26件) を見る
インフラエンジニア教本 ~ネットワーク構築技術解説 (Software Design 別冊)
- 作者: 編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2014/12/05
- メディア: 大型本
- この商品を含むブログ (2件) を見る
- 作者: Simon Marlow,山下伸夫,山本和彦,田中英行
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/08/21
- メディア: 大型本
- この商品を含むブログ (2件) を見る
詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識
- 作者: Gary Bradski,Adrian Kaehler,松田晃一
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/08/24
- メディア: 単行本(ソフトカバー)
- 購入: 17人 クリック: 272回
- この商品を含むブログ (35件) を見る
新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)
- 作者: Martin Fowler,児玉公信,友野晶夫,平澤章,梅澤真史
- 出版社/メーカー: オーム社
- 発売日: 2014/07/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (10件) を見る
- 作者: Daniel P. Bovet,Marco Cesati,高橋浩和,杉田由美子,清水正明,高杉昌督,平松雅巳,安井隆宏
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/02/26
- メディア: 大型本
- 購入: 9人 クリック: 269回
- この商品を含むブログ (70件) を見る
Amazon Web Services実践入門 (WEB+DB PRESS plus)
- 作者: 舘岡守,今井智明,永淵恭子,間瀬哲也,三浦悟,柳瀬任章
- 出版社/メーカー: 技術評論社
- 発売日: 2015/11/10
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
make 改訂版 (A nutshell handbook)
- 作者: Andrew Oram,Steve Talbott,矢吹道郎,菊池彰
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 1997/07/01
- メディア: 大型本
- 購入: 2人 クリック: 36回
- この商品を含むブログ (28件) を見る
コードコンプリート―完全なプログラミングを目指して (Microsoft PRESS)
- 作者: スティーブマコネル,Steve McConnell,石川勝
- 出版社/メーカー: アスキー
- 発売日: 1994/08
- メディア: 単行本
- 購入: 1人 クリック: 16回
- この商品を含むブログ (22件) を見る
オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
- 作者: アラン・シャロウェイ,ジェームズ・R・トロット,村上雅章
- 出版社/メーカー: 丸善出版
- 発売日: 2014/03/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
- 作者: Michael Sipser,太田和夫,田中圭介,阿部正幸,植田広樹,藤岡淳,渡辺治
- 出版社/メーカー: 共立出版
- 発売日: 2008/05/21
- メディア: 単行本
- 購入: 6人 クリック: 68回
- この商品を含むブログ (28件) を見る
- 作者: Michael Sipser,太田和夫,田中圭介,阿部正幸,植田広樹,藤岡淳,渡辺治
- 出版社/メーカー: 共立出版
- 発売日: 2008/05/21
- メディア: 単行本
- 購入: 4人 クリック: 23回
- この商品を含むブログ (15件) を見る
- 作者: Michael Sipser,太田和夫,田中圭介,阿部正幸,植田広樹,藤岡淳,渡辺治
- 出版社/メーカー: 共立出版
- 発売日: 2008/05/21
- メディア: 単行本
- 購入: 4人 クリック: 34回
- この商品を含むブログ (17件) を見る
- 作者: 藤田昭人
- 出版社/メーカー: KADOKAWA
- 発売日: 2016/04/28
- メディア: 単行本
- この商品を含むブログ (6件) を見る
- 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/10
- メディア: 単行本
- 購入: 21人 クリック: 711回
- この商品を含むブログ (210件) を見る
言語設計者たちが考えること (THEORY/IN/PRACTICE)
- 作者: Federico Biancuzzi,Shane Warden,伊藤真浩,頃末和義,佐藤嘉一,鈴木幸敏,村上雅章
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/09/27
- メディア: 大型本
- 購入: 11人 クリック: 411回
- この商品を含むブログ (52件) を見る
- 作者: デビッド・アレン,田口元
- 出版社/メーカー: 二見書房
- 発売日: 2015/11/26
- メディア: 単行本
- この商品を含むブログ (3件) を見る
Binary Hacks ―ハッカー秘伝のテクニック100選
- 作者: 高林哲,鵜飼文敏,佐藤祐介,浜地慎一郎,首藤一幸
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/11/14
- メディア: 単行本(ソフトカバー)
- 購入: 23人 クリック: 383回
- この商品を含むブログ (223件) を見る
Debug Hacks -デバッグを極めるテクニック&ツール
- 作者: 吉岡弘隆,大和一洋,大岩尚宏,安部東洋,吉田俊輔
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/04/27
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 419回
- この商品を含むブログ (73件) を見る
はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)
- 作者: 青柳隆宏
- 出版社/メーカー: 技術評論社
- 発売日: 2013/01/09
- メディア: 単行本(ソフトカバー)
- 購入: 56人 クリック: 1,959回
- この商品を含むブログ (29件) を見る
ソフトウェアの世界でキャリアを築く Making it Big in Software
- 作者: サムライトストーン,Sam Lightstone,吉平健治
- 出版社/メーカー: オーム社
- 発売日: 2012/04/25
- メディア: 単行本
- 購入: 3人 クリック: 10回
- この商品を含むブログ (1件) を見る
Effective Modern C++ ―C++11/14プログラムを進化させる42項目
- 作者: Scott Meyers,千住治郎
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/09/18
- メディア: 大型本
- この商品を含むブログ (7件) を見る
正規表現技術入門 ――最新エンジン実装と理論的背景 (WEB+DB PRESS plus)
- 作者: 新屋良磨,鈴木勇介,高田謙
- 出版社/メーカー: 技術評論社
- 発売日: 2015/04/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際
- 作者: Jon Erickson,村上雅章
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/10/22
- メディア: 単行本(ソフトカバー)
- 購入: 9人 クリック: 163回
- この商品を含むブログ (19件) を見る
- 作者: Benjamin C. Pierce,住井英二郎,遠藤侑介,酒井政裕,今井敬吾,黒木裕介,今井宜洋,才川隆文,今井健男
- 出版社/メーカー: オーム社
- 発売日: 2013/03/26
- メディア: 単行本(ソフトカバー)
- クリック: 68回
- この商品を含むブログ (11件) を見る
- 作者: Bradford Nichols,Dick Buttlar,Jacqueline Proulx Farrel,榊正憲
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 1998/05/01
- メディア: 大型本
- 購入: 4人 クリック: 52回
- この商品を含むブログ (21件) を見る
きつねさんでもわかるLLVM ~コンパイラを自作するためのガイドブック~
- 作者: 柏木餅子,風薬
- 出版社/メーカー: インプレスジャパン
- 発売日: 2013/06/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
Sparkによる実践データ解析 ―大規模データのための機械学習事例集
- 作者: Sandy Ryza,Uri Laserson,Sean Owen,Josh Wills,石川有,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/01/23
- メディア: 大型本
- この商品を含むブログ (4件) を見る
- 作者: 高橋浩和,小田逸郎,山幡為佐久
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/11/18
- メディア: 単行本
- 購入: 14人 クリック: 197回
- この商品を含むブログ (119件) を見る
アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技
- 作者: ロバート・C・マーチン,Robert C. Martin,瀬谷啓介
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2008/07/01
- メディア: 単行本
- 購入: 18人 クリック: 586回
- この商品を含むブログ (71件) を見る
- 作者: Joe Armstrong,榊原一矢
- 出版社/メーカー: オーム社
- 発売日: 2008/02/23
- メディア: 単行本(ソフトカバー)
- 購入: 8人 クリック: 284回
- この商品を含むブログ (97件) を見る
- 作者: Fred Hebert
- 出版社/メーカー: オーム社
- 発売日: 2014/08/11
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: アイリーンフリッシュ,AEleen Frisch,飯塚正樹,下田みどり
- 出版社/メーカー: オライリージャパン
- 発売日: 2003/07
- メディア: 単行本
- 購入: 1人 クリック: 18回
- この商品を含むブログ (14件) を見る
- 作者: アイリーンフリッシュ,AEleen Frisch,飯塚正樹,下田みどり
- 出版社/メーカー: オライリージャパン
- 発売日: 2003/08
- メディア: 単行本
- 購入: 1人 クリック: 15回
- この商品を含むブログ (9件) を見る
UI GRAPHICS ―世界の成功事例から学ぶ、スマホ以降のインターフェイスデザイン
- 作者: 水野勝仁,深津貴之,渡邊恵太,菅俊一,緒方壽人,iA,鹿野護,森田考陽,庄野祐輔,塚田有那
- 出版社/メーカー: ビー・エヌ・エヌ新社
- 発売日: 2015/12/17
- メディア: 単行本
- この商品を含むブログ (2件) を見る
- 作者: Tom White,Sky株式会社玉川竜司,兼田聖士
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/07/26
- メディア: 大型本
- この商品を含むブログ (4件) を見る
- 作者: Flavio Junqueira,Benjamin Reed,中田秀基
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/10/08
- メディア: 大型本
- この商品を含むブログ (1件) を見る
アート・オブ・プロジェクトマネジメント ―マイクロソフトで培われた実践手法 (THEORY/IN/PRACTICE)
- 作者: Scott Berkun,村上雅章
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2006/09/07
- メディア: 単行本(ソフトカバー)
- 購入: 20人 クリック: 361回
- この商品を含むブログ (185件) を見る
- 作者: Sam Newman,佐藤直生,木下哲也
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/02/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)
- 作者: 矢野啓介
- 出版社/メーカー: 技術評論社
- 発売日: 2010/02/18
- メディア: 単行本(ソフトカバー)
- 購入: 34人 クリック: 578回
- この商品を含むブログ (130件) を見る
- 作者: マーシャル・カークマキュージック,マイケルカレルズ,キースボスティック,ジョンクォーターマン,Marshall Kirk McKusick,Michael J. Karels,Keith Bostic,John S. Quarterman,砂原秀樹,七丈直弘
- 出版社/メーカー: アスキー
- 発売日: 2003/09
- メディア: 単行本
- 購入: 4人 クリック: 9回
- この商品を含むブログ (13件) を見る
- 作者: ブライアンカーニハン,ロブパイク,Brian Kernighan,Rob Pike,福崎俊博
- 出版社/メーカー: アスキー
- 発売日: 2000/11
- メディア: 単行本
- 購入: 58人 クリック: 1,152回
- この商品を含むブログ (209件) を見る
並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング
- 作者: Clay Breshears,千住治郎
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/12/21
- メディア: 大型本
- 購入: 12人 クリック: 598回
- この商品を含むブログ (38件) を見る
Coders at Work プログラミングの技をめぐる探求
- 作者: Peter Seibel,青木靖
- 出版社/メーカー: オーム社
- 発売日: 2011/05/25
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 360回
- この商品を含むブログ (36件) を見る
コンパイラ―原理・技法・ツール (Information & Computing)
- 作者: A.V.エイホ,R.セシィ,J.D.ウルマン,M.S.ラム,Alfred V. Aho,Jeffery D. Ullman,Ravi Sethi,Monica S. Lam,原田賢一
- 出版社/メーカー: サイエンス社
- 発売日: 2009/06
- メディア: 単行本
- 購入: 1人 クリック: 128回
- この商品を含むブログ (29件) を見る
言語実装パターン ―コンパイラ技術によるテキスト処理から言語実装まで
- 作者: Terence Parr,中田育男,伊藤真浩
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/12/24
- メディア: 大型本
- 購入: 5人 クリック: 333回
- この商品を含むブログ (13件) を見る
- 作者: Dimitri Aivaliotis,高橋基信
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/10/26
- メディア: 大型本
- この商品を含むブログ (7件) を見る
- 作者: 松木雅幸,mattn,藤原俊一郎,中島大一,牧大輔,鈴木健太
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/09
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: Mat Ryer,鵜飼文敏,牧野聡
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/01/22
- メディア: 大型本
- この商品を含むブログ (2件) を見る
Rubyのしくみ -Ruby Under a Microscope-
- 作者: Pat Shaughnessy,島田浩二,角谷信太郎
- 出版社/メーカー: オーム社
- 発売日: 2014/11/29
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
インターネット・バイ・デザイン: 21世紀のスマートな社会・産業インフラの創造へ
- 作者: 江崎浩
- 出版社/メーカー: 東京大学出版会
- 発売日: 2016/06/22
- メディア: 単行本
- この商品を含むブログを見る
- 作者: Cricket Liu,Paul Albitz,小柏伸夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/12/08
- メディア: 大型本
- 購入: 5人 クリック: 34回
- この商品を含むブログ (17件) を見る
実践 パケット解析 第2版 ―Wiresharkを使ったトラブルシューティング
- 作者: Chris Sanders,高橋基信,宮本久仁男,岡真由美
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/11/17
- メディア: 大型本
- 購入: 1人 クリック: 10回
- この商品を含むブログ (9件) を見る
OpenSSH[実践]入門 (Software Design plus)
- 作者: 川本安武
- 出版社/メーカー: 技術評論社
- 発売日: 2014/11/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
[増補改訂]関数プログラミング実践入門 ──簡潔で、正しいコードを書くために (WEB+DB PRESS plus)
- 作者: 大川徳之
- 出版社/メーカー: 技術評論社
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
アンダースタンディング コンピュテーション ―単純な機械から不可能なプログラムまで
- 作者: Tom Stuart,笹田耕一,笹井崇司
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/09/18
- メディア: 大型本
- この商品を含むブログ (10件) を見る
- 作者: Mike Gancarz,芳尾桂
- 出版社/メーカー: オーム社
- 発売日: 2001/02
- メディア: 単行本
- 購入: 40人 クリック: 498回
- この商品を含むブログ (143件) を見る
シェルプログラミング実用テクニック (Software Design plus)
- 作者: 上田隆一,USP研究所
- 出版社/メーカー: 技術評論社
- 発売日: 2015/05/15
- メディア: 大型本
- この商品を含むブログ (7件) を見る
プロダクティブ・プログラマ -プログラマのための生産性向上術 (THEORY/IN/PRACTICE)
- 作者: Neal Ford,島田浩二(監訳),夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/04/27
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 242回
- この商品を含むブログ (101件) を見る
ビューティフルコード (THEORY/IN/PRACTICE)
- 作者: Brian Kernighan,Jon Bentley,まつもとゆきひろ,Andy Oram,Greg Wilson,久野禎子,久野靖
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/04/23
- メディア: 大型本
- 購入: 30人 クリック: 617回
- この商品を含むブログ (190件) を見る
Beautiful Architecture: Leading Thinkers Reveal the Hidden Beauty in Software Design
- 作者: Diomidis Spinellis,Georgios Gousios
- 出版社/メーカー: O'Reilly Media
- 発売日: 2009/01/15
- メディア: Kindle版
- この商品を含むブログを見る
SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)
- 作者: ミック
- 出版社/メーカー: 技術評論社
- 発売日: 2015/04/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (7件) を見る
- 作者: 青木峰郎
- 出版社/メーカー: アスキー
- 発売日: 2001/02
- メディア: 単行本
- 購入: 4人 クリック: 44回
- この商品を含むブログ (57件) を見る
あなたの知らないところでソフトウェアは何をしているのか? ―映画やゲームのグラフィックス、データ検索、暗号化、セキュリティー、データ圧縮、ルート探索……華やかな技術の裏でソフトウェアがしていること
- 作者: V. Anton Spraul,原隆文
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/05/18
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
- 作者: ジョンマコーミック
- 出版社/メーカー: 日経BP社
- 発売日: 2013/10/10
- メディア: Kindle版
- この商品を含むブログ (6件) を見る
APIデザインケーススタディ ~Rubyの実例から学ぶ。問題に即したデザインと普遍の考え方 (WEB+DB PRESS plus)
- 作者: 田中哲
- 出版社/メーカー: 技術評論社
- 発売日: 2015/12/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (6件) を見る
- 作者: Eben Hewitt,大谷晋平,小林隆
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/12/24
- メディア: 大型本
- 購入: 1人 クリック: 170回
- この商品を含むブログ (7件) を見る
電子書籍で買った本
ワーク・シフト ― 孤独と貧困から自由になる働き方の未来図〈2025〉
- 作者: リンダ・グラットン,池村千秋
- 出版社/メーカー: プレジデント社
- 発売日: 2012/07/28
- メディア: ハードカバー
- 購入: 17人 クリック: 476回
- この商品を含むブログ (128件) を見る
- 作者: Dave Thomas,笹田耕一,鳥井雪
- 出版社/メーカー: オーム社
- 発売日: 2016/08/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
自作エミュレータで学ぶx86アーキテクチャ コンピュータが動く仕組みを徹底理解!
- 作者: 内田公太,上川大介
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/08/28
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: リチャード・ジョーンズ,アントニー・ホスキング,エリオット・モス
- 出版社/メーカー: 翔泳社
- 発売日: 2016/03/14
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
- 作者: リー・コープランド,宗雅彦
- 出版社/メーカー: 日経BP社
- 発売日: 2005/11/03
- メディア: 単行本
- 購入: 24人 クリック: 539回
- この商品を含むブログ (51件) を見る
ピクサー流 創造するちから―小さな可能性から、大きな価値を生み出す方法
- 作者: エド・キャットムル著,エイミー・ワラス著,石原薫訳
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2014/10/03
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
- 作者: ケントベック,シンシアアンドレス,Kent Beck,Cynthia Andres,角征典
- 出版社/メーカー: オーム社
- 発売日: 2015/06/26
- メディア: 単行本
- この商品を含むブログ (6件) を見る
- 作者: ジョン・ソンメズ,まつもとゆきひろ(解説),長尾高弘
- 出版社/メーカー: 日経BP社
- 発売日: 2016/05/20
- メディア: 単行本
- この商品を含むブログ (6件) を見る
- 作者: 平澤章
- 出版社/メーカー: 日経BP社
- 発売日: 2011/04/07
- メディア: 単行本
- 購入: 6人 クリック: 92回
- この商品を含むブログ (19件) を見る
- 作者: 山崎大助
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2013/03/28
- メディア: 大型本
- この商品を含むブログ (3件) を見る
モダンC言語プログラミング 統合開発環境、デザインパターン、エクストリーム・プログラミング、テスト駆動開発、リファクタリング、継続的インテグレーションの活用
- 作者: 花井志生
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2013/10/01
- メディア: 大型本
- この商品を含むブログ (4件) を見る
- 作者: 大和田尚孝,日経コンピュータ
- 出版社/メーカー: 日経BP社
- 発売日: 2009/01/22
- メディア: 単行本
- 購入: 24人 クリック: 345回
- この商品を含むブログ (45件) を見る
新装改訂版 Linuxのブートプロセスをみる (アスキー書籍)
- 作者: 白崎博生
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/10/02
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
チームが機能するとはどういうことか――「学習力」と「実行力」を高める実践アプローチ
- 作者: エイミー・C・エドモンドソン,Amy C. Edmondson,野津智子
- 出版社/メーカー: 英治出版
- 発売日: 2014/05/24
- メディア: 単行本
- この商品を含むブログ (3件) を見る
エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)
- 作者: マーチン・ファウラー,長瀬嘉秀,株式会社テクノロジックアート
- 出版社/メーカー: 翔泳社
- 発売日: 2005/04/21
- メディア: 大型本
- 購入: 10人 クリック: 635回
- この商品を含むブログ (143件) を見る
- 作者: ブラッド・ストーン,滑川海彦,井口耕二
- 出版社/メーカー: 日経BP社
- 発売日: 2014/01/08
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (22件) を見る
- 作者: ジム・コリンズ,ジェリー・I.ポラス,山岡洋一
- 出版社/メーカー: 日経BP社
- 発売日: 1995/09/26
- メディア: 単行本
- 購入: 33人 クリック: 196回
- この商品を含むブログ (276件) を見る
世界で闘うプロダクトマネジャーになるための本 トップIT企業のPMとして就職する方法
- 作者: Gayle Laakmann McDowell,Jackie Bavaro
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/08/22
- メディア: Kindle版
- この商品を含むブログを見る
エンジニアとして世界の最前線で働く選択肢 ?渡米・面接・転職・キャリアアップ・レイオフ対策までの実践ガイド
- 作者: 竜盛博
- 出版社/メーカー: 技術評論社
- 発売日: 2015/10/08
- メディア: Kindle版
- この商品を含むブログ (4件) を見る
世界で闘うプログラミング力を鍛える150問 ~トップIT企業のプログラマになるための本~
- 作者: Gayle Laakmann McDowell,秋葉拓哉,岩田陽一,北川宜稔,Ozy
- 出版社/メーカー: マイナビ
- 発売日: 2012/11/13
- メディア: 単行本(ソフトカバー)
- 購入: 143人 クリック: 7,806回
- この商品を含むブログ (51件) を見る
- 作者: 伊橋正義,原田勝憲
- 出版社/メーカー: リクルートテクノロジーズ
- 発売日: 2014/04/01
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: 安宅和人
- 出版社/メーカー: 英治出版
- 発売日: 2014/09/01
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
- 作者: まつもとゆきひろ
- 出版社/メーカー: 日経BP社
- 発売日: 2012/05/17
- メディア: 単行本
- 購入: 4人 クリック: 99回
- この商品を含むブログ (12件) を見る
- 作者: 若山史郎
- 発売日: 2014/07/30
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
- 作者: DrewNeil,新丈径
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/01/28
- メディア: Kindle版
- この商品を含むブログ (4件) を見る
- 作者: 木本雅彦,松山直道,稲島大輔
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
- 作者: Josiah L. Carlson,長尾高弘
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2013/12/27
- メディア: 大型本
- この商品を含むブログ (4件) を見る
- 作者: 岡谷貴之
- 出版社/メーカー: 講談社
- 発売日: 2015/04/08
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (12件) を見る
イノベーションのジレンマ―技術革新が巨大企業を滅ぼすとき (Harvard business school press)
- 作者: クレイトン・クリステンセン,玉田俊平太,伊豆原弓
- 出版社/メーカー: 翔泳社
- 発売日: 2001/07
- メディア: 単行本
- 購入: 59人 クリック: 811回
- この商品を含むブログ (393件) を見る
アカマイ 知られざるインターネットの巨人<アカマイ> (角川EPUB選書)
- 作者: 小川晃通
- 出版社/メーカー: KADOKAWA / メディアファクトリー
- 発売日: 2014/08/11
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
高速スケーラブル検索エンジン ElasticSearch Server (アスキー書籍)
- 作者: Rafal Kuc (lにストローク符号、cにアクサン・テギュ付く),Marek Rogozinski (nにアクサン・テギュ付く)
- 出版社/メーカー: KADOKAWA / アスキー・メディアワークス
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
Yコンビネーター シリコンバレー最強のスタートアップ養成スクール
- 作者: ランダル・ストロス,滑川海彦,高橋信夫,TechCrunch Japan翻訳チーム
- 出版社/メーカー: 日経BP社
- 発売日: 2013/04/25
- メディア: 単行本
- クリック: 14回
- この商品を含むブログ (15件) を見る
- 作者: ラズロ・ボック,鬼澤 忍,矢羽野 薫
- 出版社/メーカー: 東洋経済新報社
- 発売日: 2015/07/31
- メディア: 単行本
- この商品を含むブログ (8件) を見る
- 作者: ピーター・ティール,ブレイク・マスターズ,瀧本哲史,関美和
- 出版社/メーカー: NHK出版
- 発売日: 2014/09/25
- メディア: 単行本
- この商品を含むブログ (22件) を見る
内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)
- 作者: 勝俣智成,佐伯昌樹,原田登志
- 出版社/メーカー: 技術評論社
- 発売日: 2014/09/04
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
「題名だけ知ってた小説」を読み始めた
突然ですが、先週くらいから「題名だけ知ってて気になってた小説」を読み始めました。
きっかけはテッド・チャンの「あなたの人生の物語」というSFです。 これはSFの短編集で、特に理由もなく気まぐれに買ってみただけなのですが、普段全くSFを読まない自分でも面白く感じられました。「もしかしてSFって面白いんじゃないか」と思い、その勢いで他の「題名だけ知ってて気になってた本」も買い始めた次第です。
とりあえず4冊くらい読んだので、ちょろっと書評を書いてみたいと思います。ただ、ネタバレは無い方が良いと思うので、本当に簡単な感想です。
あなたの人生の物語
8つの短編が載っているSF短編集です。どれも興味深い世界観であり、それが「ただ現実に起きたことを記述しているだけ」の様に描かれています。毎話、「次はどんな世界の日常が描かれるんだろう」とワクワクしながら読めました。
実は、最初の1編目を読んだ時は楽しみ方が分からなかったんですが、途中から「描かれた世界観そのものを楽しめば良い」んだと気がついて、それからグッと面白くなりました。
自分も著者のテッド・チャンと同様に「物理」と「コンピュータ科学」がバックグラウンドにあるので(大学院まで物理を学び、コンピュータ科学は独学&仕事で触れているので)、「知識として知っているもの」や「知識として知っているがテッド・チャンとは解釈が違うもの」なんかが出てきたのも楽しめたポイントでした。
Amazon やその他のレビューサイトでかなり評価が高く若干自分の中のハードルが上がっていたのですが、それをきちんと超えてきてくれた様に思います。
幼年期の終わり
SFの古典として有名な本です(古典というと怒られるかも。書かれたのが1953年なので、そこまで古くはないです)。
実は粗筋は知っていたのでストーリーに驚きは無かったのですが、個人的には「高い知性」というものの描かれ方が興味深かったです。
「高い知性」をどう記述するかという事については、「全てがFになる」という本を読んだ時もちょっと考えたので、後でまとめて考えを述べたいと思います。
アンドロイドは電気羊の夢を見るか?
1968年に書かれたSF。タイトルにやけに聞き覚えがあって、内容を全然知らないまま買いました。どこでタイトルを聞いたんだろう?
この本は、描かれる世界観がかなり自分好みでした。調べてみたら、著者のフィリップ・K・ディックが「個性的な世界観」で有名な人みたいです(昔映画で見たマイノリティ・リポートなんかもこの人の作品でした)。
自分は、どうも「自分が今持ってる常識や自分の世界に対する捉え方」と全く異なった"常識"が描かれる事に、面白さを感じる様です。何が正しいか分からなくなる感覚を味わったり、「あり得たかもしれない別の物語」を想像したりして、なかなかに楽しめました。
すべてがFになる
森博嗣という日本の作家さんの本です。SFではないですが(分類するならミステリ)、ずっと気になってたので読んでみました。
自分が理系の学生として大学、大学院を過ごしているので、描写を見て色々懐かしい気持ちになりました(年1回の研究室旅行の事や、研究所で実験をしていた頃の事を思い出しました)。著者は大学で助教授を勤めていたらしく、大学運営の手続きを揶揄する描写は「自身の本音を書いてる」様に感じたのも面白かったです。実際、大学の教員の仕事の量は壮絶だと思うので。。。(自分の研究室の助教も大変そうでした)
お話も面白かったですし、登場人物が魅力的でした。犀川先生は良いですね。
この本でも、「幼年期の終わり」の様に「高い知性」というものが描かれます。ただ、その描かれ方がちょっと違っていて、そこも興味深い点でした。
「高い知性」について
ここで、ちょっとだけ「高い知性」について考えてみたいと思います。人は、どんなものを「高い知性」と考えるのでしょうか?また、普通の人間の知性では理解が及ばないほどの「高い知性」というのは存在し得るのでしょうか?
高い知性の描写には色々な形があります。膨大な知識量、高い記憶力、素早く広範囲な言語習得、甚大な語彙力、圧倒的な計算速度、そして常軌を逸した思考回路。こういったものを目にした時、人々は「知性」を感じるようです。
では、なぜ「知性」を感じるのでしょうか?1つの仮説としては、「自身に出来ないこと」が出来るのがポイントかもしれません。もし、自身では一生かかっても獲得できない様な知識量を持つ人物を目にしたら、きっと僕も「高い知性を持つ人」だと感じると思います。
あるいは、上記に挙げた「普通の人の延長線上にある知性(量的な変化によってもたらされる知性)」だけでなく、「質的に異なる知性」というのも存在するかもしれません。それは、そういったものを目にしてない僕には想像もつきませんが、その存在を否定する事はできません。また、量的な変化によって質的な変化がもたらされる事も十分に考えられます(物性物理業界の有名な格言に、"More is different" という言葉があります。これはざっくりいうと「量的な変化が質的な変化をもたらす」みたいな意味合いなのですが、適用範囲が幅広い上に納得感があり、さらに現実に起きていることを言い表していて、自分の好きな言葉です。今回のケースにも当てはまるかもしれません。)
書評からは脱線しちゃいましたが、「高い知性」の描写には作家ごとに個性が現れるので、なかなか面白いと思います。
まとめ
という事で、最近「題名だけ知ってて気になってた小説」を買い始めたという話でした。
物語自体を楽しめますし、「気になってたことが分かってスッキリ」する感覚も味わえたので、やってよかったと思います。
おまけ: 「買ったけどまだ読んでない本」と「これから買おうとしてる本」について
とりあえず、題名を知ってて目についた本を買ったり欲しい物リストに入れたりしてます。大体以下の様な内容です。個人的には、「四畳半神話大系」が特に気になってます。
買ったけどまだ読んでない本
これから買おうとしてる本(とりあえず目についてほしい物リストに入れたやつ)
- 作者: テッドチャン
- 出版社/メーカー: 早川書房
- 発売日: 2014/09/30
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
- 作者: クラーク,池田真紀子
- 出版社/メーカー: 光文社
- 発売日: 2007/11/08
- メディア: 文庫
- 購入: 31人 クリック: 146回
- この商品を含むブログ (220件) を見る
アンドロイドは電気羊の夢を見るか? (ハヤカワ文庫 SF (229))
- 作者: フィリップ・K・ディック,カバーデザイン:土井宏明(ポジトロン),浅倉久志
- 出版社/メーカー: 早川書房
- 発売日: 1977/03/01
- メディア: 文庫
- 購入: 70人 クリック: 769回
- この商品を含むブログ (434件) を見る
- 作者: 森博嗣
- 出版社/メーカー: 講談社
- 発売日: 1998/12/11
- メディア: 文庫
- 購入: 16人 クリック: 241回
- この商品を含むブログ (587件) を見る
「HACKING」や「Linuxカーネル2.6解読室」など、最近の「買って良かった技術書」について
「技術書の積読は悪いことでは無いと言いたい」という前回のブログにも書きましたが、自分は適当に技術書を買う事が多いです。
その中でも、最近自分の中で「当たり」だったものについて簡単に紹介してみたいと思います。
HACKING
まず、期待値の割にすごく良かったのが、「HACKING」という本です。この本では、様々なパターンの脆弱性が豊富なコード例とともに解説されています。僕は、六本木ではたらくソフトウェアエンジニアへのよくある質問とその答え (FAQ) というページでこの本の存在を知りました。
気になっていたもののそれほど期待していなかったのですが、詳細な説明とともに実践的な(?)脆弱性攻撃の手法などが載っており、内容がものすごく充実していました。例えば、バッファオーバーフローについて、自分は最初は「バッファオーバーフローぐらい知ってるぞ」などと調子づいていたのですが、それを実現するための鮮やかな手際、環境変数を利用したスマートな攻撃方法、はたまたシェルコードの説明やシェルコードを自作する方法まで載っていて、自分の知らなかった情報が詰まっていてすごく面白かったです。「root権限で動くprocessに脆弱性があるとすごく危険」という事実も、知識としては知っていたものの、実際に「脆弱性を突いてrootでshellを立ち上げるコード」を目にすることで「実感」を持つことが出来るようになりました。
Linuxカーネル2.6解読室
また、別の本で買って良かったなーと思ってるのは、「Linuxカーネル2.6解読室」という本です。これは「明倫館」という神保町の古本屋で買ったもので、完全に「ちょっと気になったから適当に買ってみた」ものでした。古本だから新品で買うより安くて、お得に感じたのも買った理由の1つです。
実は、自分はLinuxやBSDのカーネル本を他にもいくつか持ってるのですが、それらはあまりモチベーションを保って読み進められませんでした。だから、正直「Linuxカーネル2.6解読室」も積読されちゃうかもなーと思ってあまり期待してませんでした。
ところが、この本はすごく読みやすくて、モチベーションが尽きることがありませんでした。いまもチビチビと読み進めています(まだ全体は読めてなくて、PART 1 のカーネルプリミティブ、つまり第6章までと、後はPART 2のプロセス管理やPART 3のメモリ管理周りをつまみ食いしてる感じです。)
この本が自分にとって良いと感じたのは、「コードと説明のバランスが良いから」かもしれません。
カーネルの説明というと、場合によっては「図による概念の解説」や「パラメータや定数の網羅的な説明」に終始しがちで、イマイチ何が起きてるかイメージしづらかったり、単なる暗記作業になってしまったりします(リファレンス的な本ならそれで良いと思いますが)。
ところがこの本では、Linuxカーネルがどういう戦略でどういった機能を実現してるか、またその動作が実際のコードとともに解説されていて、覚えやすいしイメージしやすくなっていました。また、コード自体もすごく参考になるものでした。
自分がLinuxカーネルについて勉強したいと思っていた理由は、「自分が普段利用している、依存しているものが実際に何をしているか知っておきたい」と思っていたからと、もう1つは自分の尊敬するHajime MoritaさんがRebuild.fm ep.127で「最適化手法については、OSの最適化戦略などを知っておくとすごく勉強になる」と言っているのを聞いたからでした。
Linuxカーネル2.6解読室は、そういった自分の目的を叶えてくれる本でした。その意味でも、「適当に買って」本当に良かったと思っています。
最近の「買って良かったシリーズ」まとめ
という訳で、最近の自分のマイブームはHACKINGとLinuxカーネル2.6解読室でした。多分、今後も適当に買いながら、たまに面白い本に出会うんだろうなーと思ってます。
Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際
- 作者: Jon Erickson,村上雅章
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/10/22
- メディア: 単行本(ソフトカバー)
- 購入: 9人 クリック: 163回
- この商品を含むブログ (19件) を見る
- 作者: 高橋浩和,小田逸郎,山幡為佐久
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/11/18
- メディア: 単行本
- 購入: 14人 クリック: 197回
- この商品を含むブログ (119件) を見る