すがブロ

sugamasaoのhatenablogだよ

RubyMineの設定メモ

基本的にデフォルト厨なのですが、そうは言っても二つだけは設定するようにしています

インデントの調整

  • Editor -> Code Style -> Ruby -> Tabs and Indents
  • Continuation indent
    • 4 -> 2に変更します

Hashの定義の中などでインデントするときの挙動を良い感じにします。

f:id:seiunsky:20200602225242p:plain
Continuation indentを4 -> 2に変更する

バックスペース押した時の挙動

  • Editor -> General -> Smart Keys
  • Unindent on Backspace
    • To nearest indent position に変更

タブ文字しかない場合などに一行まるっと消すのではなく、インデント分だけ消すようにします

f:id:seiunsky:20200602225712p:plain
バックスペースで文字を消した時にスペースを消す

近況 -Hello, world!-

前回のエントリーの答え合わせです。

私のコメントも載っているのでお時間のある時にご確認ください(面白そうだな〜と思ったらENTERボタンを押してね!)。

(あとは2ヶ月後にもちゃんと働けていることを祈るばかりですね!)

転職活動をしていた(あるいはアラフォー近くのソフトウェアエンジニア転職のメモ)

このようにTwitterでは退職の匂わせ発言などをしていたわけですが、実はここ半年ほど転職活動をしていました。 その時の活動記録です。

2020/4までの会社には10年チョット在籍していて、リーマンショックの頃に入社し、新コロナ禍での退社となりました。

何をやっているんでしたっけ?

2020/3まではRuby/RailsWebサービスの開発・運用・保守をやっていました*1。 サービス立ち上げ以来9年くらい携わっており、Railsは3.0?くらいの頃に rails new したものをメンテし続けて今は6.0.2です。

担当業務はシステム構成の設計やデプロイフローの策定、アプリケーションの設計や仕様の検討から実装、テストまで。 なおオンプレ時代はMySQLのパラメーター設計とかも多少はやったものの、RDS時代になってしまったので全て忘れたもよう。

まー同じサービスを長いこと触っていると技術領域に偏りが出るし、飽きたというのがわかりやすいですかね。

転職するにあたりどんなことをやっていたか

  • 2019/8
    • 転職しようと思い立つ
    • 転職ドラフトに登録してみようと思ったが時期を逃したので次回まで待つ
  • 2019/10
    • 転職ドラフトに載せる
    • いくつかのオファーからカジュアル面談を実施してもらう
      • オファーを断るにしても承諾するにしても、結構丁寧に書いてくれるのでこっちもめちゃくちゃ気を使ってしまった
      • 「いやーパーフェクトRuby(Rails)の著者が転職ドラフトに出てきてびっくりしましたよ」は何回か言われる
    • 何人かの知り合いに転職活動をしていることを伝える
      • 待遇面での相談など色々助かりました🙏
  • 2019/11
    • 個人的に気になっていた企業に対して直接コンタクトを取る
      • カジュアル面談を対応して頂いた皆さんありがとうございました
  • 2019/12
    • 合いそうな会社に対して採用面接を実施し始める
  • 2020/1
    • 採用面接を受けたところから内定が出始める
    • 内定をもらった会社の中でどの会社を選ぶかにあたり、どのように情報を集めるかが焦点になる
  • 2020/2
    • 2020/1から引き続き、会食をセッティングしてもらったり、オフィスに伺わせてもらったりして各社の知見を貯める
    • 新コロナ禍の影響でスケジュールにリスケがあり、各社に待ってもらう期間を延長してもらうためジャンピング土下座
  • 2020/3
    • 2020/3末、最終的に入社する会社を決めて、各社に連絡
  • 2020/4
    • イマココ

だいたい11月〜12月はカジュアル面談や採用面接をしていたので、クッソ忙しかったですね。 終業後に対応していただいたので、19:30〜20:30+αくらいを週2〜3件あったりという感じになってしまったのだった。。。コミュ障にはあまりにキツい。

翌年の1月にだいたい最終面接を実施したり内定頂いたあとに会食を開いてもらったりなど「どの会社に入社するか」を決めるための時間を少し頂いた感じで*2、正味の転職活動としては3〜4ヶ月くらいという感じでした。

どういう観点で考えていたの

自分のキャリアとしてRuby/Railsを使ったサーバーサイドアプリケーションの開発をしてきたので、基本的にはその延長で幅を広げられるような体験ができそうな仕事を考えていました。

絶対Ruby/Railsを使いたいというこだわりがあったわけではないのですが、如何せん同じ仕事を長い間やってきたので、そこを手放してまともなパフォーマンスが出せるのか……という不安があり、結果としてはRuby/Railsをメインで扱っている会社を中心に受けた感じです。

採用プロセスをスムーズに運べたという点では新コロナ禍の本格化前に決まったので良かったものの、新コロナ禍の対応を見れたらそれはそれで各社を検討する上では良かったのかもしれません*3

業態にはあまりこだわりはなくて、絶対toCが良いとかそういうわけではなかったです。あくどい商売しているようなイメージのところでなければw あとは実際に話を聞いてフィーリングが合えば👌みたいなノリでした。

一応、簡単に転職時に意識したポイントをあげるとこんな感じ(自分が自覚的だったところ)

  • 待遇(そりゃそうだ)
  • 事業的に成長してそうなところ(そりゃそうだ)
  • 勤務体系
    • フルリモートが良いとかではなく、どういうポリシーを敷いているかという観点ですね
    • 基本は出社、たまにリモート勤務ができるくらいが良いですね〜と各社との面談などで話していましたが、結果としては初手からフルリモートになってしまった(ゴクリ)
  • Ruby/Railsのバージョン
    • 古いからダメというわけではなく、どういう開発ポリシーを持っているかの目安として
      • とはいえ、「古いし古いままで良いです」というところはさすがにね😇
  • チーム内のプロダクトのリリースサイクル(5/1追記)
    • 良し悪しはなくて、どういう感じで開発をしているかを聞くため
    • まあ半年に一度のビッグバンリリースです、だったらちょっといやかなとかはありますね……
  • チームでの開発をしているところ
    • 少人数で「いい感じにやっていく」の開発が長かったので、チーム開発の何らかのプラクティスを体験したいという思いがある
  • 社員に(インターネットで)怖い人がいない(と思われる)こと*4
    • 会えば良い人ですよって言われてもインターネットで発言見ちゃってメンタルに影響受けたくないですしおすし(嫌なら見なきゃ良いんですが、「なんか言われてるかも」とか「それ、私のこと?」とかあると疲れるジャン」)
  • 会社があんまりウェイウェイしてないところ(パリピ怖いお)

他にはどういうポイントがあるのかなあ。皆さんどういうところを見て決めてるんですかね……?

で、どこに入社したの?

それはまあ試用期間を無事に乗り越えられたら、ですかね(普通に不採用になったら面白すぎるので)。

*1:4月は有給消化なので、在籍という意味では4月一杯までだった

*2:新コロナ禍でそこが伸びてしまい、内定承諾を出すまで時間がかかってしまって各社の皆さんには本当にお待たせしてしまいました・・・

*3:ちなみに、最終的に迷った会社さんはどこも良い対応をされていたのでそこは杞憂でした

*4:自分が怖いと思われてないか、ではなく自分が怖いと思う人がいないか、です

銀座Rails#20でオンライン登壇してきました

銀座Rails#18改め銀座Rails#20

当初は銀座Rails#18での登壇依頼ということでお話をいただいていたのですが、昨今のコロナ事情で延期 -> #20でオンライン登壇という形になりました(ZOOMの準備などありがとうございました)。

ginza-rails.connpass.com

何を話したか

昨年秋に執筆した「Ruby on Rails 6 エンジニア養成読本」からRails 6.0の新機能についていくつかピックアップして話しました。

speakerdeck.com

今時Rails 6.0の新機能なんてみんな知っとるやろ……みたいな気持ちもありましたが、ご参考になれば幸いです。

ちなみに、複数DBのレプリケーション構成を試してみたい時は以下のDockerイメージを使うと便利です。 sugamasao.hatenablog.com

合わせて読みたい

Ruby on Rails 6 エンジニア 養成読本 (Software Design plusシリーズ)

かんたんに検証用のMySQLレプリケーション環境を作る

docker-composeで動かすくんです

DockerでMySQLを使うのも、レプリケーションの設定をするのも個別には難しくないのですが、Docker MySQL環境変数を毎回調べるのが面倒、レプリケーションするときのposition取得が面倒などがあり、シュッと立ち上がる環境を作っておきたくなったのでした。

github.com

設定を見てもらえればわかると思いますが、検証目的のテキトー設定なので間違ってもプロダクション環境で利用しないでくださいね

Ruby on Rails 6 エンジニア 養成読本という本を共著で執筆しました

f:id:seiunsky:20191005004542j:plain
Ruby on Rails 6 エンジニア 養成読本

まずはじめに

  • 10/26 発売
  • 電子版は同日か少し遅れて発売予定 10/19追記 : 技術評論社電子書籍サイトから購入可能になりました
  • @netwillnet さんと共著です
  • Rails 6.0対応の書籍としてはそれなりに早いタイミングでの出版だと思います
    • 執筆しているときは最速で出したいという思いがありましたが、実際のところ最速なのかはわからないです😅

どのような本ですか?

目次はこんな感じです

巻頭特集 ようこそRuby on Railsの世界へ~ここが変わった! Rails 6の新機能~

- Action Textによるリッチテキスト機能の追加
- 複数の DB へ接続を行う機能の追加
- Action Mailboxによるメール受信機能の追加

特集1 Rails 6ではじめるRuby on Rails再入門

- 第1章 RubyとRailsの基礎知識
- 第2章 Railsコマンドの基本
- 第3章 Rails の開発を体験しよう
- 第4章 Rails アプリケーションを公開しよう

特集2 Rails 6からのイマドキ フロントエンド開発

- 第1章 webpack へ変わったJavaScriptの管理
- 第2章 SprocketsによるCSSの管理
- 第3章 Railsに標準で組み込まれているJavaScript
- 第4章 控えめなJSフレームワークStimulus

特集3 Rails新時代の組み込みテスト

- 第1章 Railsに標準で組み込まれているテストの種類と並列テスト
- 第2章 ユニットテストでテストを書こう
- 第3章 システムテストでアプリケーション全体の動作を確認する

一般記事    押さえておきたい! Rails 6で改善された機能一覧

- Active Storageによるファイルアップロード
- credentials による秘密情報の管理
- Early HintsやCSPへの対応

どのような人が対象ですか?

各特集・記事ごとに対象読者レベルは多少異なりますが大きく分けると以下のような感じです。

普段Railsを使っているが6.0についてはあんまりキャッチアップできてない……という人

  • 巻頭特集・特集2・一般記事
    • 主に、6.0になって変更になった部分に主眼を置いた解説になっています
    • 新しく追加された Action Text や 改善された credentials の解説があるので、どこらへんが変わったのか手軽にキャッチアップしたい人にオススメです
    • 特集2ではJavaScript周りをWebpackerで扱う方法などを解説しています

Railsを使うことになったがよくわからんのだよな・・・(あるいは、久しぶりにRails触って見るか!)という人

  • 特集1・特集2・特集3
    • 特集1はrubyやgemの使い方から簡単なrails newの使い方など初歩的な使い方について解説しています
      • 他言語をやっていて、これからRubyを触るような人にオススメです
    • 特集2, 特集3では6.0で変更内容がある部分は反映しているので、ここら辺は経験者が全く読む価値がないというわけではないです(きっと……)

個人的なオススメ内容

一部はruby-jpというコミュニティ*1でも話した内容ですが・・・

  • credentialsの解説は、今までの機密情報の扱い方の経緯を振り返り、6.0ではどうなっているの?ということを解説しています。この機能は紆余曲折あって色々変わっているので、きちんと流れを追って最新の形をスッと知ることができるのは便利かなと思います
  • あとは単純に複数DBとかデフォルトになったWebpackerあたりの解説があるのは便利ジャンという感じがあります

謝辞

この書籍を執筆するにあたって、@y_yagiさん、@madogiwa_boyさんにレビューしていただけました。 しょうもないミスから説明不足な点など、第三者の目で見ていただけたことでグッとクオリティをあげることができました。本当にありがとうございます 🙇‍♂️

ご購入は

gihyoさんやAmazonなどで購入できます(なんかamazonのリンクだとプレビューがうまく表示されないのでリンクだけ・・・)

gihyo.jp

https://www.amazon.co.jp/o/ASIN/4297108690/

繰り返しになりますが、電子版も近いうちに発売する予定ですのでそちらをご所望の方はもうしばしお待ちください

以下のサイトから電子書籍版を購入することが可能です(10/19追記)。

gihyo.jp

それはそれとして、私が執筆に関わった書籍はこれで5冊目になりました(パーフェクトRubyの改定作業をカウントすると6冊)。褒めてくれて良いんですよ??? https://www.amazon.co.jp/-/e/B00EEQ6M1M

*1:詳しくはここら辺をご確認ください https://pocke.hatenablog.com/entry/2019/08/02/181140

令和の時代、hirbに変わるツールはあるのか問題

表形式の方がパッとみたときに分かりやすい反面、カラムが多いと表形式じゃない方が見やすいとかもあるのでケースバイケースなのですが、まあ敢えて剥がすほどでもないかなと思って使い続けて数年。

開発が活発ではないので、そろそろ次世代的なものが出てきているのか、あるいは人類は表形式じゃなくてもやっていけるのか。

hirb is 何

こんな感じに表示されるActiveRecordのオブジェクトに対して

irb(main):002:0> Blog.all
  Blog Load (0.4ms)  SELECT "blogs".* FROM "blogs" LIMIT ?  [["LIMIT", 11]]
=> #<ActiveRecord::Relation [#<Blog id: 1, title: "cool title", body: "cool text", created_at: "2019-10-07 06:37:13", updated_at: "2019-10-07 06:37:13">]>

Gemfileにhirbを追加してbundle installすると

irb(main):002:0> Hirb.enable
=> true
irb(main):003:0> Blog.all
  Blog Load (0.2ms)  SELECT "blogs".* FROM "blogs"
+----+------------+-----------+-------------------------+-------------------------+
| id | title      | body      | created_at              | updated_at              |
+----+------------+-----------+-------------------------+-------------------------+
| 1  | cool title | cool text | 2019-10-07 06:37:13 UTC | 2019-10-07 06:37:13 UTC |
+----+------------+-----------+-------------------------+-------------------------+
1 row in set

こんな感じしてくれる君です。ただ、このままだと日本語などでカラムの幅がずれてしまう。

そのため、hirbを使うときは同時にhirb-unicodeも利用するとシュッと表示されるようと思いきやメンテされてない問題があってforkしたhrib-unicode-steakknifeを使う*1。こっちは動く程度にはメンテされているので、シュッと動きます。

というのがhirb関連の動きなわけですが

そもそも世の中の人は使ってるんですか???という疑問をアンケートにしてみました。

結果を見ると、hirbを利用している割合と同じくらいの人が(!!!)「代替gemを使っている」という選択をしてくれました。 しかし、残念なことにリプライは無かったので具体的に何を使っているかは不明です。

悲しいですね😇