hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

「似ているけどちょっと違うものたちをモデリングする技術」というお題でYAPC::Nagoya::Tiny 2019で発表した

普段の仕事ではマンガチームに所属していてギガビューワを作っている。
いろんなサイトを同一のコードベースに乗せて高速に横展開するための設計を考えたり作ったりするのがおもしろいところ。
エンジニアをやってる友達と話すときにも、マルチテナント的なものをがんばって作ってるんです、と話していたので、良い機会と思ってまとめて喋ってみた。
当日の他の発表は、動的モジュールロードを使いまくるとつらいよね〜みたいな発表があったけど、そこに対して、使うところを見極めて、チームとして立ち向かえばなんとかなるよ〜という話ができたと思う。

発表資料はこちらで、Scrapboxで作った。ちょっとずつ編集しながらアイデアを組み立てるようなときには、保存ボタンがあるようなアプリケーションよりは、書いたそばから保存してくれるのが望ましいと思う。
scrapbox.io

VSCodeでPerlを書いてる人向けのおまけ

コーディング規約を整える前に、フォーマッタをなんとかしたいですな、という話になっていた。VSCodeでTypeScriptを書いていると、いま書いてる文だけフォーマットしてくれる。それがPerlを書いているときにはできないのが不便。
調べるとVSCodeのregisterOnTypeFormattingEditProviderを呼べば良いことが分かったので対応した。
苦労したのはフォーマット対象の文を調べるところで、静的解析して、カーソルがいる位置に存在する文を判定するのは難しそうだった。書きかけデコンパイルが通らないものでもフォーマットしく、セミコロンを打つたびにPPIで静的解析するのはパフォーマンス的にも厳しそう。
そこで、カーソルの前行から前に向かって;を探索していき、;があった次の行からフォーマットすることにした。いくらでも反例を見つけられるけど、ふだん書く上ではそこそこ便利だと思う。

formatOnTypeを有効にすると使えます。

"editor.formatOnType": true,