nekoTheShadow’s diary

IT業界の片隅でひっそり生きるシステムエンジニアです(´・ω・`)

最近読んだ漫画の読書メモ:『漫画版 野武士のグルメ』『漫画版 野武士のグルメ 2』『ルードウィヒ・B』『いやされて 社畜女子のコミックアンソロジー』

これを書いている人は基本的には漫画読みではないのですが、たまには漫画を読みたくなることもあります。そこでここ数か月で読んだなかで、面白かったいくつかの作品について読書メモを公開します。ただ繰り返すようにわたしは漫画についてよい読者ではないので、もしかすると頓珍漢なことを書いているかもしれませんが、許してください(´・ω・`)

久住昌之土山しげる『漫画版 野武士のグルメ』『漫画版 野武士のグルメ 2』(幻冬舎)

野武士のグルメ

野武士のグルメ

以前に読んだ『孤独のグルメ』が面白かったので、同系統の漫画を探していたところ、『孤独のグルメ』に並んで平積みされていたので購入。原作者が『孤独のグルメ』と同じのようですね。定年退職後に時間が有り余っている還暦男があちらこちらでご飯を食べる――というだけなのだが、引き込まれてしまう。作中では「野武士」と称される、主人公の食に対する姿勢は確かにユニークではあるものの、それを除くとただただおっさんがご飯を食べているだけ。しかし面白い。不思議(´・ω・`) 『孤独のグルメ』しかり、それが何かは説明しづらいものの、漠然と面白いという不思議なタイプの作品でした。

手塚治虫『ルードウィヒ・B』(希望コミックス カジュアルワイド)

手塚治虫の絶筆で、以前から関心はあったものの、読むに至らなかったのですが、偶然書店でいわゆる「コンビニコミック」版の本作を発見。値段も手ごろだったので、手に取った次第です。これが死の間際、病床にて書かれたとは思えない出来上がり。とくにフランツの存在。これが本作を音楽家の伝記漫画にたいへんな深みを持たせています。絶筆ということで、本作はかなり半端なところで終わっています。かなわないことではありますが、続きが読みたい(´・ω・`) 007シリーズやシャーロック・ホームズシリーズなど、すでに亡くなった作家の作品をほかの作家が書き足していくということは欧米ではよく見られるので、本作もほかの漫画家が続きを書いてくれないかしら(´・ω・`)

赤塚不二夫『おそ松くん ベスト・セレクション』(ちくま文庫)

おそ松さん』人気にあやかってか、本書が平台に積み上げられていたので、ついつい購入。有名漫画ですが、よくよく考えてみれば内容を知らない。せっかくの機会だし、抜粋版を読んでみるのも悪くない――という軽いのりで読み始めたのですが、面白かった(´・ω・`) とにかく無茶苦茶でナンセンス。そもそも6つ子という設定もぶっ飛んでいるうえに、話自体もそもそも筋があるのかないのかよくわからない感じで、とにかく勢いだけで進みまくる。あとがきによると、作者の赤塚不二夫自体がけっこうな奇人変人だったのですが、しかし奇人変人にしか書けないような作品という気もします。

ビタワン、結うき。、火野遥人 他『いやされて 社畜女子のコミックアンソロジー』 (電撃コミックスNEXT)

いやされて 社畜女子のコミックアンソロジー (電撃コミックスNEXT)

いやされて 社畜女子のコミックアンソロジー (電撃コミックスNEXT)

毎週Twitterで読む『社畜ちゃん』の更新だけが楽しみという社会人生活(血涙)を送っているのですが、その『社畜ちゃん』の原作&作画コンビが宣伝していたので購入。感想としては――かわいい(´・ω・`) とくに今の現場は殺伐している(炎上中)ので、本作に掲載されている作品の登場人物のような人がひとりでもいれば精神の癒しになるのですが、そうはうまくいかないですよね(´・ω・`)

浅山太一『内側から見る創価学会と公明党』(ディスカヴァー携書)

本書は創価学会公明党の関係性を、どちらかといえば創価学会の視点から分析したものになります。本書によると、創価学会公明党を応援することを明示的に支持するようなことはなく、また学会員の間でも公明党を応援する動機や理由に統一的な見解はないそうです。要は学会員は必ずしも公明党を支持するいわれはないにもかかわらず、かれらは日本人の平均からすれば熱狂的ともいえる熱量をもって公明党を応援しています。いってみれば「創価学会公明党の間に流れるあいまいな関係性」がどのように形成され、変遷し、そして現在に至るまで維持されているのか。聖教新聞創価学会会長の発言や講演などを題材として、本書はその答えを洗い出していきます。

もちろんその答えはそれほど単純ではありません。少なくとも新書1冊にまとめねばならないほどには複雑な問題です。教義の観点から公明党の支持をどのように正当化するのか。政治活動の自由や政教分離の原則に抵触しないよう、どのようにして信者を公明党支持に向かわせるのか。本書は膨大な資料からそうした問題をひとつひとつ整理し、創価学会戦後民主主義とは相反する存在である宗教政党を成立せしめたのかを明らかにしています。また「下部構造が上部構造を規定する」というマルクス主義的な発想になじんでいると、支持母体/圧力団体である創価学会の側が公明党を一方的にコントロールしているかのように思いますが、やはりそれほど簡単な話ではありません。宗教政党という政治的社会的にナイーブな存在を抱えることによって、創価学会の側が変質していくということも当然あり得ます。本書はその双方向性にも自覚的で、ページ数を割いてじっくり議論を進めています。

創価学会公明党の関係については、反学会的な立場による陰謀論めいたものか、学会御用の出版社や文化人による礼賛的なもののどちらかばかり。本書のように社会科学的な視点から冷静に見つめなおしたものは少ないように思います。また政治と宗教の関係というと、どちらかといえば政治学の観点から議論されることが多く、どうしても政治側の影響ばかりが取りざたされがち。本書のように社会学の観点から宗教側にスポットライトを当てたものは珍しいのではないでしょうか。あと単純に自分の知らない世界のことが知れたのもよかったですね。不思議なことに創価学会とはあまりかかわらない人生を送ってきており、教科書的な知識を除くと、創価学会について知っていることといえば、創価大学が八王子の山奥にあることぐらいだったので(´・ω・`)

伊藤淳一『プロを目指す人のためのRuby入門:言語仕様からテスト駆動開発・デバッグ技法まで』(技術評論社)

Twitterはてなブックマークでみんながほめていたから」というたいへん"みーはー"な動機で買ったのですが――超よかった(´・ω・`) なお本書に割いた時間は1日1.5-2時間×1週間弱。読みながら例題をすべて写経したあと、もう1回通読しました。

まず断っておきたいのは、これを書いている人はRubyのプロではないということです。Ruby歴は3-4年程度、本業はSIer勤務のシステムエンジニアですが、お仕事としてRubyを書いたことはありません。Rubyに関連するOSSに関与しているわけでもなく、複数人によるRuby開発の経験はほとんどなし。書籍やネット上の情報を頼りに独立独歩/孤立無援/徒手空拳Rubyを学んできました。ちなみに競技プログラミングシェルスクリプトの代用がわたしのRuby利用の大半になります。

要は日曜大工ならぬ日曜Rubyistの立場でしか本書を判定できないということです。たとえば「本書を読めば、本当に"プロ"になれるのか」あるいは「本書の記述は"プロ"としてやっていくに十分か」というような判断はわたしにはできかねます。ただ無手勝流ながら結構な時間を投資してきたという自負はありますし、事実本書で紹介されるRubyの機能や書き方で「まったくもって初見」というものはありませんでした。その程度の人間がこの記事を書いていると思って読んでいただけると幸いです(´・ω・`)

前置きが長くなりましたが、わたしが思うに本書のよいところは4点挙げられます。まずはRubyの基本文法を網羅的ながら、ほどよく学べること。あるプログラミング言語の機能を紹介するにあたって、「どこをどれだけ取り上げるべきか」「どこを泣く泣く捨てるべきか」というのはさじ加減の難しい問題だと想像しますが、本書はその点において過不足のない分量だったように思います。とくにSymbolやRegexpなど「多言語ではなじみが薄いが、Rubyでは多用される機能」「Rubyではとりわけサポートの手厚い機能」について、しっかりとページを割いており、「誰に向けての本であるか」を筆者が強く意識しながら執筆したことを感じさせます。

次にRubyらしい書き方が学べる点。Rubyは「やりかたはひとつじゃない」言語として知られていますが、いくら多様な書き方を許容するとはいえ、パフォーマンスや可読性や慣習の観点から「推奨される書き方」「推奨されない書き方」が存在します。ただこの「推奨される/されない」はRubyプログラマやコミュニティの中で暗黙的に了解されているだけであり、新規参入者は非常に学習しづらい。本書はそのような暗黙的「Rubyらしさ」を体系的網羅的かつ平易に解説しています。本書の中では「Rubyではこのような書き方が好まれる」「Rubyの機能としては存在するが、推奨されない」という類の表現が頻出するのですが、これこそまさに「読者にRubyらしいコーディングを身に着けてほしい」という筆者の意思の現れであると思います。

3つ目の長所として手を動かしやすいつくりになっていることも見逃せない点です。本書は「その章を読み進めることで、章の冒頭に提示された例題が解けるようになる」という構成を採用しているのですが、まずユニークなのは「例題を冒頭に提示する」点。IT計技術書だと「省の最後にクイズが添えられている」というものはよく見かけますが、冒頭というのは珍しいのではないでしょうか。ただこのような構成だと、読者はその問題に解答することを意識して章を読み進めることになるので、読むことに対する身の入り方が変わってきます。

また例題の解答も「単にソースコードを教えて終わり」ではなく、「プログラマがその例題をどのように解決していくのか」の過程が詳細に示されます。本書ではテスト駆動開発(TDD)という開発手法が採用されているのですが、この例題の解説に沿ってソースコードを写経していくと、まるでTDDにたけたシニアデベロッパペアプログラミングをしているかのような錯覚に陥ります。Rubyプログラミングだけではなく、TDDの初歩まで学べるなんて、一石二鳥ですねー。

最後に本書はプロとしての立ち振る舞いまで教えてくれる1冊です。「エラーメッセージはきちんと読む」「英語にひるまない」「Dont't Repeat Yourselfを忘れない」などなど、プログラマであれば当然知っておくべき原理原則や心構えを本書は随所で訴えており、タイトルにわざわざ「プロを目指す人のための」という文言を冠した筆者のメッセージが伝わってきます。個人的には「9.4 例外処理のベストプラクティス」「11.5 汎用的なトラブルシューティング方法」あたりは、Ruby以外でも十分通用する内容だと思いました。今の職場(保守開発)の壁という壁にコピーを張って回りたいぐらい(切実)

以上4点、ちょっとほめすぎかしらん(´・ω・`) ただそれだけ学びの多い1冊でした。Rubyをお仕事にしていないわたしですら、これだけ勉強になったということは、Rubyをお仕事にしている人、これからお仕事にしたい人にとっては、きわめて役立つのではないでしょうか。

ThinkPad X270を買って、ブログをいっぱい書きました。

以前にMacBookを買うべきか、ThinkPadを買うべきかを悩んでいるという記事を書いたのですが、結局ThinkPadを買いました。機種はX270。ThinkPadシリーズでもっとも人気がある12.5型のモデルですね。メモリは8G、256GBのSSDを積んでお値段およそ12万円弱というところでした。意気込んで池袋のビックカメラパソコン館まで足を延ばしたものの、実態はオンラインショッピングの代行をしてくれるだけでした(´・ω・`) まあビックカメラ購入クーポンがあったらしいので、良しとしましょう。

ThinkPadを購入したのは、やはりトラックポイントThinkPad特有のキーボード。トラックポイントについてはひとたびこれに慣れてしまうと、二度と手放せない中毒性を持っています。MacBookにもトラックパッドというそれはそれでよくできた操作デバイスがあるものの、ホームポジションを崩さなくてよいという点ではやはりトラックポイントに軍配が上がります。またMacBook特有の「ぺらぺら」キーボードが苦手、というかThinkPadのキーボードの出来が良すぎるのです。わたしがPCを利用する目的といえば、プログラミングとQiitaを含むBlog執筆。すなわちキーボードをたたいている時間がとにかく長いため、キーボードにはこだわりたい。となるとMacBookは選択肢から自然に外れてしまいます。

ちなみにお仕事でMacBookを使っている/使わされているというのもThikPad、もといWindowsを選ぶ理由のひとつだったりします。お仕事でもMacOS、プライベートでもMacOSというのは結構つらいし、精神的に休まらない(´・ω・`)

懸念点としてはOSがWindowsになってしまうということ。プログラマやソフトウェア開発者の多くがMacユーザであることが話題になりますが、これにはきちんとした理由があります。ずばり環境構築が容易であること。この世界のソフトウェアの大半はUNIXというOSから生まれているのですが、実はMacOSはこのUNIXをベースとしています。つまりMacOSはソフトウェアが作られた環境と親戚関係にあり、ひるがえってその環境を再現しやすいのです。事実お仕事でMacを持たされた際にソフトウェアの開発環境を構築したのですが、windows7時代に比べて圧倒的に楽。この環境構築が楽という点が最後まで迷った最大の要因でした。

もっともソフトウェアのレベルであれば、Windowsでもなんとかなります。とりわけWindows10からはWindows Subsystem for Linux(通称WSL)が正式にサポートされるようになりました。要するにWindows上でLinux(UNIXの仲間)を簡単かつシームレスに運用できるというもので、天下のMicrosoftが作っているだけあって、非常に出来が良い。凝ったことをしようとなると、そもそもがUNIXベースのMacOSのほうが有利ですが、わたしが個人で利用する程度であればWSLで十分事足りますし、これで事足りないのであればVMWareなどで仮想環境を構築するまでです。

ソフトウェア面は多少面倒でも努力さえすればなんとでもなりますが、ハードウェアはそうはいきません。MacBookのキーボードが気に食わない、トラックポイントをつけたいと思っても、こればかりはどうしようもない。この辺りの事情を鑑みて、結局ThinkPadを買うという決断に至りました。ではこの判断は正しかったのか? いうまでもなく大満足です。その証左が、もろもろの環境構築が終わってX270に本格的に触れ始めた2日間で書いたブログの記事数(実をいうと、年末を除いた今年最後の土日ということで、たまっていた話題をひたすら消化したという面もあるのですが)。やはりキーボードが打ちやすいと、文字を書く手が止まらなくなりがちです。

またThinkPadの中でも小さいモデルを選んだのは大正解でした。これまではDynabookの15.6型ラップトップを利用していたのですが、これがとにかくでかくて重い。お外に持ち出すのはまず不可能で、家の中で持ち運ぶだけでも一苦労。ラップトップといいつつ、膝の上に乗せて作業など絶対にできないという代物でした。一方ThinkPad X270は膝の上に乗せ放題。しかもトラックポイントのおかげで膝の上で作業がしやすい。当然持ち運びも容易。ちょっと場所を変えて作業をするというのが、これほどまでに自分のモチベーション維持になるとは思ってもいませんでした。まだ外に持ち出したことはありませんが、いつかスタバでどや顔してみたいですね(´・ω・`)

Kent Beck『テスト駆動開発』(オーム社)

テスト駆動開発

テスト駆動開発

t-wada.hatenablog.jp

こういう「アツい」エントリを読んでしまうと、買わざるを得ないよね(´・ω・`)

正直なところ、本書を読むまでテスト駆動開発(TDD)を誤解していました。もちろん「テスト駆動開発」という単語は知っていたものの、その開発手法では実際にどのようなことを行うのかよくわかっておらず、「単体テストをまず書いてみてコーディング作業を行う」という程度の認識でしかありませんでした。もっとも「テストをまず書いてみる」というのは必ずしも間違ってはいないのですが、それだけではない。「テストを書いて、そのテストに合格するようなコードを書く」これを短くて管理しやすいスパンで繰り返していくことが「テスト駆動開発」の中心的な行為なのです。

本書はぜひ写経してみるべきです。「テストを書いて、そのテストに合格するようなコードを書く」と頭ではわかっていても、実践はなかなか難しいし、そもそもとっかかりになるようなお手本がないと厳しい。そこで写経です。言語化しずらいのですが、本書の写経パート(?)はきわめて写経しやすい作りになっています。シニアプログラマペアプログラミングをしながらコードを成長させ、最後には「テスト駆動開発」が頭ではなく実践として身についている。その鮮やかさに感銘を受けて、全体を2回、加えてJUnitを扱った部分を追加で1回ほど、写経してしまいました。気分はすっかりにわかTDDプログラマで、今日も元気にSESな現場でひとりTDDを実践しています(´・ω・`)

西田圭介『ビッグデータを支える技術: 刻々とデータが脈打つ自動化の世界』(技術評論社)

最近はビッグデータというよりKPI分析の重要性がIT以外の企業の経営層にも認知されつつあるらしく、データウェアハウス構築系の案件はよく耳にします――というかわたしも参加したことがありました(超炎上した)。Webの常識では考えずらいのですが、企業の業務システムは寿命が長く、20年戦士30年戦士というものも少なくありません。そのため比較的小規模なシステムでもデータが蓄積されていることが多く、「せっかく集まったデータを活用できないか」という風に考えるのではないでしょうか?

本書ではビッグデータに関する技術が紹介されていますが、まずよいところとして設計から開発、保守運用に至るまでのソフトウェアライフサイクルの全工程がスコープに入っていることです。システム開発はどうしても「作って終わり」となりがちですが、とりわけビッグデータ系システムは運用し始めてからが本番。わたしが開発中心のシステムエンジニアということもあり、利用者そして運用オペレータの気持ちになることの重要性を思い知りました。

また特定の技術領域やフレームワークの紹介で終わっていないことも好印象でした。とある領域の全貌を知りたくて買ったのに、実際は特定のフレームワークの解説ばかり――というのはIT系技術書でよくある話です。本書はそのような狭路に入り込んでいないことはもちろんのこと、ビッグデータに関連する概念や歴史がわかりやすく解説されており、まさにタイトル通りの1冊でした。開発者はもちろんのこと、システム管理者やオペレータにもおすすめできると思います。

Bill Burke『JavaによるRESTfulシステム構築』(オライリー・ジャパン)

JavaによるRESTfulシステム構築

JavaによるRESTfulシステム構築

本書はいわゆるJAX-RSに関する入門書になります。以前にこのJAX-RSを多用したパッケージ製品のアドオン開発に携わる――かもしれないという機会があり、その準備として手に取った次第です(ちなみにその案件は逃した)。

そもそもJAX-RSという仕様の存在自体知りませんでした(´・ω・`) 社会人になって以来、ずっとJavaプログラマをやっているのですが(´・ω・`) 言い訳をすると、Restful APIJavaで開発するという機会はあったものの、そのすべてでSpringや自社フレームワーク(怒)を利用しており、JAX-RSに実践として触れる機会がありませんでした。

勉強不足で申し訳ないのですが、しかしここまでの高機能がJavaに用意されているとは思いもよりませんでした。しかも高機能のわりにシンプルな作り(少なくともSpringやStrutsよりは黒魔術感は薄い)になっており、日本のSIerの現場、つまり技術力や向上心がかけた現場でも使いこなせそうなレベルです。フレームワークは確かに便利ではあるものの、標準で実現できるならば、それに越したことはありませんしね。