すがブロ

sugamasaoのhatenablogだよ

5〜10巻くらいで終わる完結漫画

発端

なんとなく手持ち無沙汰だったのでさっと読める漫画ないかな〜というお気持ちでのツイートでした(そもそもこの例であげている漫画が5巻で終わってない、まだ未完結、などがあり例として不適切)

有益なオススメをいただいたので、Twitterに流してしまうのはもったいないのでブログにまとめておきます。

お返事

さすがに教えてもらった書籍でアフィリエイトするほどの度胸はないのでみなさん気になったら適当にググって見てください。

個人的な良かった短編漫画

ここからは私の個人的な推し。5巻くらいで完結だとあまり手持ちが無いことがわかりました

内容的な評価は人によって別れそうですが、ぞいぞい言ってないでさあの元ネタです(という感動があった)

例でもあげた彼方のアストラは元気おもしろSFかと思ったらミステリーっていうやつですね

西尾維新らしい内容の漫画。ラストが美しい

救い?そんなものは無い

ミスミソウ 完全版 全2巻セット

ミスミソウ 完全版 全2巻セット

  • メディア: セット買い

まだ完結してないけど巻数が少ないから今追いつくと良いかも漫画

お父さんだって大変なんだというのが伝わってくるんですが、今後どうなっちゃうの?

毎週、新しい話が配信されるたびにTLがめちゃくちゃになるやつ

1話目があまりに衝撃的すぎたやつ。今年の10月からアニメの放送が始まるみたいですね

前半ははちゃめちゃな世界観なのですが、1巻の最後までいくとミステリー風になってきて今後に期待されます

パーフェクト Ruby on Rails 【増補改訂版】の見どころについて簡単にお話ししました

とつぜん登壇してしまったのでそのメモです

Kaigi on Railsの配信練習イベントが先日、7/25に行われました

kaigionrails.org

Kaigi on Rails new - Kaigi on Rails | Doorkeeper

僕はとつぜん誘われた

僕はとつぜん資料を作った

イベントが始まるまで1〜2時間くらいしかなかったので突貫で資料を作った結果、この本にどのくらいの期間を費やしたか知ってしまいました(詳しくは資料を見てね!)。

speakerdeck.com

僕は宣伝した

初版とお間違えないようお気をつけください🙏

gihyo.jp

ちなみに、Kaigi on RailsはCFP募集中とのことですので、みなさんドシドシ応募すると良いかと思います。

kaigionrails.org

パーフェクト Ruby on Rails 【増補改訂版】が7/25に発売します

Rails 6.0に対応したパーフェクトRuby on Rails

f:id:seiunsky:20200619001958j:plain

一部の書店では早売りでもう店頭に並んでいるところもあるようですが、7/25に発売します。

目次はこんな感じになっています。

■Part1 Rails ~ overview

1章 Ruby on Railsの概要
1-1 Railsを使う前に
1-2 Railsの思想
1-3 Railsをはじめよう!!
1-4 scaffoldを使ってRailsでの開発を体験しよう

2章 Ruby on RailsとMVC
2-1 MVCアーキテクチャ
2-2 モデルを扱う
2-3 コントローラの役割
2-4 コントローラとビューの協調とビューテンプレートの基本
2-5 ビューテンプレートについて

3章 押さえておきたいRailsの基本機能
3-1 テストの種類と実行方法
3-2 RackとRailsの関係
3-3 DBを管理する
3-4 秘密情報を管理する
3-5 HTTPとRailsアプリケーション

■Part2 Railsの周辺知識

4章 フロントエンドの開発手法
4-1 Webpackerを使ってJavaScriptを管理する
4-2 SprocketsによるCSSの管理
4-3 Railsに組み込まれているJavaScriptの機能
4-4 控えめなJavaScriptフレームワークStimulus

5章 Rails標準の機能を活用して素早く機能実装する
5-1 Active Jobによる非同期実行
5-2 Active Storageによるファイルアップロード
5-3 Action Mailerによるメール送信
5-4 Action Mailboxによるメール受信
5-5 Action Textによるリッチテキスト機能
5-6 Action Cableによるリアルタイム通信

■Part3 Webアプリケーション開発

6章 Railsアプリケーション開発
6-1 イベント告知アプリケーションを作る
6-2 アプリケーションの作成と下準備
6-3 OAuthを利用して「GitHubでログイン」機能を作る
6-4 イベントの登録機能を作る
6-5 イベントの閲覧機能を作る
6-6 イベントの編集・削除機能を作る
6-7 登録されたイベントへの参加機能,参加キャンセル機能を作る
6-8 退会機能を作る
6-9 おわりに

7章 Railsアプリケーションのテスト
7-1 テストコードをどう書いていくか
7-2 minitestとRSpec
7-3 テストデータを作成する
7-4 システムテスト
7-5 コントローラに対する機能テスト
7-6 モデルに対するテスト

■Part4 Railsアプリケーションの拡張・運用

8章 Railsアプリケーション拡張
8-1 ファイルアップロード機能を作る
8-2 gemで機能拡張をする
8-3 落穂ひろい

9章 コード品質を上げる
9-1 CI(継続的インテグレーション)
9-2 Gemの定期update
9-3 静的解析
9-4 カバレッジ測定
9-5 アプリケーションパフォーマンス測定(APM)

10章 コンテナを利用したRailsアプリケーションの運用
10-1 Railsアプリケーションのインフラ概要
10-2 基本的なDockerイメージの構築
10-3 開発環境におけるDockerの活用
10-4 環境によって可変する設定値や秘匿情報の管理
10-5 ログ出力
10-6 HTTPサーバとの通信

■Part5 エキスパートRails

11章 複雑なドメインを表現する
11-1 アーキテクチャパターンから見るRails
11-2 値オブジェクト
11-3 サービスオブジェクト

12章 複雑なユースケースを実現する
12-1 ユースケースとモデル
12-2 データベースと紐づかないモデルを作る
12-3 フォームオブジェクト
12-4 プレゼンター

13章 複雑なデータ操作を実装する
13-1 Concern
13-2 コールバックオブジェクト

■Appendix Railsの開発環境構築
A-1 WindowsでのRubyとRails環境
A-2 Rubyのインストール

gihyo.jpではEPUB/PDF形式の電子書籍を購入することができます。 gihyo.jp

また、Amazonでは物理本だけでなくKindle版も購入できます。

本書の見どころ

初版から比べると100ページくらい増量しているので、なかなかボリュームのある書籍となっております。 改訂版に伴い、単にRuby/Railsのバージョンを上げただけでなく、現代のWebアプリケーション開発で通じるように再構成を行っています。

追加した部分、削除した部分などありますが、初版パーフェクトRailsを読んだことがある人むけ今北産業+1すると

  • Ruby/Railsのバージョンアップに伴い、新機能*1を反映
  • CoffeeScript(!!)などの解説はやめてWebpackerを主体とした解説に変更
  • インフラに関する話をChefなどのサーバー構築を行う文脈からコンテナ向けへ変更
  • アプリケーションのテストをRSpecからminitestへ変更

という感じです。

また、機能的な部分での改訂だけでなく、既存の機能に関する文章もブラッシュアップしています。 Railsの基本的な部分なんて大して変わってないでしょ?と思うかもしれませんが、たとえばrakeコマンドではなくrailsコマンドを使うだとか並列テストが組み込まれたことや複数DBに対応するrakeタスクの追加があったりするので、それなりに現代の内容へ置き換える必要がありました。そのついでにいろいろ書き直したりしたので、復習がてらチラ見するのも良いかもしれませんね*2

他に目次レベルで目を引く部分として、初版では便利gemの紹介に1つ章を割いていましたがそれは辞めてAction Mailerなどの便利コンポーネントについての解説を行っています。ここら辺は紹介しているgemがRails本体に組み込まれたなども要因ですが、標準機能をきちんと解説してRails Wayにのっとってイイ感じに開発を進められるためのサポートを行いたいというメッセージでもあります。

本書が出版に至るまで

初版から6年経っているのは様々な事情でグズグズしていた結果なのですが、グズグズしていた結果、パーフェクトRailsの準備としてムック本出しましょう!!!!!!!!!1という超展開になったのが「Ruby on Rails 6 エンジニア養成読本」だったんですね。

……そう、つまり👇のツイートは完全に核心をついた言葉で、実際にパーフェクトRuby on Railsではこのムック本に書いた内容から転生した文章もいくつかあります(この時のigaigaさんはまさか自分が巻き込まれるとは思っていなかったでしょう、ガハハ)。

それはそれとして

今回の改訂版執筆にあたり、心強いメンバーとして共著に参加してくださった @igaiga555さん、@_yasaichiさん、ありがとうございました。厳しい戦いを乗り越えることとができたのはお二人の協力があってのことです。

また、時間がタイトな状況にもかかわらず本書のレビューをしていただいた@koicさん、@y_yagiさん本当にありがとうございました。有識者による助言は本当にありがたく、大変助かりました🙇‍♀️🙇‍♀️🙇‍♀️

そして、本書を手に取っていただけた方へ。本書を読んで、少しでも得るものがあったと思っていただければ幸いです。

*1:Action Mailerや複数DBについてなど

*2:たとえば2章はRailsの基礎を解説していますが、初版から比べると20ページくらい増えてますね。今気がついた。ウケる

ParallelsでWindows 10のWSL2を使う

みなさん、Windowsは好きですか? 私は好きです。正確にいうとエクスプローラーが好きです。

さて、そんなわけで人生においてWindowsを使う必要が出てくるケースというのは少なからずあり、だがしかし実機があるわけでもないという状態だが俺はWindows上のWSL 2を使いたいんだ。

そのような時、たとえばMacユーザーであればmacOS上にParallelsをインストールし、Parallels上のWindowsでWSLを使えば望むものが手に入りますね*1

この時、Parallelsで一つだけ有効にしておかないといけない設定があります。それは「ネストされた仮想化を有効にする」です。この設定はイメージを終了させないと変更できないのですが、とにかくこれを有効にしないとWSLでLinuxイメージが立ち上がらなくてハマること間違いなしです。

f:id:seiunsky:20200609013500p:plain
Windowsイメージの設定画面

ちなみに、使っているParallesのバージョンは「Parallels Desktop 15 for Mac Pro Edition」です。

参考文献

Windows 10でWSL 2を使う場合はここら辺を参考にするのが良いでしょう

*1:Linux環境が欲しいならParallelsで直接Linuxを使うなりDockerを使うなりすれば良いと思う人もいらっしゃるでしょうが、冷静に考えてはいけません。ここではWSLを使うことに意味があるのです

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:20200603090525p:plain
バックスペースでインデントを消した時にインデント単位で消す

※6/3 2枚目の画像の設定がデフォルトのままだったので更新

近況 -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:自分が怖いと思われてないか、ではなく自分が怖いと思う人がいないか、です