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

リモートワークだけ受けるフリーランスになって半年経ってバンクーバーに移住してみた

shishi.hatenablog.jp

前職を退職して半年ほど経ち、今はバンクーバーからこの記事を書いている。移動と居住地の自由のためにリモートワークだけ受けることにして、仕事があるのかとか不安なことはあったけども多くの人に助けられてやっていけている。

Railsプログラマとして

勉強会等で以前から付き合いのあった友人に自分の今やっている仕事を手伝ってくれないかという依頼を頂いたので是非と受けることに。週2程度でもちゃんとした収入になるぐらいには友人の働きかけもありいただくことができた。

仕事はRailsプログラマーとしての仕事だったが、着手した機能の目指すところや期限に対する認識が違ったりしてトラブルになったことがあった。言った言わない論争は置いておいて、自身に空気を読むのは不可能だったということはアピールすべきだったかなと思う。おそらくリモートワークだとこのへんが一番トラブルになりやすいかなと思う。

僕と一緒に仕事をした人のうちでは僕は情報共有しようぜとうるさい方であったと思っている人が多いと思うんだけども、自分で思っているよりリアルなコミュニケーションでそういう共有を実現していたのかなと思うこととなった。

顧問?アドバイザ?として

上記Railsプログラマのお仕事と並行して某企業の基幹システムを作り変えるプロジェクトがあり、上流を見るコンサルに依頼し実際にプログラミングするSIerも決まってはいるが、ユーザー側(某企業側)の目線で本当に彼らのやっていることが理にかなっているか、彼らのプロジェクトの計画、コードの品質等に問題がないか等を検証して欲しいという仕事があると、また別のプログラマの友人から紹介されたので受けることに。基幹システムの入れ替えということでそれなりに長期のお仕事であり、願ってもない条件。

このお仕事で初めて “S0” とかいうメソッド名や、そういう命名規則で生きる人達に実際に遭遇して、エクセルでクラス名やメソッド名を管理する人達が都市伝説でなかったことを思い知る。

こちらでは特に情報共有による問題は起きていないように感じていて、週1程度のSlackでの音声ミーティングと日々のチャットで問題なさそうな様子。いやもしかしたら不満を持たれているかもしれないので聞いてみなければ…

その他

その他、完全にリモートワークとして受けることを了承してもらえない仕事(必ず週1とかでも会社に来てほしいという条件等)、報酬が自分の設定する最低ラインを下回る仕事等はいくつかお断りさせていただいたものの、今バンクーバーに来ても新しく依頼をいただけるぐらいには仕事の機会はいただけている。エージェント等は一回も使っておらず、本当に今まで色んな所で出会った方々によって助けられている感じである。

現在はRailsプログラマとしての仕事について自分の仕事はほぼ収束していてその時間に別の仕事が入るかなあという状況。なんやかんやと仕事しないことになったとしても現状の仕事で十分生活できるし、あまり仕事を忙しくしてこちらで生活するメリットを活かせなくても困るのでどうなってもメリットがあるなと感じられそう。

現在の状況

現在はバンクーバー郊外に住んで、最近家のそばに開通した電車を使って都会や観光名所等を巡っている状況。そして寒い。だいたい気温は12度ぐらいしかない。まあ家が寒さに強い構造なので家の中はそれほど寒くないんだけども。

今年は特に寒いらしく、普段なら20度ぐらいの最高気温はあるとのこと。だいたい夏でも30度はいかないし冬は-5度程度ということでもしかしたら北海道より過ごしやすいかもしれない。

あと公園や木がいちいちでかい。バンクーバーのあるBC州だけで日本全土ぐらいの面積があるらしい。公園を散歩していたところ普通にリスに遭遇した。野生のリスはたぶん初めて。

f:id:shishi4htn:20170615035139j:plain

英語についてはまあ意外となんとかなるが、なんともならんときは本当になんともならない。アクセントや話し方に本当に依存する。さらには、こちらに話しかけてきてもらう分にはシチュエーションを加味した上で話の内容を推測できるがニュースとかの英語は本当に難しい。慣れが本当に大事なんだろうなという感じ。ちなみにこちらのニュースはもうひたすらトランプ問題で連日持ち切りである。

今の目標はバンクーバー都市部でうまい飯屋を探して周り、1人でもグループでもバンクーバーの外食でおすすめできるような店を探し当てること。外食コストが高いこと、日本で培った勘が発揮されないことでなかなか計画は進まないが1つぐらいは自信を持って言えるお店を探し当てたい。あと日本のみんなの飯テロのダメージがすごいので反撃したい。

こんな状況で生活しています。お仕事の依頼をいただける方、もしくはより詳しいバンクーバー生活が聞きたいという方はTwitter、コメントなどで是非ご連絡ください。

はじめまして数学リメイク版を読んだ

はじめまして数学 リメイク

はじめまして数学 リメイク

ウィッシュリストからのいただきものの一つ。

最近はバンクーバーに旅立つ直前の時期で、荷物の関係上紙の本はできるだけ置いていきたく一気に紙の本の読書に取り掛かっている。

本書は「数学」とあるが、基本的に「数」の性質についての不思議さ、面白さをおそらくは小学校高学年~大人にまで向けて説明し、「数」の世界へ興味を持ってほしいという意図の本であると思う。

僕としてはこの本を探したのは一般社会で言う方の「数学」、数列や三角関数などへの興味がない自分を啓蒙してくれることを期待して探した本の一つだったので、中身は想定と違うものであったが、全編楽しく読むことができた。

素数、素因数分解、完全数、三角数、分数の計算の仕方等について、公式からは全く触れず、なぜそうなるのかを地道に説明し、自分で計算してその不思議さを体感して欲しいと繰り返し書かれていて、筆者が数のロマンに取り憑かれた人であることが伝わってくる。その熱さに当てられて、小学校以来のさびついた知識が蘇った感じがある。昔から公式だけ覚えていたものも多く、古代文明から続く数学の奥深さを学ぶことができた。

この本は結構有名な本のようで、

404 Blog Not Found:書評 - はじめまして数学

で dankogai も絶賛している。

数のロマンに感心はしたものの僕個人の性質でとらわれることはなかったが、きっと多くの人を数学に目覚めさせるきっかけとなるに十分な良書なんだろうなと思う。