私の歴史と今

振り返ると恥ずかしくなるのが私の歴史。だけどそのときは真面目に書いていた訳でね。そんな今の私を書いていく。

earlyを聞き取れなかった

DMM英会話で、「early」を聞き取れなかった。「book the lesson ウーリ」と聞こえたのかな。それに対して「ウーリ?」と聞き返したらskypeのchatboxに入力してくれて「early」だとわかった。

カタカナ表記だと「アーリー」なので、それが頭に染み付いていたのだと思う。発音記号は「ˈɚːli」なので、ウーリと聞こえてもおかしくないと思う。

カタカナ英語の弊害を感じた日だった

Railsのセキュリティガイドを音読しているんだけど、「filter」という単語を素早く発音しにくいなーと思っていた。 日本語では「フィルター」。短い単語なので難しくはない、なのに発音しにくいなーと感じることがあり、言い直すことが多かった。

原因を考察して、一つの原因に達した。

私は日本語の「フィルター」に似たように発音することが多いということ。問題は「ル」。「ル」と発音した場合は、一度舌を前歯の後ろから離さなければならない。その上で、「ター」を発音したければならないから、素早発音することが難しくなる。

しかし、この「ル」は「l」であり、母音はついていない。だから舌を前歯の後ろから話す必要はない。そのまま「ター」に移行すれば良い。

これに気づいた時、カタカナ英語の弊害、つまり、私のこれまでの先入観と経験が如何に英語学習の障害になっているかを感じた。

思い返してみると、セキュリティガイドを読んでいて、アクセントを間違えて覚えている単語が多い。日本語では棒読みが多いし、アクセントの場所が異なっていると、無意識のうちに間違ってしまっている。「Rails」すら間違う。日本語だと右上がり、英語では右下がり。根深いわー。

JRuby on Railsを3.2.8から5.2.1にバージョンアップした

Railsのバージョンアップの案件があり、JRuby, Java, Rails, DBをコツコツバージョンアップしていった。なおかつ、OSもWin->Linuxに変え、APサーバも変更した。

非互換を確認したのは、ログイン操作、画面一つの中のAjaxを含むCRUD操作、CSV/PDF出力。他の画面の非互換は未確認。

非互換は、以下のような結果として現れた。

  • Railsサーバ(rails s)がそもそも起動しない
  • その他のRails/Gem専用コマンドで例外が発生する
  • 警告がログ出力される
  • ブラウザ操作中に例外が発生する
  • 例外は発生しないけど結果異常になる

発生した非互換の数は約70個。一人で半月ちょいかかった。

注意が必要なのは、最後の非互換。例外が発生しないからテストコードない場合は大変だと思う。

横展開が大変なのは、ActiveRecordの書き方を変更しなければならないこと。ほぼ全てを修正する必要がある。

面倒だったのは、メンテナンスが滞っているgemの対応。今回は2つのgemがRails5に対応していなくて、モンキーパッチを当てる羽目になった。

悩ましかったのは、Railsに追加された新しい機能を使うべきか否か、という点。元々リクエストパラメータのプロテクトをしていなかったので、既に標準的な機能であるStrong Parameterを採用するには工数がかかりすぎる。新機能を使わない方が工数を減らせるので、その方向に進みがちになるとも思うけど、安易に捨てるべきでは無いとは思う。バージョンアップした意味が薄れてしまうので。

今後のバージョンアップで大変になるだろうなと思うことは、Strong Parameterが強制された場合の対応と、routes.rbでワイルドカードが非推奨から非互換に変わった場合の対応。どちらも一つ一つ確認していかなければならないので地道な作業。

なお、全てを最新バージョンにしたが、JRubyのみ一つ前の9.1.7(Ruby2.3.3互換)に留めた。