技術選定をする
さて、前回はInstagramで写真を盛るということで、明るさ、コントラスト、暖かさ(色温度)について取り上げました。
今回は、それらを操作できるwebサービスを作るにあたって、どのように実現していくか、というところを書いていきたいと思います。
技術選定とは
なかなか説明の難しいことですが、「何かしらのシステムを構築する」と一言で言っても、そのやりかたは造り手によって様々になっていきます。
比較的わかりやすいところから言うと、プログラミング言語というものがいくつもあり、そしてエンジニアはそれぞれ得意な、あるいは使い慣れたプログラミング言語を持っています。逆に言えば、一度も触れたことのないプログラミング言語も多数あります。
そしてそれぞれのプログラミング言語で、得意分野、不得意分野が存在するため、できれば、やりたいことに合った言語を選びたい、となるわけです。
選ぶべきはプログラミング言語だけではありません。
プログラミング言語それぞれに、フレームワーク、あるいはライブラリといった「先人の知恵」が存在します。これを適切に選択することで効率よくサービスや機能を実現することができます。
また、サービスを稼働させる環境も多様化しており、これも選択していかなければなりません。雑に言うと。クラウドがどうのこうの、コンテナオーケストレーションがどうのこうのみたいなやつとかです。
IoTが〜みたいなのも似たところでしょうか。
今回の選定結果
見てわかるかどうかはともかく、ざっと一覧で並べます。
- プログラミング言語:PHP, JavaScript
- PHPフレームワーク:Laravel
- JSフレームワーク:Vue.js(?)
- 画像加工補助用ライブラリ:fabric.js
- 稼働環境(サーバー):Heroku
選定理由
- プログラミング言語:PHP, JavaScript
- PHPフレームワーク:Laravel
- JSフレームワーク:Vue.js(?)
- 稼働環境(サーバー):Heroku
普段から、あるいは以前から使っていて慣れているものを選んでいます。
今回の「やりたいこと」は「写真を盛ること」なので、それ以外の部分はチャレンジしません。「チャレンジしない」ということを選択しました笑
- 画像加工補助用ライブラリ:fabric.js
一方で、fabric.jsを使うのは今回のチャレンジ対象です。競合のライブラリと見比べて、今回の用途に合っていそうなものを選んでいます。
ぶっちゃけ明るさとコントラストはfabric.jsに最初から組み込まれているので、そこまでは簡単なはず。
強豪のライブラリも明るさとコントラストの調整は組み込まれていたんですが、そ暖かさ調整をするにあたって、自作のコードを使ってカスタマイズする必要があるので、カスタマイズするときのイメージがつきやすかったfabric.jsを使うことにしました。
色温度の計算も別のライブラリを利用しようかと思ってますが、現時点ではそれで要件が満たせるのか確信を持てていないので、実際に組み込むときに試していきます。
まとめ
なんというか、メモ書きだなぁと思うわけです。読者を誰にしたものか、というのを決めてないので、エンジニアにとっての記事ではなく、非エンジニアにとってもわかりやすくはないという中途半端な記事になりました。
次回は環境を整備してHello World、ってとこですかね。また来週〜