GAE, Google Cloud SQL, Google Cloud Storageでwebサービスを作ってみた。
作ったサイト
匿名で不満や愚痴、普段言えない本音を匿名で投稿しちゃおう!boooing
##【概要】
- twitterログインが必要です。(殺害予告とか違法な内容をつぶやかれるのを抑止するため)
- 匿名で不満や愚痴をつぶやけます(ログインするけど、名前は一切表示されません)
- twitterにも@boooing1のアカウントで代理投稿します。(ここも完全に匿名です。)
- twitterやサービス内に頂いたコメントは、サービス↔twitter完全連携します。
- 不満書きたいのにtwitterの文字数制限で伝えきれないのが嫌だったので、サービス内では1000文字まで入力できます。
- twitterは、某質問系BOXの用に画像を添付します。
- サービス内では、3枚まで画像をはれます。(それもtwitterに連携します)
【インフラ】
- Google App Engine
- Google Cloud Storage
- Google Cloud SQL
##【フロント】
djangoのテンプレートを使ってます。
SPAとか、特別なことは特にないので割愛します。
【サーバサイド】
- python3
- django1.11
【苦戦したところ】その1 画像のキャプチャ
まず、webdriverを使って、画像をキャプチャしました。
こんなかんじの記事を参考にしてやってみたんですが
こんな感じで、スクロールバーが表示されてしまいました。
サイズ調整を試みるも、長文がくるとこんなふうに画像が切れちゃいました。
某質問系BOXは、文字数が長くても切れません。
色々と調査したところ、HTML自体をcropできる記事を見つけたのでそちらを参考に修正。
ようやくキレイに画像かすることができました。(しかも文字が見やすくなった)
【苦戦したところ】その2 画像のキャプチャどこでやるの問題
GAEは、デプロイや、運用などがお手軽にできるので、作ってすぐに動かすことができます。
便利!
でも、chromedriverのインストールなど、通常のGCEやEC2のようにサーバに入っての環境構築ができないため、この部分だけGCE契約するのか・・・?っと悩んみました。
【解決策】
Dockerfileを使ってchromedriverを構築する。
GAEは、カスタムしたDockerfileを配置することが可能なので、Dockerfileで、chromedriver関連をインストールするようにしました。
元になるGAE用のイメージはこちら
...
FROM gcr.io/google-appengine/python
RUN apt install unzip
RUN wget https://chromedriver.storage.googleapis.com/2.31/chromedriver_linux64.zip
RUN unzip chromedriver_linux64.zip -d ~/bin/
...
【苦戦してるところ】全然人が来ない。
3/27にリリースして、全然増えません。
しかも、4/4の夜から4/5にかけて、twitterに制裁を受けてました。
(検索やハッシュタグで、引っかからない状態)
【事件】twitterアカウント凍結
4/6に@boooing1アカウントが凍結。。。。
かと思いきや、1時間ほどで何故か解除・・・・
人為的ミスか???
凍結されてしまったので、クローズする気になってたのですが、なんとか生きながらえたので、記事に書いてみましたw
【現在】
まだまだ、改善点は多いと思うのですが、ほそぼそと運用中。
ここでの学びを次に活かすぞー!!