読者です 読者をやめる 読者になる 読者になる

hitode909の日記

趣味はマリンスポーツですの日記です

6年前に書いたCoffeeScriptをES6に変換した

昔はCoffeeScript好きで,たのしく書いてて,いまもたのしく書けるのだけど,最近はこういうグッズを使わなくても,ESLintとかFlowとか,安全便利グッズが増えてきているので,Coffeeやめることにした.
しばらく運用モードだったのだけど,追加したい機能が出てきたので,Coffeeのままやるよりは,型書けるようにしてからやったほうが安心できそう.

やったこと

  • decaffeinate でJSに変換する
    • これで脱出できるってパスタ君に教えてもらった
  • BabelとBrowserify入れる
  • Flow入れた
    • jQueryとunderscoreに依存してたので型定義をダウンロードしてくる
  • ESLint入れた
  • Gulpメリットない感じになってきたので,package.jsonCLIのコマンドを書いてコンパイルするようにした
  • 型をちょっとずつ書いた

型を書くときに困ったのが,CoffeeScriptだとreturnを省略できるので,最後の文すべてにreturnがくっついてしまう._.eachのイテレータはvoidを返すという定義なので,変なreturnがあるとFlowのチェックに引っかかってしまう.

declare function each<T>(a: T[], iteratee: (val: T, key: string)=>void): void;

flow-typed/underscore_v1.x.x.js at master · flowtype/flow-typed · GitHub

ということもあったけどなんとか変換できた.
JSだけでなく,マークアップも古びてきていて,幅320px決め打ちで実装されていたりする.もともとretinaサイズで用意してもらってはいたけど,Photoshopで描いたイラストとか,世の中の画面が大きくなったときにどうなるのか気になる.
サーバーサイドも古びてきていて,このバージョンのランタイムは提供しなくなるので,アップグレードしてくださいとか,このAPIは廃止しますとか,そういう通知もいろいろ来たりして,そう考えると,壊れるまで待たず,2年おきくらいに別のアーキテクチャフルスクラッチしていくほうがいいのかもしれない.6年前に書いたコードを見て,どうなってたか思い出すのはちょっと大変だったりする.