give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

伊藤さんの2022年の振り返り(というか1年分の近況報告?)

はじめに

いやあ、気付いたら2022年もあっというまに年末ですね。
今年も公私共に非常に忙しい一年でした…。

2022年は今のところ43本(このエントリを含めると44本)のブログを書いたようです。

とはいえ、実は「あれも書きたい、これも書きたい」と思いながら、書くタイミングを逃して何も書けなかったエピソードがいくつかあります。

今回はそんな「2022年に書きそびれたエピソードたち」をざっくりまとめていきます。

数日前に撮った、本文とは無関係な朝焼けの写真です

【もくじ】

いくつかのコミュニティ活動を休止して、新しいコミュニティ活動を始めた

近年は新型コロナ影響でオフラインで開催する勉強会を開催しにくくなってしまいました。
この半年ぐらいで徐々にオフライン勉強会が復活しつつありますが、個人的には感染のリスクを考えると「うーん」という気持ちになってしまいます。

少なくとも自分が運営しているコミュニティ活動については、この2〜3年全然動けていなかった(し、この先もちょっと不透明)なので、ここでいったん区切りを付けようと思いました。

一方で、会社の有志で新しい勉強会コミュニティを作ったりもしました。

西脇.rbの活動を休止した

2013年からやっていた西脇.rbの活動をいったん休止することにしました。
2018年と2019年は「年一回だけでも集まろう」ということでプログラミング合宿を開催していたのですが、新型コロナとの相性が悪すぎるのでこれも開催できなくなってしまいました。

最後に開催したのは2019年に松江で開催したプログラミング合宿です。
いやあ、あれはめちゃくちゃ楽しかったなあ。新型コロナがなかったらぜひまたやりたいんだけど。

とはいえ、再開の目処が立たないので、いったん「休止」という選択肢を採りました。

Rubyist Connectというwebサービスをクローズした

Rubyist Connectというのは前述の西脇.rbの勉強会で開発&利用していたRailsアプリで、勉強会参加者のプロフィールを掲載することができました。
しかし、勉強会が開けなくなったので利用する機会がほとんどなくなったのと、Heroku有料化の煽りを受けて「使ってないのに維持費だけかかってしまう」という状況になってしまったので、残念ながらクローズすることにしました。(長年お世話になりました🙏)


TokyoGirls.rbを休止してプール金を日本Rubyの会に寄付した

TokyoGirls.rbは「女性も参加しやすい(でも女性限定ではない)Rubyコミュニティ」というポリシーで活動していたRubyコミュニティです。
こちらもやはり「コロナ禍ではイベントを開催しにくい」という理由で2019年12月のイベントを最後に活動が止まってしまいました。
西脇.rbと同様に再開の目処が立たないので、いったん「休止」としました。

ちなみにコミュニティのプール金が少し余っていたので、日本Rubyの会に1万円寄付させてもらいました。

コミュニティの活動は止まってしまいましたが、このコミュニティで作った「自由に再利用&改変可能(CC BY)なアンチハラスメントポリシー」は意外とあちこちのコミュニティで「参考文献」としてリンクを載せてもらっているので、そういうのを見かけると短い活動期間ながらも多少意義はあったかな、と思ったりします。

また、TokyoGirls.rbでは無料で託児室を提供したりしました。

こういった子育て世代へ配慮した勉強会という点でもTokyoGirls.rbは良い実績を残せたんじゃないかと思っています。

Hotwire.loveという勉強会コミュニティを作った

いきなりちょっと寂しい話題が続いてしまいましたが、前向きな活動もあります!
弊社ソニックガーデンの面々と一緒に、Hotwire.loveというHotwireに特化した勉強会コミュニティを今年立ち上げました。

毎月第2・第4木曜日の18時からオンラインで勉強会を開催しています。
ちなみに次回は2023年1月26日に開催する予定です。

勉強会といっても、あまり難しいことは考えず、Hotwireについてワイワイガヤガヤみんなで楽しく話しましょう、というコンセプトでやっているゆるい勉強会です。

初心者でも上級者でも誰でも参加OKなので、「Hotwire、チョットキニナル」という方はふらっと遊びに来てみてください!

ちなみに下の写真は前回(vol.8)に撮った記念写真です(2022年の最後の勉強会なので、"Good-bye 22!"のダブルピース)。


OSS活動

僕はどちらかというとあまりOSS活動が活発でないエンジニアなんですが、今年は例年と違って小粒なコントリビュートをいくつかやったりしていました。

FirestoreをActiveRecordっぽく操作できるgemを作った

ActAsFireRecordBetaというFirestoreをActiveRecordっぽく操作できるgemを作りました。
お遊びでないちゃんとしたgemを作ったのはこれが初めてかもしれません(とはいえ、自分以外の人の利用に耐えられるかどうかは確信がありませんが……)。

こんな感じでFirestoreが操作できるようになります。

# Create
book = Book.new(title: 'An Awesome Book', published_on: '2022-12-01'.to_date, page: 200)
book.save
bool.id #=> IdG0ZWT0I5DucEQuRgoP

# Read
id = 'IdG0ZWT0I5DucEQuRgoP'
book = Book.find(id)

# Update
book.update(page: 210)

# Delete
book.destroy

詳しくはこちらのQiita記事をご覧ください〜。


Ransackで大きな数値を渡されてもエラーが出ないようにした

User.ransack(age_eq: 123456789012345678901)のように非常に大きな数値を渡すとActiveModel::RangeErrorが発生していたのですが、以下のPRでこのエラーが発生しないように修正しました。

ただし、PR自体は6月にマージされたんですが、まだリリースされていません😭

.rspecファイルで # を使った行コメントに対応した

RSpecの設定ファイルである .rspec ファイルは # を使ってもコメントアウトされず、# だけが無視されてその行の設定が有効になってしまいます。たとえば以下のような .rspec ファイルは "--format d" がそのまま適用されてしまいます。

# --format d

この挙動が感覚的ではないので、以下のPRで # を使った行コメントに対応させました。

が、こちらもPR自体は12月10日にマージされたんですが、まだリリースされていません😭

ARGV.getopts でハッシュのキーをシンボルで返せるようにした

Rubyのoptparseライブラリで ARGV.getopts メソッドを使うと必ずハッシュのキーが文字列になってしまうのですが、ハッシュのキーはシンボルにしたいケースが多いので、オプションを指定してシンボルのキーが返るようにしました。

# デフォルトのキーは文字列
options = ARGV.getopts('l', 'w', 'c')
#=> {"l" => true, "w" => false, "c" => true}

# symbolize_namesオプションを渡すとキーがシンボルになる(このオプションを追加した)
options = ARGV.getopts('l', 'w', 'c', symbolize_names: true)
#=> {:l => true, :w => false, :c => true}

Ruby 3.2に取り込まれたら嬉しかったんですが、あと一歩のところで間に合いませんでした😭
optparse gemの次のリリースか、Ruby 3.3で使えるようになると思います。

Ruby 3.2.0のリリースノートにあったサンプルコードのミスを修正した

これはドキュメントの修正なのですが、Ruby 3.2.0のリリースノートに載っていたサンプルコードが間違っていたので、これを修正するPRを送ってマージされました。

# 誤 "\1"はバックスラッシュ記法と解釈されて\x01になる
Regexp.new("^a*b?a*()\1$")
#=> /^a*b?a*()\x01$/

# 正 '\1'なら意図した通りの正規表現になる
Regexp.new('^a*b?a*()\1$')
#=> /^a*b?a*()\1$/

ちなみにPRをマージしてくれたのはMatzさんです!

こちらは無事に反映されています😄


RuboCopの警告メッセージを少し修正した(2022.12.31追記)

RuboCopには未使用のメソッド引数を警告するLint/UnusedMethodArgumentというCopがあります。この警告はRuboCopによって自動修正可能なのですが、その修正内容は「未使用の引数にはアンダーバーを付けるだけ」です。

# 自動修正前
def double(number, other)
  number * 2
end

# 自動修正後(other が _other になった)
def double(number, _other)
  number * 2
end

既存メソッドをオーバーライドしたりする場合はこの対応でいいのですが、未使用というよりも単に不要な引数だった場合はそもそもその引数をなくすべきです。

# 不要な引数はなくしてしまうのが本来正しい対応のはず
def double(number)
  number * 2
end

「どちらの対応が正しいのか、静的解析では判断できない以上、自動修正はしない方が良いのでは」というのが、僕の個人的な考えなのですが、どうも歴史的な経緯等もあってそういう変更はできないようなので、警告メッセージだけを修正するプルリクエストを送りました。具体的には下線部の一文「もしその引数が不要なら削除してください」を追加する、というものです。

Unused method argument - some_arg. If it's necessary, use _ or _some_arg as an argument name to indicate that it won't be used. If it's unnecessary, remove it.

このプルリクエストがちょうど2022年の大晦日にマージされました🎉

github.com

アウトプット活動

2022年アウトプット活動はこんな実績になりました。

ブログ執筆は44本、うち4本がランクイン

ブログの執筆は前述のとおり今年は44本書きました。

そのうち以下の4本が「今週のはてなブログランキング」にランクインしました。


Qiita記事の執筆は34本、2022年もなんとかユーザーランキング1位

Qiitaから送られてきた「2022年 振り返りレポート」の内容をシェアします。


  • Contribution = 6,309
  • 書いた記事数 = 34
  • 読まれた数 = 1,454,005
  • いいねされた数 = 4,653
  • ストックされた数 = 3,258

いいねの多かった記事ベスト3

あと、2022年もユーザーランキング1位をキープできました。

とはいえ、じわじわと2位との差が詰まってきているので、来年の今頃はどうなってるやら??

登壇活動等は全部で7件

自分のブログとQiita以外のアウトプットとしては次のような7件の活動がありました。
今年はあまり登壇活動はやってなかったような気がしましたが、こうやって振り返ると意外とやってましたね〜。

  • Qiita Advent Calendar Online Meetup(オンライン登壇)
  • 銀座Rails#41(オンライン登壇)
  • 電脳会議 Vol.212(記事寄稿)
  • なぜエンジニアは、惜しみなく知見をシェアするのか?(NewsPicks 対談記事)
  • エンジニアストーリー by Qiita(ポッドキャスト出演)
  • VeriServe Test Automation Talks No.3(オンライン登壇)
  • DevRel Meetup in Tokyo #78 〜商業技術書出版を学ぼう〜(オンライン登壇)

具体的な活動内容は以下のエントリにまとめてあります。

あと、あまり公にはしておりませんが、今年からMENTAで有料相談を受けられるようにもしてみました。
「RSpecの書き方を知りたい」「RubyやRailsに関する技術相談」「アウトプットのコツ」「キャリア相談」等々、僕に個人的に聞いてみたい内容があればMENTAを検索してみてください。

その他:息子が21世紀枠で来年春のセンバツで甲子園に行けるかもしれない

これは僕自身の話ではなく子どもの話です。
息子は小学校の頃から野球をやってるんですが、その息子が所属している兵庫県立小野高校野球部がセンバツ21世紀枠候補の近畿代表に選出されました。

小野がセンバツ21世紀枠候補の近畿代表に選出 創部100年で初聖地出場なるか(デイリースポーツ) - Yahoo!ニュース

野球に興味がない人はあまり知らないと思うんですが(というか僕も知らなかった💦)、春のセンバツでは各都道府県の代表とは別に「21世紀枠」という特別枠があり、そこに全国から3つの高校が出場できるようになっているんです。

このブログの執筆時点ではその候補が9校まで絞り込まれていて、そのうちの一校が息子が所属している小野高校です。
ということは?3分の1の確率で?息子が甲子園に行けるかもしれない!?

21世紀枠で甲子園に行ける3校は来年の1月27日に発表されるそうです。
いったいどういう結果になるかわかりませんが、息子は毎日頑張って練習しているので甲子園に行けたら嬉しいなと密かに思っています。

でも、運動嫌いで根っからの文化系人間だった僕の息子が、どうして野球部という超ハードな体育会系の部活をやってるんでしょうか??僕はいまだに不思議でなりません😅

まとめ

というわけで、今回は2022年の近況報告をぐわっとまとめてあれこれ書いてみました。
ちなみに、Twitterのフォロワー数やブログの購読者数はこんな感じになってます(2022年12月29日時点)。

  • Twitterのフォロワー数 = 11,868
  • このブログの購読者数 = 2,226
  • Qiitaのフォロワー数 = 5,330

フォロワー・ブログ購読者のみなさん、いつもありがとうございます!
来年もみなさんのお役に立つアウトプットができたらと思っていますので、引き続きよろしくお願いします。

まだフォロー or 購読されてない方はこのタイミングでポチッとフォロー・購読ボタンを押してもらえるとありがたいです❤️

さて、2023年はいったいどんな一年になるんでしょうか?
息子と娘が二人同時に高校受験&中学受験なので、プライベートがかなり忙しくなりそうな予感……。

2023年は僕個人がどうこういうよりも、コロナだとか戦争だとか、暗いニュースがちょっとでも減って、平和で健康な世界が戻ってきてくれたらいいのになあ、と思う今日この頃です。

僕自身も健康に気を付けながら頑張っていこうと思います。(そのためにはちゃんと運動しなきゃ💦)
それではみなさん、良いお年を!