Gemの一部をGemに切り出した手順メモ

あとでどこかに清書するための日本語版の端書で、RuboCop Core から RuboCop Performance と RuboCop Rails の別 Gem を切り出す際の手順メモ。

github.com

RuboCop Core から cp によるファイルコピーだっため git の履歴が飛んでいたのをどうにかしたかったのが動機。

まず lib ディレクトリと spec ディレクトリに対して cherry-pick が必要な作業数。RuboCop Performance と RuboCop Rails の算出。なお、ggitg となる。

% g log --oneline lib/rubocop/cop/performance spec/rubocop/cop/performance | wc -l
     225
% g log --oneline lib/rubocop/cop/rails spec/rubocop/cop/rails | wc -l
     315

まず数の少ない RuboCop Performance から行なった。RuboCop Rails はそれがうまく行ってからの作業としている。

既存リポジトリでも良いが、完全にやり直しの効くよう新たに一時作業用のリポジトリを立てていた。

mkdir rubocop-performance-revise
g init
g remote add upstream-performance https://github.com/rubocop-hq/rubocop-performance
g remote add upstream-core https://github.com/rubocop-hq/rubocop
g fetch upstream-performance
g fetch upstream-core

g remote add upstream-core は RuboCop Core からインポートするためのもの。 すでにコミットしてある RuboCop Performance からも cherry-pick を行うため g remote add upstream-performance としている。

それぞれの remote リポジトリから必要なコミットを持ってくる。

以下のように素直に持ってこれるコミットは問題がない。

% g cherry-pick 7cbfa5a63a2ec337a1d36cf0bbd20d8196cbf0bf
[wip_revise 845e7bf4d] Add MIT license
 Author: Daniel Colson <danieljamescolson@gmail.com>
 Date: Fri Jun 29 15:58:14 2018 -0400
 1 file changed, 20 insertions(+)
 create mode 100644 LICENSE.txt
% g cherry-pick c551accab8ce0710c6248163d7aeccb1819751ba
[wip_revise a8c12a5da] Create gemspec for initial version
 Author: Daniel Colson <danieljamescolson@gmail.com>
 Date: Fri Jun 29 17:05:03 2018 -0400
 3 files changed, 44 insertions(+)
 create mode 100644 lib/rubocop-performance.rb
 create mode 100644 lib/rubocop_performance/version.rb
 create mode 100644 rubocop-performance.gemspec

コンフリクトした場合は都度解決。

Unmerged paths:
  (use "git add <file>..." to mark resolution)

        both modified:   spec/spec_helper.rb

明白にローカルを優先する場合は git checkout --ours が手早い。

% g co --ours spec/spec_helper.rb

以下のように cherry-pick した際に、Untracked files として不要なファイルが入った場合。

Untracked files:
  (use "git add <file>..." to include in what will be committed)

(snip)

以下でまるっと消したりしていた。

% g st -s | grep '^DU ' | cut -d ' ' -f 2 | xargs git rm

全体としてもっとクールな手順はあるかもしれないが、一手法の端書まで。

Railsdm Podcast #5 にゲスト参加した

y-yagi さんからのご指名で、Railsdm Podcast #5 にゲストで参加した Podcast が公開された。

収録された Podcast は以下。平野さん企画、制作ありがとうございます。

podtail.com

当日は平野さんが差し入れしてくれたビールや王禄などをいただきながら話していた。休憩時間以外はノーカットで編集されていると思うので、興味があれば作業などの BGM や酒の肴なんかにもご視聴ください。

次回 (#6 あたり?) は聞き手で参加する予定です。

RubyConf 2018のチケットを入手した

勤務先の永和システムマネジメントに交通費、宿泊費、カンファレンス本編のすべてを負担してもらって RubyConf 2018 に行く。

一通りの予約に目処が立ってきたところ、自分もそうだが今回の RubyConf 2018 には日本からの参加者が多そうなので、これから申し込もうと思うという人への費用の算出など参考になればと思い記しておく。

飛行機

飛行機について、ANA での直通便だと一日3便くらいある。

www.ana.co.jp

往復でおおよそ JPY 200,000 くらいになる。なおこの金額はあとで便を変更することができない金額での算出になっており、便変更可能な予約にすると JPY 40,000 くらいは加算されたと思う。

なお、自分は直行便にしているが、中国でトランジットする便などにすると安くなるらしい (未確認) 。

宿

ホテルは会場となっている The Millennium Biltmore Los Angeles にした。

rubyconf.org

自分が相談したり観測したりしている日本からの参加者はそのようにしているので、土地勘があったり慣れているひとでなければそうしておくと良いと思う。自分が予約したときだと一番安い部屋で一泊 JPY 34,000 くらいの部屋になった。予約の前の週に見たときは一泊 JPY 24,000 くらいの部屋があったので、キャンセル待ちを待つを伺うのも手だと思うが逆に高い部屋しか残らないかもしれないので、そのあたりリスクをどうするかといったところ。

ちなみに2人くらいは泊まれるだろうサイズということと、宿泊人数ではなく部屋に対するチャージになるので、近しい誰かがいれば相部屋をお願いするというのはひとつの手になると思う。

チケット

RubyConf 2018 チケットは購入日 (2018年10月9日) に検索したレート 1ドル 113円で算出している。RubyConf のチケットを購入する場合は、個人で購入する Standard $400 と Company-purchased ticket $700 (JPY 79,100 くらい) のいずれかになると思う。フリーランスや個人費用で参加する人は Standard $400 を購入、自分のように会社予算で参加する場合は Company-purchased ticket $700 を購入することになる。

で、おいくら万円?

レートなど予約のタイミングもあるので、まるめた参考値で合算するとこんな感じ (もちろん会社に出してもらう分で提出しているのは丸めずに提出している) 。

  • RubyConf 2018 チケット ... JPY 80,000 (USD 700)
  • ホテル6泊 ... JPY 200,000
  • 東京-ロサンゼルスの航空チケット ... JPY 200,000

時差などあるのできつきつのスケジュールでない6泊7日分をモデルにすると、これらに加えて Wi-Fi や空港から会場ホテルまでの移動費などで、ざっと合計 JPY 500,000 くらいを見ておくと良いと思う。このあたりを基準に特に飛行機や宿の予約タイミングや便、宿泊日数などで塩梅がかわってくるものだと思う。

また人によってはパスポートや ESTA など別途必要になるのでお忘れなく。

ちなみに予約した順はなくなると困るかつ、金額が上がっていくリスクが高い「宿」「飛行機」「チケット」の順に自分はした。チケットはしばらくなくならないだろうという見込みだった。

謝辞

ふたつ返事で OK を出してくれた勤務先もさることながら、親身に相談に乗ってくれ的確なアドバイスをいただけた masa_iwasaki さんと yahonda さんに感謝します。

ESTAへの申請が受理された

RubyConf 2016 で渡航するにあたり、少し前に ESTA への申請が受理された。

ESTA への Web 申請の入力にあたり以下のサイトが参考になった。

https://traveltale.net/esta-shinsei/

また Google 検索で "ESTA" と検索しただけだと、ESTA 本家のサイトではない仲介業者サイトでマージンが取られる (割に入力内容は変わらない) サイトが出るということを知れたのは良い情報だった。仲介業者サイトが結構 SEO で上の方にあったりするので初 ESTA の人は注意しておくと良いと思う。

Hacktoberfestをクリアした

Hacktoberfest の10月の間に Pull Request を5つ開くという実績をコンプリートした。

hacktoberfest.digitalocean.com

去年くらいだと、あとでメールで T シャツの送付先の入力フォームがきたりしていたような気がするので (去年は同僚の swamp09 氏に教えてもらうまでメールに埋もれていたような) 、これはこれとして平常運転を兼ねたエクストラステージ的に引き続き PR を開いていく気持ち。