その動作原理を解説しないってのはフェアじゃないよという記事.
※脊髄反射で公開しているので間違いがあるかも知れません.
svg非対応な環境で”svg”を表示させる方法アレコレ
html5仕様に正式に取り込まれたsvgですが,その普及を妨げている原因としてsvgを表示できないwebブラウザが依然としてある程度のシェアを保っているということが挙げられます.ie8とかandroid2系ブラウザとか…
svgを使う上でこれらの環境を無視するというのも一つの手なんですが,そういうわけにも行かないケースもあるわけです.じゃあどうするかというと大体次の対処策が考えられます.
- 静的な方法
- 事前ラスタライズ
事前にsvg画像をpng画像としておき,環境によって切り替える方法.
- 事前ラスタライズ
- 動的な方法
SVGMagicはサーバーサイドsvgラスタライズを行う
それではSVGMagicはどのようなことを行っているのでしょうか?
答えは簡単で,「サーバーサイドsvgラスタライズ」を行っているだけです.つまり,SVGMagic側で用意してくれているwebサーバーにてImageMagickを走らせ,svg→png変換を行っているのです.
これはライブラリ配布元で解説していることなのですが,どうにも国内ニュースサイトにおいてはそれほど気にしていないようです.しかし動作原理上様々な問題を孕んでいます.
- SVGMagicのサービスはいつまで続くのか
開発者側で勝手にサービスを停止することが有り得る - 第三者にsvgコードが渡ることになってしまう
そのsvgの中に他者に渡したくない情報が含まれている可能性はないか - e.t.c
ではどうすれば
これらは何れも配布元のコードをそのまま使ったことに依る問題ですから,自前でPHPサーバーを立て,そこでsvgのラスタライズ処理を行うようにするのが良いでしょう.幸いなことに開発者のgithubではクライアントサイドのjsモジュールのみならず,サーバーサイドのPHPスクリプトも公開しています.この内容を自前のサーバー向けにカスタマイズした上で導入すべきです.
そもそもSVGMagicを使う必要はあるか
こうなると,実際に利用するには中々面倒なライブラリであることがわかります.その一方でsvgを利用する度にサーバーとの通信が発生するなど必ずしも使い勝手が良いわけでもありません.アイディアとしては非常に面白いものですが,用いるsvg画像の種類が少ない内はそのメリットを享受することが出来ないでしょう.逆にwikipediaのようなsvgを多量に扱う環境では有効な手法と言えます.つまりSVGMagicが活きる環境は非常に限られている事になります.
まとめ
- svg非サポート環境でsvgを利用するには画像変換処理を行う必要がある.
- 不可能なことを可能としているからにはカラクリがある.
表面だけ見て判断するのは危険.その危険性を無視して広めるのはもっと危険. - SVGMagicはサーバーと通信するので,素のまま使うには問題がある.
0 件のコメント:
コメントを投稿