Herokuを使ってWebサービスを作るのは手軽にできると宣伝されていますが、実はかなり高度な知識が必要です。Herokuのアカウント自体は簡単に開けられるかもしれないけど、実際にサービスを公開するには、Linuxやデータベース、RubyやPythoなどの言語で一通りのコードがかけること、HTMLやCSS,JavaScripなど、広範囲の知識が必要です。これをさらに、iPhoneやAndroidなどの端末で使えるようにしようとすると、SwiftやAndroidなどの端末側のプログラミング言語の知識も必要になります。
さらに、Herokuの場合は、解説がほとんど英語なので、英語が結構得意でないと、解説を読むこと自体が億劫になってしまいます。もしくは、それを上回る熱意とか根性が必要でしょう。
最近、Herokuでは画像ファイルが保存できないことを発見したと書きましたが、Herokuでやることで、ソフトウェアが他の環境にデプロイしやすくなるなど、設計上のメリットがあることがわかったので、最近の定番っぽいAWSのS3(Amazon Web Serviceの中のストーレッジの機能)ではどうやるのかを調べてみました。
ジャジャーン。
A file is selected for upload by the user in their web browser;
JavaScript is then responsible for making a request to your web application on Heroku, which produces a temporary signature with which to sign the upload request;
The temporary signed request is returned to the browser in JSON format;
JavaScript then uploads the file directly to Amazon S3 using the signed request supplied by your Python application.
これはHerokuの中の、解説記事から拾ってきたものです。結構、レベルの高いことが書いてあって、気が遠くなります。
基本的には、(1)ブラウザーなどでアップロードする画像を洗濯した後、(2)JavaScriptでHerokuにログインして、(3)Heroku側から認証情報をJSONで取得し、(4)JavaScriptでその認証情報を使って、S3に画像をアップする、手順のようです。
これで、ソフトウェアのロジックと画像の保存をするストーレッジが疎結合になるので、ソフトウェアとしては設計がよくなるのでしょう。また、S3は普通のFTPとは違い、オブジェクト・ストーレッジという形式のようです。最近の雑誌でその単語自体は載っていたのですが、未知のものなので、これを機会に触ってみようかと思いました。
*************
S3を触ってみました。管理用のページがすごくよくできているので、とてもわかりやすかったです。
HerokuからAWS s3にファイルをアップロードするのは、さらに色々な知識が必要になります。
結構苦労することになると思いますが、とても勉強になります。とにかく色んなエラーが出るのでくじけそうになりますが、一つずつエラーを潰していけば、いつかたどり着けます。私も、6−7時間は使ったと思いますが、最終的にはブラウザーから、JavaScript経由でs3にアップロードが出来るようになりました。