暗号技術入門 第3版を読んだ

暗号技術入門 第3版

暗号技術入門 第3版

最近は仕事の入れ替えの切れ目で時間がある&並行して本を読む癖があるのでたまに一気に複数冊読み終わるのが重なる。読んだ本を全部こうやって書いているわけではないんだけど。

暗号技術入門はもはや我々のインターネット生活には必須となっている暗号技術について、広くまとめた入門書である。著者は数学ガールでも有名な結城浩。本書は題名通り暗号技術入門として長く愛されており、版を重ねるごとに時代にあった章が追加されていっている様子。

本自体はだいぶ前から知っていたけど第3版が出た時に初めて自分で買った。Kindleに入れっぱなしになっていたのを最近やっと読むことができた感じ。

ウェブ系のプログラマーという仕事をしていて、日常的に暗号に触れていても、暗号とはどういうものかという基礎さえ知らない人は意外に多い。「SSLとはどういう理屈で安全なのか」ということの概要ぐらいは説明できてもいいと思うんだけど、鍵の存在さえ言えない人は結構いる。

また、*Nixのパッケージシステムで使われるようなPGPのことを全く知らない人も多いイメージ。コマンドで鍵を追加したことはあってもそれが何なのかは分かっていないのである。

他にもSSH接続のセットアップで公開鍵をくれといっているのに区別がつかなくて秘密鍵を渡してくる人とか…

そういう状況から脱却したいなという理解度の人にとってまさにオススメなのが本書。数学的素養の少ない僕でもだいたい分かるようにそれぞれの暗号技術の理屈が書かれている。現在使われている暗号技術を広く扱っており、浅く広く理屈を学べる。

暗号についての僕の理解度はだいたい本書ぐらいだった。学び始めた当初から本書を知って読んでいればこの1冊にまとまっていたのできっと学習時間が短く済んだことだろう。

普段暗号技術を使う際に理屈や詳細といった基礎を意識する必要がないのは技術の偉大さだけど、基礎を理解しておけば何かとつぶしが効くと思っていて、今の暗号技術の何がだめだからどう変えなければいけないとかいうときに、根拠を持ってすばやく判断できるようになるのは価値があることだと思う。基礎がなくて情報の真偽性の判断にとまどう例もたくさん見てきた。ググれば何でも情報がある時代にも、基礎は必要なんだと思う。

人月の神話を読み直した

最近自分の中では古い本ブームが起きていて、Code Completeを読んでいるのと同時にこちらも読んでいた。IT業界の古典中の古典、人月の神話である。

人月の神話【新装版】

人月の神話【新装版】

初めて読んだのはいつかわからないけどまあだいたい10年ぐらい前ではなかろうか。その頃はよく分かっていなかったが今読んでも完全に理解したとは言えない感じだった。まあ時代のバックグラウンドが違いすぎるというのも大きいと思う。何しろオリジナルは1975年。40年以上前である。オブジェクト指向という言葉が浸透していない時代。コードを印刷する時代だし、著者は真空管コンピュータに触れるような時代の方である。

ただ、その洞察は今も生きる。このへんがCode Completeと同じく古典と呼ばれながら今の時代でも話題に登り続ける理由だろう。

いちばん有名な本書の言葉といえば「銀の弾などない」である。狼男を倒す夢の道具はない→我々の業界の問題を解決する夢の道具はないという言葉であるが、銀の弾である理由、倒すのが狼男である理由もちらっとではあるが書かれていたのは知らなかった。

一番感銘を受けたのはやはり有名な言葉になっている部分。

  • 人月というのは神話である。人と月は交換できない。労力と進捗を混同していると著者が喝破してから40年後、まだ人間は労力と進捗を混同している。

  • 銀の弾丸はない。主な問題は当時からコミュニケーション問題(らの偶有的問題)であり、それは著者が予測する限り変わらないだろうと洞察して40年後、まだコミュニケーションは一番の問題である。さまざまな便利な技術は生まれたが、どれも銀の弾丸足り得なかった。

新装版ではなにかと加筆されており、18章に至っては「忙しい人のための人月の神話」ともいうべきダイジェストになっている。特段分厚い本ではないが、忙しい人はここを読めばこの本のだいたいのことは分かるようになっていた。

あまりおすすめする対象の人は思いつかない。どちらかというとプログラマでない人のほうが読むと良いことがあるかもしれない。もちろん時代の違いはいい感じに無視してもらわねばいけないが。役に立つから読むというより、IT業界一般教養の世界だと思う。

Code Completeを読み直した

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 下 完全なプログラミングを目指して

CODE COMPLETE 第2版 下 完全なプログラミングを目指して

【電子合本版】Code Complete 第2版 完全なプログラミングを目指して

【電子合本版】Code Complete 第2版 完全なプログラミングを目指して

いつどう読んだかさえ覚えていない以前に読んだことだけ覚えていたCode Completeを読み直した。読んだ当時は電子書籍ではなく、見たことがある人は分かるはずだが上下巻ともにまさしく鈍器と形容すべきサイズの本である。

電子書籍のセールか何かでKindleに入りっぱなしになっていたので読み直すことにした。あの鈍器も今や体になんの負担もなく手のひらで読むことができる。しかも電子合本版なんてのも今はあるようだ。技術って素晴らしい。

Code Completeはやや古典に入る部類ではあるが、プログラマー必携の書としておすすめされる本の一つである。初版は1993年らしい。25年ほど前なのでもちろん本書で触れられているものの解決されている問題もある。だが、本書の知見と見識のほとんどは今なお通用してしまう。決してこれが通用する現場が時代遅れとかそういうことでない。本書の見識の高さと今でも多くの人におすすめされる理由である。

本書は特定のプログラミング言語によった本でなく、汎用的なコードの書き方全般について触れている本である。この本をより現代的で、かいつまんで平易にした本がリーダブルコードになるようなイメージである。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

  • 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/06/23
  • メディア: 単行本(ソフトカバー)
  • 購入: 68人 クリック: 1,802回
  • この商品を含むブログ (138件) を見る

変数、ルーチン、クラス、さまざまな要素それぞれに対しての考え方、特にコメントをいかに書くかということについてこれほど詳しく書かれている本はあまりないと思う。

僕が何よりこの本に感銘を受けるのは、出典として引用する本、研究の多さである。本書筆者がどれほど多くの本、研究に触れてきたかということを明らかにするものでもあるし、時に「何となくそうなってるはず」で済まされがちなプラクティスに対する研究結果、数字が載せられているのは心強い。とあるプラクティスの導入に誰かを説得しなければいけないときなどにとても有用である。いまどきあまりないと思うがコードレビューをすると時間がかかるとか、開発者テストをした結果がどうなったとか、先行者の結果が載せられている。

というか、これだけの研究と結果がすでに約30年以上前に行われていて、まだまだ旧態依然としたプラクティスがはびこっていることに対して、技術自体の進歩に対し、人間の進歩が全く追いついてない結果に少しもやもやするほどである。

あまり初心者が読むには重厚すぎるところ、少し時代に合わないところも鵜呑みにしてしまう可能性があるので、自分のスタイルを持ちはじめた人が読むと良いのではないかと思う。

Ergodoxに慣れてきた

前回Ergodox買ってみた記事からしばらく経ち、あまり配列の変更をする必要もキーマップの確認をすることもなくなってきた。というか以前は記号が足りなかったり、これじゃコード書けねえっていうのに後で気づいたりしていた。

shishi.hatenablog.jp

今の配列はこんな感じ。足りない記号もないはず。

https://configure.ergodox-ez.com/keyboard_layouts/qmrpbw/edit

f:id:shishi4htn:20180227211622p:plain

Layer2

左側はだいたいデフォルトの記号が並んでいるまま。Layer2右側によく使う記号を並べてホームポジションを崩さず記号を入力できるようになりたいのだけど大体脳が介在する前に小指が記号を探してしまう状態からまだ抜けられない。その最たるものが日本語で言う伸ばし棒で、どうしても小指が右上方を探してしまうので仕方なく2個割り当ててある。ホームポジションに近い方でなんとかできるようにしたい。訓練が必要。

Layer3

カーソルキーを単独で配置するのは完全に諦めた。ホームポジションから離れないでカーソルキーを4つ置くのは無理である。そんなわけでマウスを含めてカーソル移動系でLayer3にまとめて配置してるがこのLayerが便利でよく使っている。マウス機能もエディタやIDEのみならずウェブブラウザ等でふとフォーカスがずれただけのときとかかゆいところに手が届く感じで意外に活躍。

Layer1

Layer1のF16、F17にはIMEの有効無効をそれぞれ割り当てており、トグルでなく操作できるようにしてある。公式のグラフィカルな設定ツールで設定できる言語切替ではうまく動作しなかったのでこのような対処に。一応 "Alt-`" の一番一般的なIME切り替えも残してある。今のところF18は何の機能も当てていないけど、何かのショートカットを割り当てたいなとだけ思っている。

親指Enterはできるようになりたかったがとりあえず今は諦めた。記号以上に完全に脳みそがEnterの位置が親指だと判断する前にそれっぽい場所を小指か薬指で押してしまう。上述記号問題を訓練で解決したら次は親指Enterできるようにしたい。どう考えてもそのほうがホームポジションに近いし指の力的にも省エネで済むはず。

買ってからの健康問題

単純な興味とだいたい肩こりや腱鞘炎対策のために買ってみたErgodoxだけど、肩こりはともかく、腱鞘炎は起きなくなった。マウスをMX ERGOっていう傾けられるトラックボールに替えたのもあると思う。キーボードと合わせてできるだけ手に負担のかかる角度を避けるようにしていることの効果かなと。

Logicool ロジクール MXTB1s bluetooth ワイヤレス トラックボール MX ERGO Windows,Mac対応 筋緊張20%軽減 8ボタン 高速充電式 2年間無償保証

僕はPCゲーマーでもあるので普通マウス必須な環境なので最近は意地になって全部トラックボールでやり始めた。まだ1人ですごい縛りプレイやっている気分だけど世の中にはトラックボールでのプレイが日常の人もいるということなのでこのまま慣れたいと思う。

肩こりも治れば良いんだけども僕の肩こりは整形外科の人もびっくりなレベルらしいのですぐには効果が出ないものだろうと思う。悪化しているとは思わないのでまずはこの状態に満足している。

Ergodoxを買ってみた

分離キーボードの代表格、Ergodoxを買った。

早速キーボードをカスタマイズしているけどもなかなか大変だ。この文章を打つのにもタイポの嵐。恐らくは普通のキーボードはキーが斜め違いに配置されるのに対し、Ergodoxは格子状だからだろう。ホームポジションから上下にずれたキーはめちゃくちゃタイポしている。

きっと慣れればというところだろうが、こんなにタイピングが遅いのはいつぶりだろうか。ストレスフルだが従来のキーボードから開放されてより快適なタイピング生活を得るためにしばらく耐える。

今のキー配列はこんな感じ。

f:id:shishi4htn:20180208161625p:plain

思ったより親指が押しにくいので大きな親指用のキーにカーソルキーを当てようかと考え中。周辺の修飾キー等はもう条件反射レベルで押してしまうのでこの配置。Enterもそうなんだけど、シングルクォーテーションを優先するとこうなった。

Ergodox使用のみなさんもこんな感じに最初は大変だったのだろうか。

フリーランスになってバンクーバーに暮らして1年過ぎた

年末はふりかえり系記事が山のように出ていますね。僕の転機がたまたま年末にあったので僕もこのタイミングで振り返りです。

前職をやめてフリーランスとなって1年が経ちました。

shishi.hatenablog.jp

shishi.hatenablog.jp

現在は12月にとりあえず日本に戻ってきて京都の実家にいます。別にどこにいても良いのですが、来年も頻繁に海外には出たり旅行したりしたいのでそれがおさまるまでは自分で家を借りない方が良いかなという状態です。

カナダ国内を巡ったり、アメリカ近すぎワロタみたいな状態で何度も往復したりしてきました。現地の文化、暮らしを理解するために住みたいという目的は果たされたと思っています。言葉にできることもできないことも、多くのことを理解しました。

仕事

仕事内容

仕事は引き続き日本の会社から依頼いただいているお仕事をメインに、バンクーバーで知り合った方たちからも仕事をもらえています。

仕事の内容は技術顧問(アドバイザ?)的なもの、Ruby/Railsでのプログラミング、技術ドキュメントの英日翻訳、オンラインプログラミング講座の作成などいろいろありました。現地の友達などおらず、英語を満足にしゃべれない状態で行ってもこうやってお仕事をもらえる状態にまでなんとでもなるんだなと自身で体感できたのはすごく大きかったです。

主にアメリカで「会社に入って活躍してます」「海外で働き始めるのは難しい」などの記事を見かけますが、まずは現地のコミュニティに飛んでそこの人と話し合えばもっと簡単なんじゃないかなと自身の体験からは思います。 日本においてもいきなり正面突破を試みるよりまずどんな感じなのかそこの人に聞いてみるというのは普通のことであると思います。

リモートワーク

基本的にリモートワークでしか仕事を受けていないのは変わりなく続けられています。

やはり信頼ベースで人は動くもので、いきなり知らない人にはお願いできないがどういう人か分かっていればリモートワークで頼んでもらえます。なのでやはりまずは人と人とのつながり、すなわちコミュニティです。

客観的に能力をバッチリはかることの難しさはプログラマの採用等に関する悩みがたくさん公開されている現状を見れば分かります。ならばプログラマ同士の技術的、人的信頼をベースにして仕事を依頼することはよっぽど確実性のある仕事の依頼の仕方に思えます。

シアトルでもバンクーバーでもそうでしたが、プログラマのお仕事は溢れるほどあります。どうやったらその仕事を得られるかという方法が大事だと思います。

英語

なんとかしゃべれるぐらいにはなりました。学校にも行かず、現地のコミュニティに飛び込み、Netflixで"How I met your mother"を英語音声、英語字幕で意味の分からん単語、表現があったら調べるという学習法で慣れた感じです。日本にいるときからやっていたオンライン英会話では「そんなに英語しゃべれるのにわざわざカナダ行ったの?」とお世辞を言われるぐらいになりました。

けどネイティブが早口になるとマジで早いのでそのレベルだとまだ聞き取れません。普通に話してくれればという感じです。こちらのスピーキング速度もゆっくりです。早口で話そうと思ってもまだ口がそこまで回りません。

何度か人にも話していますが、「人と話す」ということに重点を置いた時、ニュース等の英語は全く役に立ちません。びっくりするぐらい役に立たないので英会話目的で英語をニュースから学習している方は辞めたほうが良いです。その分会話してください。

ニュースで使っている言葉は会話で使いません。日本語でもそれは同じだと思います。会話に全く支障のないレベルで英語が使える非英語ネイティブでもニュース英語をはっきり理解するまで数年かかったと聞くのも珍しくありませんでした。英会話のための学習としては遠回りです。

日本に帰ってきてしばらく経ちましたが英語が抜けていくのが分かります。これはもったいないのでオンライン英会話の再開や、ローカルでの言語交換コミュニティなどに顔を出そうかと思います。この辺は地方都市だと一気に減るので東京ならたくさん機会があるのになあという感じです。

今後

まだ全然将来をどうしていくのかというプランは仕事的にもプライベート的にもありません。とりあえず今年の目標としてはANAでSFCを発行するためたくさん旅行したいぐらいです。日本に帰ってきて日本は明らかにバンクーバーより寒くてつらいので日本に住むなら沖縄しかないのか…という気分にもなっています。

お仕事の引き合いは現在のお仕事で数年は引き続き依頼いただけそうな見通しなのですが、随時新しいことにも取り組んでいかないと、飽きてモチベーションが下がる速度が上がってしまうという問題があるので随時新しいお仕事に取り組んでいきたいと思っています。最近は教育関係にも興味が出ています。良きお仕事があれば連絡ください!

来月2週目に東京に1週間ほど滞在します。時間のある方はお会いしましょう!

みなさん今後もご贔屓によろしくお願いします!

「WHYから始めよ」を読んだ

WHYから始めよ!―インスパイア型リーダーはここが違う

WHYから始めよ!―インスパイア型リーダーはここが違う

これもまた以前から気になっていてウィッシュリストに入れておいたいただきもの。バンクーバーに持ってこれたいただきものはこれぐらいだったので他のいただきものの本は帰国してから読みます…色々と途中で読む本を買える癖があるので中途半端なことになってしまった。

本書は、商品1つ1つの詳細に関わらず人を引きつける企業とそうでない企業の差は何かについて焦点を当てて解説を試みた本である。副題には「インスパイア型リーダーはここが違う」ということで企業のリーダーに向けられた本のように思えるが読んでみたところそうでもない。

構成がシンプルで、ひたすら「WHY」について焦点を当てて書かれている。「WHY」とは何で、これを実践している企業はどれで~という流れ。焦点が一つしか無いのでとてもスラスラ読めて理解も深まる感じがした。

なぜライト兄弟やキング牧師は革新をなし得たのかという一見ビジネスとは関わりのなさそうな解説から始まり、Appleはなぜ既存業界を革新できたのかという流れで解説される。

ただ、こういうビジネスに関する本の常であるけども、基本的に起こったことに対しての後付けからの分析になるのでこれからの未来を予測するものではない。ただ本書ではもちろんこの「WHY」こそが持続する企業に必要なものであり、リーダーに必要な資質であると解説している。僕も本書にすっかり説得されてしまったし、自分の経験則からしてもそのような理由付けは割としっくり来ている。

実際に本書に何度も例として出て来る例としてAppleがある。僕はAppleは結構好きな企業だったし、家のコンピュータたちもMacを基準に組み合わされていたが、最近はワクワクする体験ではなく何かとスペックを誇ることが多くなり、そんなことはどうでも良いことでスペックを誇るならMacなんてのは2流である。世界中のメーカーがしのぎを削っているPC/AT互換機にスペックと安さで勝てるわけもないしそんなものをファンは求めてないと思った結果、Appleから離れる気満々になっている。

これはAppleが本書で解説されている「WHY」を失ったからであると本書を読んだ後では理由付け出来るようになる。つまり「WHY」はスペックなど表面に現れるものはなく、企業がなにを目指しているかという姿勢的なものである。

僕自身の例だけだとしっくり来ない人も多いと思うので、気になる人は本書を読んでみてほしい。リーダーとかではなく、一個人として気づきを得られることも多いと思うし、読み物としても面白いと思う。

ちなみに本書の内容はTEDで配信されて人気になったということでこれから該当のTEDの配信も見てみようと思う。

www.ted.com