質問: 現在、iOSにて動画投稿アプリのようなものを作成しています。 動画をアプリで撮影して投稿し、他の人が投稿した動画を見られると言うものです。 また前提として、iOS開発は初心者で仲間と開発しようとしています。 iOSに限らない話ですが、動画をサーバーに保存して公開する機能は、S3に保存するのが良いでしょうか? 画像でしたら、base64形式などでも保存できると思うのですが、動画は動画ファイルのまま保存するしかないですよね?動画閲覧機能に関しては、ストリーミング視聴できた方が良いと思うので、その機能はCloudFrontなどを用いることになるでしょうか。 バックエンドはFirebaseを用いたいと考えていたのですが、難しそうならばRailsなどで作ろうと思います。動画に関してはデータの扱いやストリーミングの部分でやり方がよくわからず、構成の例などを教えていただけないでしょうか。 追記:この場合ですが、iOSアプリ上から直接S3にアップロードするか、バックエンドのサーバーに送りつけてそこでアップロードの処理をするかどちらになるでしょうか?
回答: > > iOSに限らない話ですが、動画をサーバーに保存して公開する機能は、S3に保存するのが良いでしょうか? > > > そのほうが良いと思います。 S3やFirebaseのStorageなどのサービスを使ったほうが手軽だと思います。 > > 画像でしたら、base64形式などでも保存できると思うのですが、動画は動画ファイルのまま保存するしかないですよね? > > > 画像に限らず、動画でもどんなデータもbase64へ変換することは出来ます。 ただ上述の通り、S3やStorageに保存した方がいいと思います。 base64だとデコードなど発生して、プログラムで取り扱うのが面倒だからです。 > > 動画閲覧機能に関しては、ストリーミング視聴できた方が良いと思うので、その機能はCloudFrontなどを用いることになるでしょうか。 > > > そうですね。インターネットで調べて、参考になるドキュメントが多いのはCloudFrontなので、いい選択だと思います。 > > バックエンドはFirebaseを用いたいと考えていたのですが、難しそうならばRailsなどで作ろうと思います。 > > > railsで作ると、クライアントアプリ(Swift)とサーバプログラム(ruby)を両方手がけないといけないです。 なので、初心者の方であれば、Swiftだけで完結するようにFirebaseを選択することを個人的にはオススメします。 > > 動画に関してはデータの扱いやストリーミングの部分でやり方がよくわからず、構成の例などを教えていただけないでしょうか。 > > 追記:この場合ですが、iOSアプリ上から直接S3にアップロードするか、バックエンドのサーバーに送りつけてそこでアップロードの処理をするかどちらになるでしょうか? > > > いったんはiOSアプリ上から直接S3にアップロードするのが良いかと思います。 (この場合は、iOSクライアントにAWSにアクセスするためのシークレットキーを保存することになるため、セキュリティに問題がありますが、初心者がとりあえず作ってみた、くらいでは問題になりにくいので目をつむっても良いかもしれません。) あとAWSのアクセスキーをgithubに公開してしまうなどは、初心者がよくやりがちなミスで、検索すると60万円請求されたなどの失敗談がインターネットに公開されているので一読されることをオススメします。