hidekatsu-izuno 日々の記録

プログラミング、経済政策など伊津野英克が興味あることについて適当に語ります(旧サイト:A.R.N [日記])

JTC-utils という日本企業向けユーティリティライブラリを作った話

当初は2週間くらいでさくっと作る予定だったけど、気付いてみれば早3カ月。ようやく公開できる状態になりました。

ここまで時間がかかったのは、技術的課題というよりは、子育て真っ最中でプライベートな時間がほとんど取れなかったことが一番の理由です。寝る前の1時間とかその程度しか自由にならないのだから、遅々として進まない。45歳の誕生日まではと思っていたけどちょっとオーバーしてしまいました。*1

 

今回作ったのは、(私が仕事でやっているような)日本のエンタープライズ・システムでよく出てくる機能をまとめたJavaScript/Node.js向け共通ライブラリです。

エンタープライズ向けのシステムは現在でも Java で開発されることが多く、今回開発したような機能も Java であれば既存に存在したりするのですが、Node.js は比較的歴史が浅いこともあり日本特有のレガシーな機能はあまり提供されません。

例えば、和歴(Java なら JapaneseEra)、書式によるパース/フォーマット(Java なら DecimalFormat/DateFormat)、レガシーエンコーディングJava は標準でWindows-31JEUC-JP、IBM漢字のエンコード/デコードが可能)、ひらがな/カタカナ・全角/半角変換(Java なら ICU4J)など Java であればすでに決定版の解決策があります。

npm を探せば該当するライブラリもなくはないですが、Node.js の小機能主義も相まって、品質や一貫性の面で使いづらい点も少なくありません。

JTC-utils では、加えて、全銀カナ対応、一貫性のある CSV と固定長の入出力機能(固定長ではパック10進、ゾーン10進もサポート)も用意しています。

 

私も JDK 1.1 以来長いこと Java で開発をしてきましたが、クラウド化の流れを受け最近では Node.js を選ぶことが多くなってきています。

VSCode、ESLint、Jest をはじめ開発環境は整っているし、起動は速く、各種ベンチマークを見る限りパフォーマンスも Java と肩を並べるレベル、言語仕様も安定的で使いやすいレベルに充実。いずれにせよ、Web ではクライアントサイドを JavaScript で開発せざるを得ないわけだから、バックエンドも JavaScript を使った方が開発生産性は高いと考えるのは自然です。

過去においては Java の Write once, run anywhere が重要でしたが、コンテナが一般化した現代においては軽く動かせる Node.js の方がむしろ便利になってしまいました。

 

エンタープライズシステムを Node.js で作ろうと思う方は、このライブラリを使ってみていただけると幸いです。(開発苦労話はまた次回)

 

[2023/7/17] 苦労した点は Qiita の記事として公開しました。

*1:そうです、とうとう折り返しを軽く超え、45歳ですよ。