ScalaでJson Parseは安全に
前置き
皆さんは、バックエンドを開発する際にJSONライブラリを使用する機会が多いと思います。(多分)
私はバックエンドではScala言語を用いて開発しており、その言語では複数のJsonライブラリがありますが、ライブラリによって安全にできる場合と安全に出来ず、システムがダウンしてしまう場合があることに気づきましたので、その共有が出来ればと思い記事にしました。
紹介するJsonライブラリ
検証
- Spray Jsonの場合
正しいJson文字列が入力されると、正しく表示される。
しかし、不正な文字列が入力されると、エラーでプログラムが落ちてしまう。
もし、このライブラリを会社として使用し続ける事が、偉いさんからの指令だった場合は、Try()で囲ってプログラムが落ちないように安全性を高める必要がある。
- Circe Jsonの場合
正しいJson文字列が入力されると、正しく表示される。
SprayJsonと異なり、Circe Jsonの場合は不正な文字列が代入されていたとしても、Either型のLeftとして流す事ができるため、途中でプログラムが落ちる事がない。
まとめ
最近ではOSSが充実してきていることもあり、使用するライブラリが安全なのかを考える必要が無くなってきているが、忘れてはいけないのがOSSは品質の保証は行なっておらず、たまたま皆で改修しあった結果、充実したライブラリになっているだけである。
プログラムを書く以上は、仮に不正なデータが入力されたとしてもプログラムが落ちない設計が出来るライブラリを選ぶ意識が必要だと思う。