一分一秒真剣勝負!

Ruby, Railsなど。Web系の技術ネタを充実させたい・・が、そうなるかは分からない。

リーダブルコード

 

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

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

 

有名な本だけれど読んでなかったのだが、某所で話題になったのをきっかけに一気に読んでみた。

 

正直、10数年ソフトウェアエンジニアとして生きてきたオッサンにとっては「まあそうだよね」という内容で、95%以上の部分は本書を読む前から自然とやっている内容でした・・・・・と言うならお前の書くコードはリーダブルコードに出てくる内容を全て網羅した綺麗なコードばかりなんだろうな?と言われるとそうとは言い切れないですし、同じテーマで本なりブログなり書いてみろよと言われても、本書の内容をサラサラ書いていくことは出来ないと思います。これらの内容を言語化し、うまくまとめたことに価値がある。

書かれているノウハウに反論したくなるような部分はほぼ無く、リーダブルなコードを(書きたい || 書くべき)プログラマ全員に読んでもらいたい名書であることは間違いありません。

 

本書を一通り読んでみて思ったのは、ある一つの事を意識していれば最終的にはリーダブルなコードに行き着くんだなということ。それは「自分以外のエンジニアが理解出来るコードを書く」ということです。

新卒でも理解できるか?即戦力のエンジニアが見たらどう思う?自分が今置かれている環境で想定できるエンジニアをイメージし、その人が初見でも読める実装を目指す。そうやって数年コードを書き続けていれば本書は不要かもしれません。

しかし本書は、

  • 若手
  • 同僚にお前のコード汚くて読めないと罵られた
  • なんか俺が作った部分は俺以外のエンジニアが触りたがらないなー、なんでだろう?と日々思っている

といったエンジニアが読めば、最速でリーダブルなコードを書けるようになる一冊であることは間違いありません。

MacBookAirのバッテリーを交換した

今のMacBookAir(2012mid)を使い続けて5年。 ついにバッテリーの表示が「バッテリーの交換修理」となってしまいました。 最近やたらとバッテリーが切れる時間が早いので嫌な予感はしていたけど、ついにこの時が来た。 通常であればAppleストアに持ち込むんですが、バッテリーの交換をすると12,800円〜もかかってしまう。 流石に来年にはMBPに買い換えようと思っているので、今のタイミングでこの金額をかけるのは微妙。 というわけで自分でバッテリーを交換することにしました。 Amazonで探すと5,299円!想像以上に安かったので速攻でポチりました。

届いてみると専用のドライバーも付属しており、すぐに交換できるようになっていました。 f:id:yatmsu:20171211204117j:plain MacBookAirの中身は想像以上にシンプルな作りで、バッテリーを単純に外して差し込むだけで終了しました。 自前でバッテリーを交換したのは初めてだったけど、想像以上に簡単だったので今後も自分で交換しようと思いました。

対応している型番は以下の通り。

(A1369,Macbook Air3,2) - only for Late-2010 version

MC503xx/AMBAIR 13.3/1.86/2/128FLASH MC504xx/AMBAIR 13.3/1.86/2/256FLASH

(A1369,Macbook Air4,2) - only for Mid-2011version

MC965xx/AMBAIR 13.3/1.7/4/128FLASH MC966xx/AMBAIR 13.3/1.7/4/256FLASH

(A1466,Macbook Air5,2) - only for Mid-2012 version

MD231xx/AMBAIR 13.3/1.8/4/128FLASH MD232xx/AMBAIR 13.3/2.0/4/256FLASH

(A1466,Macbook Air6,2) - only for Mid-2013 version

MD760xx/AMBAIR 13.3/1.3/4/128FLASH MD761xx/AMBAIR 13.3/1.3/4/256FLASH

(A1466,Macbook Air6,2) - only for Mid-2014 version

MD760xx/BMBAIR 13.3/1.4/4/128FLASH MD761xx/BMBAIR 13.3/1.4/4/256FLASH

(A1466,Macbook Air7,2) - only for Early-2015 version

MJVE2LL/A MBAIR 13.3/1.6/4/128FLASH MJVG2LL/A MBAIR 13.3/1.6/4/256FLASH

Macbook Air 13-inch A1369/A1466 (2011/2012/2 13/2014/2015年発売)ノートパソコンに適用されます。 Macbook Air 11-inch A1370/A1495 ノートパソコンは適用されません。

Elasticsearch2.3.3から5.4.3への移行作業

去年からElasticsearchをいじってたんだけど、全くブログなどに書いてなかったので書いてみる。 ツッコミとか大歓迎です。

あらすじ

HerokuのAdd-onsでElastic Cloudを使っているのですが、ある日、Elasticsearch 2.3 のサポート期限終了のお知らせが届きました。

Elasticsearch 2.3 reaches end of life (EOL) on September 30

This is a friendly reminder that Elasticsearch 2.3 reaches end of life on September 30, 2017. According to our records, you are still running one or more Elastic Cloud clusters using Elasticsearch version 2.3. Before that date, you need to upgrade your clusters to a more recent version. We highly recommend you to upgrade to the latest version which is Elasticsearch 5.4. Please note that if you upgrade from an Elasticsearch version prior to version 5 make sure you read the documentation on how to Upgrade to Elasticsearch 5.x.

If you have not upgraded your clusters by September 30, we will upgrade the clusters to the latest available version on the 2.x branch for you. As of today, this is Elasticsearch 2.4.

If you have a Cloud Gold or Platinum subscription, our support engineers can help you with this upgrade. Open a case to get started.

Kind Regards,

Your Elastic Cloud Team

サポートの終了がちょっと早い気もしたけど、古いバージョンをいつまでもサポートするのは良くない文明派なので素直にバージョンアップすることにしました。

状況

  • Heroku
  • Elasticserch(2.3.3)をHeroku Add-onsから利用中
  • indexの元ネタはPostgresqlから1日1回インポート
  • バージョン5.4.3へダウンタイムゼロで移行したい

バージョンアップ前の確認

Elasticsearch Migration Helperというバージョンアップ前のチェックツールが公式より提供されています。 Elastic Cloudでは標準でこれがインストール済みなので確認します。

f:id:yatmsu:20170716002629p:plain

自分の環境ではオールグリーン。 でも実際は1.xの時に作成した未使用のindexが残っていて、初回はレッドになりました。indexの1.x→5.xへの移行はできないんですね。これは削除するだけの対応で終了となりました。

Blue-Greenデプロイをしたい

Elasticsearchはメジャーバージョンアップを行う場合、Full cluster restart upgradeでバージョンアップを行わなければならない為、一定の時間クラスタが停止してしまいます。 そこで、ダウンタイムゼロでの移行を実現する為Blue-Greenデプロイをしようと考えました。リモートクラスタからもデータ参照が可能になったReindex APIを使えば簡単にできそうだなと予測。 しかし、複数クラスタを起動しようとしたところ、Heroku Add-onsのElastic Cloudだと単一のクラスタしか起動できない(Elastic Cloud単体で契約すると複数クラスタの起動可能)事に気付きました。これではBlue-Greenデプロイ出来ない。

別のappを使ってBlue-Greenデプロイ

そこで、ステージング環境として使っていたappで起動しているElasticsearchのクラスタを5.4.3に移行し、一時的にプロダクションからステージングのElasticsearchを参照させ、その間にプロダクションのバージョンを上げ、Elasticsearchの向き先を戻す・・・という手順で移行しました。

Elasticsearch(production-app)

     ↑ 通常はこっちを参照

WebServer(production-app)

     ↓ 一時的にこちらを参照させる

Elasticsearch(staging-app)

なんかイマイチだけど、まあこんなもんですね。

こうしておけば良かったこと

HerokuのAdd-onsではなく、Elastic Cloud単体で契約しておけばよかったなと。 Elastic Cloudは素晴らしいサービスなんだけども、HerokuのAdd-onsだと複数クラスタの運用が出来ないことだけが残念でした。今後の複数クラスタ起動対応に期待。

アウトプット

技術ぽいネタをロクに書いてない。 あー、これ書くには3時間ぐらいかかるなーとか、こんなん誰かが書いてるだろとか考えてしまい、心の壁がそこにはあってブログに書かないことが増えた。 けど、半端でもなんでもアウトプットをネットに出した方がいいのではないか。 なんてことを仕事帰りの電車で考えていた。

4Kディスプレイ購入これはオススメ(iiyama GB2888UHSU-B1 28型)

4Kディスプレイ購入から2ヶ月程経過したので感想を。 買ったのはiiyamaのGB2888UHSU-B1 28型です!

f:id:yatmsu:20170305193448j:plain

そもそもなんで4Kなのか

最初はHDを買おうとしていましたが、最近のHD液晶ディスプレイは安いものだと1万3000円程度で買えるので、こんなに安いのならデュアルディスプレイにしようかと考えていました。しかし会社でデュアルディスプレイな環境を用意してもらっているものの、何故か自分はディスプレイを1画面しか見なくなってしまうんですよね。どうも自分はデュアルディスプレイが向いてないと気付き、解像度の高い4Kディスプレイを1枚買おうという流れになりました。

HD/4Kのコンソール画面比較

ウェブエンジニアなので解像度が上がった場合、コードの見え方はどう変わるのか気になる。 というわけで以下が比較のキャプ画像。

  • HDのコンソール f:id:yatmsu:20170323134448j:plain

  • 4Kのコンソール f:id:yatmsu:20170323050356j:plain

キャプチャー画像の比較だとそこまで変化が無いように感じるけど、実際使ってみるとかなりの差を感じました。 コードの見通しが凄いよくなって捗る捗る。これはいい買い物をしたぞと思ってます。

4Kディスプレイにして一番良かったことは

それは多少姿勢が良くなったこと。

プログラマにありがちな椅子に浅く腰を掛けるこんな姿勢あるじゃないですか。 これをやると4Kディスプレイの場合、解像度が高い為に文字が小さく表示されるわけで、ディスプレイ上部に表示しているコードが見づらくなるんですよね。つまり姿勢を良くしないとコードが見えないわけで、自然と正しい姿勢になるわけです。

コスパがいい

PC向きの4Kディスプレイを色々見たところ、27〜28型という条件だとGB2888UHSU-B1が最もコスパがいいと判断しました。 PC関連のモノって結局は消耗品なので、今から無駄にハイスペックな4Kディスプレイを買うよりはコスパがいいものを買って数年で買い替えた方が得ですよね。そうなるとやはりGB2888UHSU-B1になってしまうんです。

Happy Hacking Keyboard Professional BT 英語配列/墨 PD-KB600B 購入レビュー

何年待っていたのか分からないぐらい待っていたHHKBのBluetooth版を購入。

基本的には問題なく快適に使えたけど、やたらスリープするまでの時間が短かったので背面のDIPスイッチのSW6をONにしてスリープまでの時間を長くしました。これでワイヤレスでの使用感としてはAppleのwireless keyboardと同等になり、快適に使えてます。バッテリーがリチウムイオンでないのが今っぽくないなと思ったけど、バッテリーの劣化を考慮すると長期間使うキーボードなので乾電池は最適かなと思えてきた。あとは接続先のデバイスを切り替えるスイッチがあれば完璧かなといったところ。

それにしてもケーブルが1本無くなっただけで快適になるなと思った。デスクの上をサッと拭きやすくなったし、見た目的にもスッキリしたので。