今何やってるのと言われた時のための記事 2017/06/12週

ニャオス

Headless chrome で帳票が作れるのでは

developers.google.com

帳票(納品書や請求書)をシステムから紙で出すみたいな話はよくあると思う。前にそれでSVFというソフトを入れてやっていたりしたんですが、初期導入費が大きく運用コストもかかる。委託するにしても、やはりかなりの費用がかかる。自前でやる方法もあり、HTMLからPDFを作れるような物もあるみたいだが……。

そこでheadless chromeレンダリング結果をPDFで出力できるらしい。そしてディスプレイなしでコマンド打てば実行できる。

chromeから印刷イメージを出せる事の良い所は、何と言ってもシンプルである事。chromeだけ入れてしまえば、後はライブラリを入れたり、使い方を調べる必要がなく、ページと同じように出していけば良いはず。コマンド一発で片付くのも良い。

さらに、ブラウザの表示結果になるはずなので、確認も楽だし再利用もできる。普段はバッチ処理でPDF作って配るけど、いざとなればブラウザでURL開いてそのままプリンタから出すとか。

レイアウトがどれくらいできるかは試してみないとわからない。印刷用CSSとか見るのかな。文章の折り返しとかはどうなるか。webfontとか使えれば、アセットがかなり楽になりそうな気がする。SVFはデザイン用のツールもあったりしてよかったけど、ブラウザでやるとなるとある程度ハードルは出てきてしまい、そこは課題かもしれない。

という事で、できるのでは! という期待が今自分の中で高まっている。場合によっては結構な削減効果見込めるぞ!

問題はPDF作った後、それをどうやってプリンタに持っていくかなんだけど……。プリンタのベンダごとの違いとか気にするのはもう嫌だ。印刷代行の業者使うしか。

AWS内部DNS

今はAWSを使っていて、踏み台サーバを通して各サーバにアクセスするみたいな事をしている。この時都度IPをインスタンス一覧から見ていて、本当になんでこんな無駄な事をやってるんだろうかと。

前にやってた環境でも同様の課題があり、その時はconsulを導入していた。

qiita.com

ただこれは、当時使っていたIaaSが貧弱で、DNSは一度ホスト名を登録するとずっとIPが変わらない、LBを使うと設定変更時に瞬断が起きて本番系に影響が出る、という事情があったため。AWSなら……! と当時は思ったものでした。

そして今はAWS。R53のprivate DNSを使って解決できそう、なんだけど、サーバの増減は手で反映しないとだめそう。結局awscliの呼び出しをどっかに書いたり、別の所で処理がコケた時にゴミが残ることを気にしたりしないといけなくなる。(そう、デプロイ時に動かすシェルに書いてるアレの事ですよ)

その点、consulはよかった。設定ファイル置いてバイナリ立ち上げればあとは全部やってくれるし、プロセスが落ちたら勝手に離脱する。いわゆるサービスディスカバリ的な用途には結構良いなと改めて思った。