The King's Museum

ソフトウェアエンジニアのブログ。

『ウォール街のランダム・ウォーカー』を読んで

『ウォール街のランダム・ウォーカー』を読みました。二月の読書。

ウォール街のランダム・ウォーカーは投資について書かれた本でこの界隈では有名みたい。 初版が出版されたのは 1973 年でもう 50 年も前だけど、その後何度も版を重ねていて、原著の最新版は 2020 年に改訂している。 その度に内容もちゃんとアップデートされていて、この第 12 版には仮想通貨の話題も。

この本(というか著者)の姿勢は一貫していて、とにもかくにもインデックス投資をしろ、という。 もう、ひたすらインデックス投資の優位性について書いた本といっても間違いではない(もちろん根拠は挙げながら)。 今でこそインデックス投資はとても一般的になったが、この本の初版が書かれた頃はようやくそういう商品が出始めた時期。 その時代から一貫してインデックス投資を勧めていた著者の先見の明には驚かされる。

本の内容は株式投資の一般的な話がメインでテクニカル分析、ファンダメンタル分析、スマートベータとは何か、みたいな話が載っている。 でも、結局インデックス投資と比較されて「ほら、やっぱりインデックス投資が最強でしょ」となる。 自分も影響されてインデックス投資しようと思った笑。 「世間がインデックス投資しかしなくなったら、市場の効率性が失われてしまうのでは?」と警笛をならしている人もいるようで、 たしかにそういう側面もあるのかーと思ったりした。

最後の方は一般人向けの投資アドバイスが載っていて、投資の心構えとかおすすめポートフォリオが書かれている。 実はこの本を読む前に、同じ著者が書いた『投資の大原則』という本を読んでいた。 そちらの方が内容も簡潔にまとまっていて読みやすいし、iDeCo とか NISA とかやろうと思っている人はこっちをさくっと読むといいと思う。

唯一、気をつけなきゃいけないのはアドバイスがアメリカに住んでいる人を対象にしているところかな。 無リスク利回りが 1% だったり、インフレ率が 2% だったり、自国通貨が世界最強米ドルだったりする国に住んでいる人向け。 でも、それを踏まえても役に立つアドバイスがずいぶんと書かれている本だった。

Kinesis Advantage2 日本語配列を買いました。

Kinesis Advantage2 日本語配列を買いました。

f:id:hjm333:20210211230417j:plain

最近、少し右手首が痛むようになってきて、このまま痛みが強くなって仕事ができなくなると困るな~と感じていた。 右手の薬指でバックスペースを押す癖があって、そのせいで右手の甲に余計な力が加わるのが理由の一つ。 あと、在宅勤務で家のデスクが小さいのでトラックパッドの位置がよくなくて、手に負担がかかる形で作業しているのも影響してそう。 (もしかしたら、単に下の子を抱っこするせいで手首を痛めているだけかもしれないが)

そんなことがあって、手首の負担を軽くするセパレート型のキーボードを探し始めた。 探し始めて分かったんだけど、セパレートタイプのキーボードって日本語配列がほとんどないんだよね。ほとんど US 配列。 そんなときに Kinesis のキーボードに日本語配列が出ていることを知った。

大学時代の担当教授が使っていてとても目立っていたので Kinesis のキーボードの存在は知っていたけれど、明らかに普通のキーボードと違うから慣れるコストを考えて今まで少し敬遠していた。 10 年以上 REALFORCE を使っていて打ち心地にとても満足していたから、なかなかキーボードを変える気にならなかった。 でも、明らかに手の負担はセパレートキーボードの方が少ないし、まだまだ現役でいたいから身体のことを考えて思い切って Kinesis に挑戦してみることにした。

日本語配列 with Mac の制限事項

早速買おうと思って調べていたら、日本の代理店のサイトに気になる一文が。

日本語Windowsでのご使用を想定した日本語配列キーボードです。 MacOSでは従来の米国配列モデルのご使用をお勧めいたします。

ref: https://www.edikun.co.jp/kinesis/advantage2_jp.htm

基本的に仕事で使うつもりなので Mac で利用できないとなるとさすがに買えない。 具体的にどのような不都合があるのか、この点はクリアにしておかないといけないと思ってメールで問い合わせてみた。

問い合わせたらすぐに回答をくれてとても助かった。 回答をここに貼り付けても別に問題ないと思うので貼っておく。

■Windows特有キーの利用

日本語配列モデルはWindows利用を想定したキー配列となっており、 半角全角、変換、無変換など、Macには存在しないキーがいくつか配置されております。 上記のキーはMac上では正常にご利用いただけませんのでご注意ください。 MacOSでのご利用をご検討の場合には、その他のキーをリマップするなど 別のキーとしてのご利用を推奨いたします。

■装飾キーに関して

Command、optionなどのMac用装飾キーは付属しておりません。 Windowsキーはcommandキーとして代用利用は可能ですが、 キーキャップの交換が行えませんのでご注意ください。 なお、英語配列モデルではMac利用も想定し、 Mac用装飾キーの付属がございます。

■日本語配列モデルの注意点

利用OSに関わらず、日本語配列モデルはキーボードプログラミングソフト SmartSet Appと互換性がありません。 なお、キーボードに搭載されているリマップ・マクロ機能は同様にございますので、 SmartSet Appを用いない設定方法は可能です。

結論からいうと特に問題はなさそうだ。 まだほとんど Mac では使ってないけど、ちょっと使ってみた感じ大丈夫そう。

キートップが交換できないのが残念だけど、REALFORCE を使ってたときからキートップ問題はあったからあまり気にならないかな。

実際使ってみて

まだ一日しか使ってないけど、思ったより慣れるのは大変じゃなさそう。 公式のマニュアルにも数日でもとの 80 %くらいのパフォーマンスは出せるようになると書いてあったし。

Kinesis で打ち始めて自分のタイピングに少し癖があることが分かった。 "B" を右手で打つ傾向がある。これは直していかないといけないな。 それ以外は特に変な癖はないかも。中学生の頃、それまでの無理やりタッチタイピングをタイピング練習ソフトで強制した甲斐があった。 あとはぜんぜん位置が違うエンターキーとかブラケットとかの位置はどうしても慣れが必要。 最近は JavaScript 書くことがおおいからブラケット問題は辛い…。練習して慣れるしかない。

Kinesis のいいところってキーボード上で簡単にリマップできるところだと思うけど、なるべくデフォルトで使おうと思っている。 最低限、次のところをリマップした。

f:id:hjm333:20210211232558j:plain

  • スペースは左手で押したいので、バックスペースと入替
  • 変換・無変換を一般的な日本語配列と同じになるように入替
  • A の横に CTRL はお約束

変換・無変換に関してはあえて一般的な配列と変えているらしい(開発者のブログ)。開発者の好意を無駄にしてごめん…。

このブログは Kinesis で書いているけど、確かに手首への負担は少ないと感じる。 あとはやっぱり浪漫みたいなところはあって、このキーボードでプログラミングしてるとハッカー感があっていい。 あの Martin Fowler も使ってるみたいだし。

最大のデメリットはかなり高いところ。 税込でほぼ五万円に近い。 本当に使いこなせるか分からない状態でこれを買うには度胸がいる。

今回、実は会社の経費で買っていて、今の会社はこういう備品を申請なしでほぼ自由に買うことができる。 お金で解決できるなら積極的にそうしてくださいという文化があって、生産性が高まる可能性があるなら冒険的な買い物も積極的に推奨している。 こういう制度はとてもありがたいですね。

これを機にトラックパッドもやめてトラックボールにしようかなとも思っているけど、まずは Kinesis に慣れてから考えようかな。

リファクタリング【第2版】- 第1章:リファクタリング - 最初の例

マーティン・ファウラーの『リファクタリング』を読み始めました。

初版が出たのが 1999 年。いつか読みたいと思っていたけど、さすがに内容が古いのかなと思って読んでいなかった。 第2版が出たと聞いて調べてみたら、コード例が JavaScript になって今風になったということで読んでみることにした。

毎日ちょっとづつ読み進めていって章ごとに記事にまとめようと思う。 時間はかかるけど、この本にはそれだけの価値があるはず。

第1章: リファクタリング - 最初の例

第1章は JavaScript で書かれたコードを実際のリファクタリングによって改善していく様子が書かれている。 理論を説明するための前準備として「実例を出す」というのが著者のスタンスらしい。

請求書を発行する JavaScript の 100 行ほどのコードが例になっている。 ここではいくつかのリファクタリングのテクニックが用いられている。

  • 関数の抽出
  • 問い合わせによる一時変数の置きかえ
  • 関数宣言の変更
  • 変数のインライン化
  • ループの分離
  • ステートメントのスライド
  • フェーズの分離
  • 関数の移動
  • ポリモーフィズムによる条件分岐の置きかえ

それぞれの詳細な説明については第2章以降に書かれている。 これらのテクニック一つ一つはとても単純なもので自分もコードを書くときに使っているものもある。

でも、『問い合わせによる一時変数の置きかえ』と『変数のインライン化』はあまり使わないかもしれない。

これは、

for (let product of producst) {
  let thisAmount = getAmount(product);
  ...
  result += `${format(thisAmount/100)}`; 
  totalAmount += thisAmount;
}

というようなコードがあったときに、変数を用いずに次のようにすることだ。

for (let product of producst) {
  result += `${format(getAmount(product)/100)}`; 
  totalAmount += getAmount(product);
}

後者の方が、変数がすくなくて状態が一つ少ないという点、関数の抽出がやりやすくなるという点が有利である。

ただ、個人的には一時変数にいれておいたほうが値がラベリングされていて見やすいんじゃないかと思う。 この時、変数が可変(let)じゃなくて不変(const)になっていることが条件だけど。 関数呼び出しがあるとどうしても副作用を気にしてしまってコードを読むスピードが少し落ちる。自分の場合だけど。

関数呼び出しを二回することでパフォーマンスの方を気にする人がいるかもしれないが、個人的にはこのケースならパフォーマンスは気にしない。 この点は本でも言及されている。

ここで指摘したいのは、この変更はパフォーマンスに大きな影響を与えないし、たとえそうであっても、コードが整然としていれば後からチューニングが容易にできるということです。

--

自分は何かの修正があるとき、修正の内容を意識しながらまずはリファクタリングしてコードを整えてから修正を加えるようにしている。 この方が変更がシンプルになりやすいし、コードレビューしてもらう時に差分が分かりやすいからだ。

構造的に機能を加えにくいプログラムに新規機能を追加しなければならない場合には、まず機能追加が簡単になるようにリファクタリングをしてから追加すること。

このやり方だと作業時間は少し長くなりがちでデメリットもあるんだけど、この本と意見が同じで少し安心した。 まぁリファクタリングの本だし当然といえば当然か。

『スーパーエンジニアへの道 - 技術リーダーシップの人間学』を読んで

明けましておめでとうございます。

2021 年、一発目の読書は『スーパーエンジニアへの道』。

『ライトついてますか?』や『コンサルタントの秘密』などで有名なワインバーグが技術リーダーシップについて書いた本。 邦題はやや誇張されているところがあって、原題は Becoming a Technical Leader: An Organic Problem-Solving Approach。 こちらの方がより内容に近い。

5 年くらい前に一度読んだことがあったのだけど、もう一度読み直したいなと思って新年一発目に読み直した。 ちょうど仕事を変えたのもきっかけの一つかな。 今まで読んできた本の中でもけっこう印象に残る本だったので覚えていることもあったけど、やっぱり忘れていることが多かった。

今回は、以前読んだときよりも「なんだか冗長でまわりくどいなぁ」と感じた。 直球で分かりやすく語るのではなく、例や比喩を用いて回り道をしながら読者を議論に巻き込んでいく。

彼の本(ワインバーグの本)を一気に読みすることはむずかしい。 一つ一つの章が、ちょうど彼の掲げる逸話がそうであるように、何重もの意味を持っているからだ。 何度も何度も私は、立ち止まって考え込んでいる自分に気づく。

「推薦の辞」より

確かに『ライトついてますか?』もそんな感じだったな~。

MOI モデル

この本では、MOI モデルというものを使って技術リーダーシップについて議論する。 技術リーダーはこれらを用いてリーダシップを発揮していくという。

  • 動機付け(Motivation)
  • 組織化(Organization)
  • アイディア or イノベーション(Idea or Innovation)

技術リーダーは最後の「アイディア or イノベーション」を使ってリーダシップを発揮しているケースが多い。 「ものごとをよりよく行うための方法」を開発することでリーダーシップを発揮する。 誤解を恐れずに言えば「あの人は技術力があるね」ってやつがそれに近いのかもしれない。

ただ、動機付けや組織化について忘れてはいけなくて、これらが足りないと苦労する場面も出てくる。 自分がこの3つのうちどの要素に重点を置いてリーダシップを発揮しているのか、自分に足りない要素はどれかという点を意識するとさらによいリーダーシップが発揮できるのかもしれない。

詳細が気になる人は本書を読んでいただければと思う。

技術リーダーになりたいのか

というわけで、この本には長々と技術リーダーシップについて書かれているのだが、最後で「本当に技術リーダーになりたいのか」と読者に疑問を投げかけてくる。

そのうえ「もしなりたいなら、なるべきじゃない」と述べる。

もしあなたが何かをそんなにほしいと思うなら、多分あなたはそれをもらわない方がいい

おそらく読者は技術リーダーシップを身につけたくてこの本を買うのに、最後にこんなことが書かれているなんて。

かくいう自分もその一人で、5 年前に始めてこのオチを読んだ時は「なんだこりゃー」って思ったけど、今考えると「確かにそうかも」と思うところもある。 物事に執着しているときはいい結果がでないとでもいうのだろうか。

当時の自分は Tech Lead のような技術リーダーになるぞーって意気込んでいろいろ頑張っていた記憶がある。 でも、あまりいい結果は出てなかったような気がする。 今は逆に技術リーダーになりたい?って聞かれたら「どうだろうな…」って悩む。 ということは、もしこの本を信じるのなら、今ようやく技術リーダーになる準備ができたのかもしれない。

『デジタル・ミニマリスト』を読んで

『デジタル・ミニマリスト』を読みました。今年最後の読書。

『デジタル・ミニマリスト』は『DEEP WORK - 大事なことに集中する』などの著者、カル・ニューポートの本。 人々の生活に入り込み、多くの時間を支配するようになった SNS などのオンラインコンテンツについて警笛を鳴らしている。 人々の注意を引き、それを広告主売ることで利益を得る行為を「アテンション・エコノミー」と呼び、それと決別する実践的な方法を述べている。

筆者はアテンションエコノミーと決別するために、一ヶ月の「デジタル片付け」を行うことを推奨する。 そして、そのあと、本当に必要なデジタルツールやサービスを、それらに支配されることなくうまく利用するべきだと説く。 数日間デジタルツールから離れる程度では意味がなく、「デジタルツールとの根本的な関わり方を変える必要がある」と述べる。

ただ、決してデジタルツールを使うなということではなく「デジタルツールに生活を支配されることから逃れ、それらを能動的に使うことで幸せになれる」という姿勢だ。 すなわち、意図をもって必要最小限のデジタルツールを使う『デジタル・ミニマリスト』になることで、より充実した人生が過ごせるはずだと述べる。

--

去年、発売した時に読み始めたけど途中で辞めてしまった本。 筆者の著作である『DEEP WORK - 大事なことに集中する』は読んだことあって、考え方がけっこう好きなのでメルマガもフォローしていた。 数年前、この本を書くきっかけになる「デジタル・片づけ」をメルマガで募集していて、興味があったけど結局参加しなかった。 その後、この本が出たので読みたいと思っていた。

前々から少しずつ SNS は絶つようにしていて、最後に残っていたのはツイッターだった。 フォロー数も多くなくて、それほど多くの時間を使っている感覚はなかったけど、なんとなく頻繁にチェックしてしまう習慣は残っていた。 フォローしている人の近況を知るのはまぁいいとして、トレンドを見たりすると炎上しているニュースなどを目にしてしまい時間が奪われている感じはあった。 それにもやもやした気分になったりすることもあったので、時間だけでなく全体として自分のリソースを奪われていたと思う。

「デジタル・片づけ」を始めた当初は無意識にツイッターを開いてリロードをしてしまったりしていたけど(ちなみにこの行為をスロットを回すのと同じらしい)、1週間くらいたつとそれもなくなってほぼ気にならなくなった。 その後、夜に一度だけチェックするようになったがそれ以上にはなってないかな。 フォロー数も多くないから夜に一度チェックすれば数分でその日のツイートを見られるしね。

ただ、まぁそうして余った時間で何をするかっていうのは結構悩んでいる。 自分は基本的にあまり趣味と呼べるものを持っていない。 著者はなるべく手を動かす趣味を見つけろ、みたいなこと書いてたけど、わざわざそういう趣味を新たに見つけようという気も起きないし。 SNS は確かに注意を奪っているのでそれは納得なんだけど、その時間の使い方にあまり説得力はなかったかな。 地域社会に貢献しようとか、より素朴でリアルなゲーム(ボードゲームとか)がいいってのはあまり納得できなかった。

--

年初に毎月一冊本を読んで感想をブログに書くという目標をかかげたけど、一応達成できたな。 来年もこの習慣は続けていきたい。

今年のブログはこれで最後かな。 良いお年を。

転職。

転職しました。 12月1日から新しい会社で働いています。

前職は7年ほど勤めました。 修士卒で入社した一社目は2年7ヶ月で辞めてしまったので、それと比較するとずいぶん長く勤めたと思う。

転職の動機は「新しい環境でチャレンジしてみたくなった」というよくあるやつ。正直、前職の職場環境は良かったので特に不満はなかった。ただ、ハーズバーグのモチベーション理論で「仕事に不満がないことと、仕事に満足していることは異なる」という言葉があるように、不満はなくてもどこか満足してない部分があったのは事実かな。

--

それは、慣れからくる刺激のなさと自分の成長が感じられないところからきていたと思う。俗にいうキャリアプラトーというものだったのかもしれない。もちろん、転職せずとも刺激を見つけたり、自分次第でいくらでも成長できたのだろうけど、環境を大きく変えるのが手っ取り早いなと思って転職活動を始めた。

ここ数年は転職活動をしようと思っても、学生の頃に描いたキャリアイメージに縛られてしまい、今の自分とそのイメージの差から尻込んでしまっていた。でも、今年に入ってから発想を変えることができて、自由に考えられるようになった。これは『イノベーションオブライフ』を読んだ影響も大きい。

そんな状態でずいぶんと気楽に転職活動を始めてみると、よさそうな会社を見つけて面接を受け、縁があって内定をもらったのでそこに決めた。自分のキャリアを見つめ直す機会にもなったし、いい転職活動ができたかな。

--

前職では結構のんびり仕事してきたから、他の会社でやっていけるかな〜という不安がある。まずは試用期間を乗り越えないと。もちろん、そんな低いところに目標を置いていてはいけないが。

いろいろな事情で仕事に費やす時間は20代の頃と比べて減っているけど、そんな環境でも昔よりも結果を出していきたいし、そうしなければと思う。これまで働いてきて、そういう環境でも成果を出すやり方を多少なりとも磨いてきたつもりだし。

--

大学で新しく講義が始まった時、研究室に最初に配属された時、短期のインターンに挑戦した時、会社で働き始めた時、新しいプロジェクトに配属された時。そんな時に感じていたワクワク感みたいなものを久しぶりに味わっている。いつまでもこのワクワク感を感じながらキャリアを歩んでいけるといいんじゃないかと思った。

そのために、決して「定期的に転職する」ということではなく、いつでも新しい環境でチャレンジできる状態に自分を準備しておくことが必要かな。そのためのスキルを身につけることも必要だし、仕事以外の環境もうまく調整しておく必要があるかなと思う。

仕事だけが人生じゃないけど、仕事には人生の多くの時間を費やすのだから、満足できる時間を過ごせるようにしたいですね。

『財務3表一体理解法』と『財務3表図解分析法』を読んで

『財務3表一体理解法』と『財務3表図解分析法』を読みました。11 月の読書。

増補版 財務3表一体理解法 (朝日新書)

増補版 財務3表一体理解法 (朝日新書)

財務3表図解分析法 (朝日新書)

財務3表図解分析法 (朝日新書)

友達がおすすめしていた本で、前々から財務諸表を読めるようになりたいと思っていたのでちょうどよかったので購入。

財務3表である、貸借対照表(BL)、損益計算書(PL)、キャッシュフロー計算書(CS)を解説している本(株主資本等変動計算書の解説もある)。 その名の通り、財務諸表を個別に理解しようとするのではなく、3表のつながりを意識しながら説明している。

基本的な表の読み方は『財務3表一体理解法』の方で解説されているのだけど、この本だけだと数字の意味が分かるだけで「この数字をどう使えばいいの?」という状態になる。 その疑問に対して『財務3表図解分析法』の方では、書かれた数字から企業の状況や経営姿勢を読み取る方法について説明している。 この時に、実際の企業の財務諸表を使って解説しているので、親近感が持てるので理解しやすい。

世の中には財務諸表の解説本なんてたくさん出ているし、もっと分かりやすい本はあるのかもしれないけど、この本は自分にとってまさに必要十分という感じだった。 分量もそれほど多くなくてさくっと読めるので、二冊合わせてささっと読むのがおすすめです。

財務諸表の意義

財務諸表を読めるようにはなりたいと思っていたけど、企業の出す財務諸表にどれほどの意味があるのだろうと思っている。 企業の財務諸表は多かれ少なかれ他者に見られることが意識されていて、数字は意図的に操作されているだろうから。 規則に違反するほどの数字の操作は粉飾になるわけだけど、著者も述べているようにそのレベルの操作である粉飾さえ見抜くことは不可能に近い。

ただ、予め申し上げておきたいのは、財務諸表から粉飾を見抜くのは非常に難しいということです。 特に大企業の粉飾は、財務諸表を作る前の取引の認識の操作や、社外の仕掛けを使うなどして巧妙に仕組まれています。 財務諸表だけから粉飾を見抜くのは、極めて困難であると言わざるを得ません。

ということは、企業が思う「見られたい姿」を読み取ることはできても、企業の「本当の状況」を読み取ることは不可能に近いのではないだろうか。

あと、今の財務諸表ってソフトウェア産業のような業界の実情とは合わないという印象を受けた。ソフトウェア業界で固定資産割合とか重要じゃないだろうし、、、。 筆者も似たようなことを考えていて、ドラッカーの「資本主義社会のあとに訪れる知識社会」を引用して次のように述べている。

企業の情報を知るために、いまは財務諸表を使っていますが、これは資本主義社会に適応しているツールです。 しかし、資本にさほど意味がなくなる知識社会のビジネスでは、現在の財務諸表があまり大きな意味を持たなくなるでしょう。 なぜなら、意味のあるものは人間の知恵であり、その知恵を持つ人間は、自由に会社を移動するからです。 知識社会においては、高い値段で会社を買収しても、そこに知恵のあるキーパーソンがいなくなれば、いくら資産があっても会社としての価値はなくなってしまうのです。

でも、じゃあまったく意味がないかというとそうではなくて、少なくとも企業の一側面を捉える道具としては便利なツールだと思う。 それに、中身を知っているのと知らないのでは大違いだろうから、この本を読んで少しでも理解できるようになってよかった。

この著者、ドラッカーが好きらしく随所随所で言及されていて少し興味がわいてきたけど、この前読んだドラッカーの本がイマイチだったからどうしようかな。。。

ネクスト・ソサエティ

ネクスト・ソサエティ

(c) The King's Museum