least_alone

ひとりごと。

新生エロいいね研究会への道

概要

こんにちは, トラブルサムです

皆さんはエロいいねしてますか?

エロいいね無き人生は麺の無いラーメンです. エロセルフDMしてるやつだいたい陰キャ

あらすじ

ところで皆さんはエロいいね研究会を覚えているでしょうか.

日本語の読めないバカな絵描きの増加, ブヒッター炎上, Twitterの仕様変更によるオタク締め出しに伴い枯渇するエロいいね資源.
そんなディストピアでオアシスを求めたエロいいねの有識者達によって発足した研究機関です.

順調な滑り出しを見せたエロいいね研究会でしたが, 平和とは長く続かないのが人の世の常です.

エロいいね研究会の技術インフラについてという記事でお話しましたが, エロいいね研究会のエコシステムはエロいいねが大前提です.
エロリツイート, エロセルフDM, エロブックマークなどは対象外です.

我々はこのような巨悪と戦わなければなりません.

エロいいね提供の登録をWebサイトから受け付けていないことに起因した(と考えられる)ドナーの不足も問題となりました.
エロいいねデータは大きな偏りを見せ, そして時々, ただわけのわからないコピペやDJ KEIのコラ画像ではしゃいでるだけのアカウントのツイートが紛れ込みました.

また, これらのデータ基盤をSpreadSheetsやIFTTT, Discordに任せたのは失敗でした.
これらはルーチンワークをほんの少し便利にしてくれるものであって, 我々のように研究熱心なユーザの利用を想定したものではありません.
具体的には, 我々のエロいいねにサービスが耐えられませんでした.

あと唯一の開発者である僕がめんどくなって飽きました.

このような背景から, エロいいねer達は表立って活動することをやめ, 自分の研究に没頭するようになり, そして誰もいなくなりました.

時は流れて

唐突に気分がノッてきたので作ることにします.

多分すぐ飽きるのでPython, Vue(TypeScript)開発者募集.

GitHubにぶんなげとくのでforkしてPullRequest送るとかしといてください.
よくわかんなかったらツイでリプライ飛ばしてください. 開発者じゃなくても意見があると嬉しいです.

機能

こんな機能を追加する予定です.

Twitter連携

必須だよね.
ツイ連携でエロいいね提供できるようにします.

あとエロセルフDM勢は敵ですが, うまく味方に取り込むためにエロいいね研究会上からワンタップでエロセルフDMできるようにする予定です.

PWA対応

Progressive Web Applicationと言います, 簡単にいうとWebページをネイティブなアプリっぽく使える仕組みのことです.
まぁこの辺はVue-CLIのwebpackがいい感じにしてくれるんじゃないのかなぁという感じ

自動分類

大まかに2種類

文章解析による自動タグ付け

これは比較的簡単ですね. 日本語形態素解析エンジンのMeCabとか使っていい感じにします.

場合によっては集めたエロいいねツイートの文章を解析してエロ辞書を作ることも必要かな.
例えば島風みたいな固有名詞とかだと辞書を定義してあげるこっちのが手っ取り早いです.

というか書いてる途中で思ったけど全部エロ辞書でいいような気がしてきました.
エロ辞書を作るために形態素解析すればいいや

やっぱ今やってることを文章にすると思考が整理されていいですね.

機械学習による画像分類, フィルタリング

この辺は学習するデータセットによって結構結果が変わるからなんとも言えないですね.

とりあえず手元でうまいこと特徴量が示せるか試してみることから地道に始めたいと思います.

あんまり画像の機械学習には詳しくないんですが, 先日専門家と話す機会があったのでちょっとだけ知識を仕入れました
GANとか使うのがナウな感じっぽいのである程度データが集まったら適当にやってみます.

技術的な話

前までいろいろ小細工して楽な実装&サーバレスライクな作りにしてたんですけど, 流石に難しい処理しようってなるとどうしてもプログラムは書かないとですね.

ホントはAWSでステージングしようと考えてたんですけど, このサービスを提供する上で最も大事なことがあります.

それはなるべくお金をかけないことです.

理由はいくつかありますが, ざっくりいうと僕が破産しないためです.

なので, 多少時代遅れ感はありますが格安VPS上にバックエンドサーバを立てて, フロントはGithubPagesとかで公開しつつ様子を見てみようかと思ってます.

サービスの規模とシステムの見通しを良くするためにミニマルな構成を考えているので, リッチなフレームワークは使わずにいこうと思います.

バックエンド

使い慣れてるという理由でPythonフレームワークのFlaskを使います.

1ファイルでAPIサーバを立てられるくらいシンプルなので非常にいい感じです.

主にDBへの接続, APIの提供を行います.

DB

何使うか迷ってんですよね〜〜〜〜〜〜〜

あんまりRDB好きじゃないってか死んでほしいけどユースケース的に使わざるを得ない気がしてます. データベース設計苦手だから今回みたいに「あ、これもこれも!!」ってなるパターンの開発だとスキーマの定義が面倒です.

とりあえず規模的に小さいので, 1ファイルで完結してるSQLite3と, 細々したデータの管理に使用するため, JsonファイルをDBっぽく使えるTinyDBというPythonのライブラリを使う構成で行こうと思ってます.

規模が大きくなったらMongoとかPostgreSQLに切り替える手もアリ

Redisはメモリ的に厳しいのでパス, SSRとかやるようになったらキャッシュに使うかも

フロントエンド

前回と同じくVue + Vuetifyで.

基本的にはWebAPI叩いてレスポンスをきれいに表示するだけなのでそんなに苦労しないと思う.

運用

  1. 手元で開発
  2. GitHubにpush
  3. CIでビルド
  4. CIからAPIサーバとPagesを更新

という感じ

dockerでDBとか開発環境やろうとおもったけどTinyDBとSQLiteならいらんかも

やりたいこと

  • いろいろできるCLIツールの作成
    • Build
    • Deploy
    • Init
    • DBSync
  • ドキュメントの整備

その他

思いついたら書きます