一分一秒真剣勝負!

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

Rails Developers Meetup 2018

今かよってタイミングだけど、そろそろRubyKaigiだし下書きに残ってるままだったのでPOSTします。

railsdm.github.io Rails Developer Meetup2018に行ってきました! 今ではYoutubeで各セッションを見られるようになってますね。 以下、小並感。

Day1

1日目はマイクロサービスをテーマにしたセッションが多かったのが印象に残りました。

  • モノリシックなサービスをマイクロサービスに移行した話。
  • モノリシックなサービスになってしまった現状と今マイクロサービスに移行している話。
  • マイクロサービス否定派・肯定派。

あたりの話を一通り聞いたら、日本のウェブ業界で実装されているマイクロサービスの現実がイメージ出来ました。 名言、「分断されたモノリス」は良いフレーズなので個人的に使っていこうと思いました。

Day2

2日目はDockerでRailsの開発を進める時の悩みや技術的負債を半年かけて返済したなど、現場ですぐに活かせそうなノウハウが多めでした。 ただ、やっぱりメインは基調公演「これからの Ruby on Rails」ですね。 日本人のRails commiter3人による鼎談。内容は書いていいのか不明なので書きませんが、今後のRailsが楽しみになる素晴らしい内容でした。

まとめ

業務でRailsを使っているエンジニア向けのMeetupということもあり、発表される内容に実際の業務での泥臭い部分が見え隠れしているところがリアルで良かったです。 最高のMeetupだった。

近況報告

5月末までで 東亜飯店

例のリスト → http://amzn.asia/eMWwoKf

例のリストのCV

ありがとうスナイパー武藤

ありがとうdanny

リーダブルコード

 

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (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時間ぐらいかかるなーとか、こんなん誰かが書いてるだろとか考えてしまい、心の壁がそこにはあってブログに書かないことが増えた。 けど、半端でもなんでもアウトプットをネットに出した方がいいのではないか。 なんてことを仕事帰りの電車で考えていた。