HTML Canvasでバイリニア法、バイキュービック法、ランチョス法

ディレクトリを漁っていたら、10年ぐらい前に書いたHTML CanvasJavaScriptによるバイリニア法の画像拡大のコードが出てきた。これが酷いコードだったので最近の文法も使って書き直し、ついでなのでバイキュービック法とランチョス法による拡大縮小も書いてみたり。

バイキュービック法とランチョス法ではバイリニア法よりシャープな感じに仕上がる。

最初にこのバイリニア法のコードを書いた頃、Firefoxのバージョンは3、Chromeはまだ存在しなかった(Windows版はあったらしい)。当時のブラウザとマシンでは180 x 180の画像を縦横2倍に拡大するだけで10秒程度かかっていたのが今や一瞬で完了。CPUとJSエンジンの進化、凄まじい。

ところで先日、こんな記事が話題になっていた。

さようなら ImageMagick - Cybozu Inside Out | サイボウズエンジニアのブログ

ImageMagickのセキュリティ問題多いのでサムネイル作成処理をGoで書き直したという話だが、今どきのJSエンジンとCPUパワーならば、サムネイルの作成程度ならばフロントでも処理できてしまう。canvaspng画像として取り出す方法もあるので、いっそフロントでサムネイルを作ってサーバに送信し、バックエンド側はバリデーションだけってのもアリかもしれないっすよ?

自分でバイナリ弄るコードを書かなくてもcanvasのscaleメソッドを呼ぶだけでも縮小処理は可能だし、ガチで最適化かけた超速いサムネイル作成ライブラリとか探せばあるかもしれないっすよー。知らんけど。

プログラミングが役立つIT業界と役立たないIT業界

実は一口にIT業界と言っても、大きく2種類ありまして

  1. プログラミングが役立つIT業界
  2. プログラミングが役立たないIT業界

2に属する人間のプログラミング役立たない発言はもう20年前から繰り返されていて正直うんざりなんですが、2の世界では事実なので仕方ないです。

SE(システムエンジニア)という単語が出てくるのは役に立たない方のIT業界である可能性が高く、SIと呼ばれる企業も2の可能性が高いです。これからIT業界を目指す若者は自分が目指している道はどちらなのか、よく考えて就職先を選んで欲しいところです。もしあなたが、今プログラミングを頑張りたい、極めたいのに2に属してしまっているのならば、今すぐ1に属する会社に転職しましょう。

私も10年以上前に2の世界でプログラミングなんか頑張っても意味がないと言われ、1の世界にやってきました。我々は2の世界から1の世界を目指すあなたを歓迎します。まぁ、相応のスキルは求められますし、クソみたいな会社も少なからず存在するので、必ずしも全てが理想郷ではありませんけどね。

ところで、2の世界でプログラミングができると言った場合 "Javaで仕様書に沿ったコードが書ける" ぐらいの意味ですが、1の世界でプログラミングができるというのは、"ある目的のためにデータをコンピュータで処理するにあたって、最適な環境、最適な言語、最適なアルゴリズムを選択し、時間空間的に最も効率的な処理を考え、実装できる" と大きく意味が異なるので誤解なきように