本を自炊する

最近はできるだけ電子書籍を買うようにしているけど、昔買った本などは捨てるに捨てられず、場所をとるのでそのうち、自炊で電子化しようと思っていた。というわけで、次のものを購入してようやく電子化する準備ができた。

  • FUJITSU ScanSnap iX500 FI-IX500 (37,981円)
  • カール事務器 丸刃40枚裁断(2往復) DC-210N (9,480円)

そもそもどうやって自炊するか、よくわかっていなかったのだけど、裁断機も昔、学校で見たような一発でバサッとやるやつを買わなければならないのかと思っていたけど、それはそれで場所を取るので、調べてみるとディスクカッター的なもので十分なことがわかった。なので、DC-210Nを買うことにした。まぁ、実際の使い方はYouTubeで説明してくれる人もいるので、それをみると使い方がよりイメージがしやすい(私はそれ見て買った)。
早速、それらを使ってやってみると、本の裁断は表紙とか手で切り離して、あとは適当に50枚くらいずつ切り離してディスクカッターで端を切っていく。ぎりぎりを切るとうまく行かない時があるので、5mmくらい余裕をもって切ると良いっぽい。裁断したら、iX500にセットして、Scanボタンをポチっと押せば入れた分だけがPDF化される。一冊をまるごとiX500にセットできないので、小分けにPDF化されていくのだけど、Acrobatも付属しているので、インストールしておけば、エクスプローラで複数のPDFを選択して右クリックするとマージするメニューが表示されるのでそれでマージができる。あとは、ScanSnap OrganizerでPDFをテキスト読み取りしてくれるので、最後にテキスト読み取りを実行すれば作業完了。そんな感じで、だいぶ辞書のような技術書を処分することができました。

Javaの例外処理

例外処理について、漠然と進めてしまうと後で問題を特定するのが難しくなるので、開発チームのメンバーと意識を合わせて進めたほうが良いかと思う。というわけで、私の経験に基づいて、独断と偏見があるとは思うけど、思うことを以下にまとめておく。

  • 投げる例外は基本的に独自に作ったものを投げる。Exceptionとか、NullPointerExceptionとか、newして投げない。独自に作った例外のほうがログを見たときに自分のシステムのエラーなのかがわかりやすいと思う。
  • Seasar2とか、DI系のシステムだと独自に作った例外はRuntimeExceptionから継承しておく。メソッドにthrowsでいろいろと指定されていても変な依存になるし、面倒な気がするから。
  • Android系とかではExceptionを継承したほうが良いと思う。Androidの場合は、catchしないような例外はアプリを落とすことになるので、明示的な例外処理の方がリスクが低くなると思う。
  • 例外のログはthrowするところでなく、catchして例外を最終的に処理するところで書きだす。なので、必要な情報はthrowする例外にできるだけ保持させるのが良い。
  • 例外をこれからthrowしようとするところではERRORやWARNのログを吐かない。DEBUGやINFOであればよいが、ERRORやWARNをあちこちで書き出すと、ログファイルで追いにくくなる。
  • catchして、別な例外をthrowする場合は、Root Causeを忘れずに指定する。
  • Throwableはcatchしないほうが良い。Throwableの場合、その後の処理が継続できるかわからないし、Sonarに怒られるからやめたほうが良いと思う。
  • catchして例外を無視する場合、確実に無視して良いような例外以外はcatchしたときにログを書きだしておく。つまり、絶対にいらないと自信を持って言えなければログしておく。

まぁ、例外事項はあるかもしれないけど、あとはケースバイケースで…。