管理者日記です。この度新規にエログを始めました、パンチラ和尚と申します。お気に召したら幸いです。お身を知り置きを。

本ブログでは、定期的に管理者ブログを織り交ぜてみようと思います。技術ネタですがご容赦ください。

不評だったら立ち消えするかも。まあ思いついたことどんどんやっていきます。

まずはまだ立ち上げて二日目なので、アクセスアップの施策を色々試しながら整備していきたいと思います。
コンテンツの充実も色々考えていきたいです。

費用の話と静的コンテンツジェネレータについて、あと既存システムへの愚痴というか

費用の話はちょっと後回しになるのですが、先に考えたいのが無料ブログを使うことに関する是非でしょうか。
僕はエンジニアなので、ちょっとシステム寄りの選択肢があるといいなぁとは思っていました。

ブログシステムはwordpress一択になっていると思います。
ただし「ブログシステム」としては、ですね。 システム屋としては、「そんな案件ならもっと安くやれるのに。こんちくしょう、なんで分散システム提案になっちまったんだ」みたいなことが多々あります。

f●2など著名ブログサービスを使ってるエログ様は多々ありますし、お世話になってます(?)。しかし、改めて考えるとほぼ皆様、一律広告収入ですよね。

閑話休題……ここで少しだけ話を変えます。すぐ戻りますが。

このサイトはhugo(ヒューゴ)という静的コンテンツジェネレーターを利用して作成し、AWS S3でwebホスティングしています。
(あ、Apache Licenseですのでご心配なく。OSSです。)

このサイトを立ち上げた理由は、hugoの学習が入口でした。なるほどこれは手軽。ではせっかくなので、エロサイト運営でも試してみようかなと。

hugoに限らず静的コンテンツジェネレータたくさんありまして、staticGenというサイトで無数に紹介されております。サーバサイドの助けを使わずにブログを実装する方法について非常によく考えられててすごいなぁと思います。
今回選択したhugoの特色は、ビルドの速さとのことです。golang製のツールって速度性能の高さを謳うプロダクトが多くて魅力的ですね。

エンジニア寄りのツールなのですが、そのためもあってか複雑なカスタマイズについても整理が行き届いている印象です。仕組み上、DBが絡まないのも気楽ですね。wordpress嫌いだったので助かりました

仕組み自体は、ローカルでhtmlをビルドするツールです。誤解を覚悟で言ってしまえばホームページビルダーをエンジニア向けにしたような使い勝手とでもいいましょうか。
ブログのようにスマホから投稿したり、予約投稿を設定するようなことはできません。(JenkinsなどCIツール駆使すれば何かやりようはあるかなぁ……とは少し考えてみたり。でもまあ、予約投稿するほどのネタはないのですが。)

静的サイトなので、サーバ不要なのがいいですね。とりあえずcloudfrontも使わずにS3単体で立ち上げてみました。何か盛り上げ方がわかってきたらドメイン調達するかもしれません。

画像サイトで気になるのが転送量。取り急ぎ、本サイトではサムネイル出力を徹底し、lazyrを組み込んでサムネイル含めて遅延アクセスするようにしてます。
ベンチマークがてら200画像とか1記事に詰め込んで見ましたが、スマホでもなんとか見れますね。

あとは費用ですね。この記事をここまでご拝読いただいている皆様にはご存知の方も多いのではないかと思いますが、S3なので相当安いです。転送量がどう遷移していくのかは見守る必要がありますが、EC2を使って分散するよりは数桁安いのは間違いないところです。

Amazon S3 料金

アクセスないうちは月額10円いかなさそうです。
毎日コストレポートをAWS lambdaでslack通知させてるんすけど、課金する気配がなさそうな状況。
これまで個人テスト用のアカウントだったので、解除ミスなどで課金されないか監視してたんですけどね。

さすがに寂しいのでなんかアクセスアップの施策とか考えてるところです。

施策(?)がてらにゅーえろ様のRSSを表示して、エロリスト様に登録。広告はi-mobile様とnend様とAdDeluxe様。Google Search Console登録にアナリティクス設置。SEOも最低限の措置はしたつもり。うーん、この辺は語ることが膨らみますね。成果も出てませんし、また後日まとめます。

AWSとエロの悩みどころ

AWSはエロOKなんですが、細かい注意が必要なので注意深く画像を選別しています。 とにかく気をつけなければと神経と使っているのがレiプ物。禁止かー。まあわかる。演技してるAVだろうが反社会的なものと扱われても仕方がないと思います。迂闊に紛れ込むと非常に困るので、広告についてもフィルタを見回しています。他、特殊ジャンルでは動物が絡むエロもダメなようですね。これは何だろう、宗教的な問題や動物愛護的な問題かな。興味ないジャンルほどアンテナ下がるので神経使わないといけないですね。

あと僕は日本国内の個人事業主としてこのサイトを運営している形になりますので、海外サーバであっても無修正画像は絶対にダメです。この放下著サイトは東京リージョンのバケットを選択しました。

もちろん児poもだめ。(ていうかそもそも許されるものではないですけどね……)

AWSのS3はお安いのですが、エッチなものを運営するなら下調べが重要です。
具体的な情報の前に、まずはAWS法務対応がどういうものなのかを概観しておくのが良いと思います。

知っておいて損はない AWS法務関連

参考にさせていただきました。非常に助かりました。
素人が一筋縄ではいかないやつです。

もしあなたがAWSを利用しつつ、法務面でギリギリのところを攻めたいのであれば、あなたが法律系の英文書に慣れているか、慣れている人材のツテがないと辛いのではないかと思います

僕はこのサイトでは、危うきに近寄らずでポリシーを固めます。無難に女性の下着姿メインで行きます。あとたまにおっぱい。おっぱい合法。スレンダーな女性も好きです。

エッチなものは露骨じゃなくてもいいんです。
僕が好きな画像は露骨じゃないやつです。ここは僕が好きな画像をのらくら集めて出すだけのサイトですから。

むやみに刺激に走らずのんびり運営していきたいと思います。

EC2を使わなかった理由とか

負荷分散を考えていくと、サーバは可能な限り、自前で管理したくない……という気持ちでいっぱいです。

アダルトサイトをAWSで運用する時に信頼性と料金節約を両立する為のノウハウ

上記は別件業務で非常に参考にさせていただいたサイト様なのですが、本当にやることが多くて面倒なんですよねー……。
趣味サイトの実装ですので、メンテナンスフリーでいける必要がありました。

現在Fargateという新サービスも出てきたので、将来的にはdockerコンテナでがっつり楽できる日が来るとは思います。

それでもS3とhugoという組み合わせほど楽ではないと思います。もちろんEC2の方ができることは増えるんですが、それよりもやらなきゃいけないことを減らすことが本サイトの計画上、最優先と考えた次第です。

サーバサイド処理が必要になったら、AWS Lambdaを組み合わせてちまちま改修していく必要はありそうです。

運営に当たって実装したこと

簡単なbashのシェルスクリプトを二つほど作成しました。

まず一つ目は、s3にsyncするワンライナーです。

# sync.sh
aws --profile MY-PROFILE-HERE s3 sync --exact-timestamps --delete ./public s3://BUCKET-NAME-HERE

これを置いて、hugo; ./scripts/sync.shを実行すればローカル作業が同期されるという状態です。なかなか手軽です。

もう一つは、フォルダに集めた画像のサムネイルを作成して、画像一覧のjsonを出力する機能を作成しました。
手作業で画像タグ貼るのは本当にしんどいので、ここだけはデータドリブンでやらねばと思っておりました。
このスクリプトで生成された画像一覧jsonを指定すれば、適当にレイアウトして表示するようにhugoのレイアウトも弄っています。(hugoの扱いについてはまた後日……まだよくわかってないところが多いです。。)

あ、sipsとか使ってるのでmacOS専用です。ご了承ください。

# サムネイル生成
mkdir $1/thumbs/
sips -Z 512 $1/*.* --out $1/thumbs/

touch newpost.json
echo '' > newpost.json
echo '{"imagelist":[{' >> newpost.json

first=true

for file in `\find $1 -maxdepth 1 -type f`; do
		# .DS_Storeは無視
		if [ `basename $file` = .DS_Store ] ; then
			continue
		fi

		# jsonはtrailing commaでエラーになるので繋ぎ方を一工夫。。
		# bashのboolは[]でくくるとうまくいかないので注意
		# 参考: https://hacknote.jp/archives/18466/
		if $first ; then
			first=false
		else
			echo '},{' >> newpost.json
		fi

		# カレントからの相対パスに置き換える
		# 参考: http://inokara.hateblo.jp/entry/2016/02/07/110113
		file=${file//`pwd`/}

		# パスから「/static」を省く
		file=${file//\/static/}
		
		echo '"src":'\""${file}\"", >> newpost.json
		echo '"thumb":'\"`dirname $file`/thumbs/`basename $file`\" >> newpost.json
done

echo '}]}' >> newpost.json

これでワークフローがシンプルになりました。記事に見合うジャンルの画像を自動収集しておいてから、手作業でヤバい画像がないか調べて弾き、このスクリプトにかけて出てきたjsonと画像セットを使って記事を作成するだけです。

これで運用準備が概ね整ったかなと。 最終的にはhugoのmarkdown出力まで自動化したいんですが、そこは今後の課題ですね。

また週末にでも落ち着いたら、hugoについて掘り下げてご紹介できればと思います。 hugoについてはfeedtailor様のスタッフブログが非常にまとまっていて助かりました。ありがとうございます。

feedtailor Inc. スタッフブログ

僕も何かhugoの活用方法など共有していけたらいいなと思います。

それでは本日はこの辺で。

引き続き放下著をお楽しみいただけると幸いです。