Hasamを支える技術
Hasamのサービスインに伴い、前回の記事ではHasamのサービス紹介をしました。
今回は、Hasamで利用している技術を簡単に紹介したいと思います。
概要
Hasamのシステムはこのような構成になっています。
アプリケーション本体はDjango、サーバーはGoogle Cloud Platform、課金はStripe、アカウント認証はTwitterという構成です。
それぞれについて、少し詳しく説明します。
Hasamを支える技術
Django
DjangoはPythonでWebアプリケーションを構築するためのフレームワークのひとつです。
Pythonという言語自体が比較的初心者にも書きやすい仕様になっていて、DjangoもRuby on Railsに比べて「裏で勝手によろしくやってくれちゃう」感じが少なく、何か細かな変更や修正をしたいときに修正箇所と影響が予想しやすい、とても扱いやすいフレームワークでした。
最近はWebサービスというとRuby on Railsで開発する場合が多いかと思いますが、スクリプト言語でフレームワーク使ってWebアプリケーション開発、というノウハウがない場合はDjangoも良い選択肢になることがわかりました。
Google Cloud Platform
Google Cloud Platformは、Googleが提供しているクラウドサービスの総称です。 AWSやAzureと同じく、いろいろなサービス(RDSやファイルストレージ、サーバーなど)から利用するサービスを個別に選んでシステムを構築することができます。
Google のクラウド コンピューティング、ホスティング サービス、API | Google Cloud Platform
今回はDjangoアプリケーションを動作させるプラットフォームとしてGoogle App Engineを、チラシ画像やCSS, JSファイルの配置場所として、Google Cloud Storageを、登録されたデータの保存用DBとしてGoogle Cloud SQLを利用しています。
Google Cloud Platformは、上記のような一般的なシステム構成を例にチュートリアルページを用意してくれているため、ひとまずそれにしたがって作業を進めるだけでアプリケーションをインターネットに公開できてしまう点がとても良かったです。
Stripe
Stripeはクレジットカードによる支払いやカード情報の管理を代行してくれるWebサービスです。
開発向けのリファレンスやAPI設計がとてもわかりやすくまとまっているのが特徴で、本当に1時間もあれば概要を把握して課金を試してみるところまでできてしまいます。 ドキュメントは英語ですが、サンプルのソースコードを中心としたとても読みやすい文章で書かれているため、あまり英語だから苦労するようなこともありませんでした。
サービスの使い方自体を理解するのに時間を割くのではなく、自分のサービスの課金形態に合わせたカスタマイズに集中することができるので、Hasamへの1回500円の課金の仕組みも想像以上に素早く実装できてしまいました。
クレジットカード情報を扱う場合は、PCIという基準に準拠する必要があるのですが、Stripeが要求する技術的な条件を満たせば自動的に準拠していることが保証されるというのもStipeの利点です。
PCI に準拠する必要がありますか?準拠するにはどうしたらよいですか? : Stripe: Help & Support
HasamのアカウントはTwitter認証で行なっています。 DjangoでTwitter認証を簡単に行うオープンソースライブラリとしてsocial-app-djangoがありますので、そちらを利用しています。
GitHub - python-social-auth/social-app-django: Python Social Auth - Application - Django
今回のサービスは、特にユーザー間のコミュニケーションがあるわけでもなく、SNSへの自動連携なども必要なく、ただアップロードしたチラシを管理するためにユーザーの識別が必要でした。Twitterなら団の誰かがアカウントを持っているであろうことや、このサービスのために新しくアカウントをサインアップするのも面倒だろうという予想から、Twitterによる認証のみとしています。
以上です。 それぞれの技術を使ってみて得た知見などは、まとまったら改めてこのブログかQiitaへ投稿する予定です。
演奏会のチラシの挟み込みはぜひHasamをご利用ください!