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
  • ドキュメントの整備

その他

思いついたら書きます

クリみくじを公開しました

概要

クリみくじです。

クリオンのおみくじだから、クリみくじです。

卑猥な単語と勘違いしてはいけません。 sometrouble.github.io

歴史

クリみくじの開発は2016年に続き2回目です。

クリちゃんのRayという曲が好きで8bit風音源をつくったついでにやっつけで6時間くらいでつくったやつが初期版です。

当初はぼくのサーバで公開していたんですが、現在サーバの80番ポートになにも立てていないので遊ぶことができません。

実装

前回のソースをもとにちょちょっと改造しただけです。

enchant.jsというゲームエンジンを使用して作成しています…が、 このenchant.jsというものが伊丹市森本です。

  • 更新が止まっている
  • ドキュメントが少ない
  • npmと親和性の高いボイラープレートのようなものが存在しない

この辺がマジで伊丹市森本でした。

最初は、気になっていたphina.jsというものを使ったのですが、ドキュメントがenchant.js以上のゴミハゲでした。

普段はゲーム作成とかしていないので、ドキュメントがちゃんとしているjs製ゲームライブラリが教えてほしいです。

ボイラープレートがない(自分で作る気も起きない)し、coffeeとかで新たに作るのもめんどくさいので、ファイルのモジュール分割ができないのが結構イラつきました。というか1ファイルで作ってる人しか見ないんだけどみんなこんな苦行をやっているのでしょうか?

デフォのjsでざっくり書いて、uglify-esでminifyしているだけです。

前回からの変更点

ゲーム内容としては全く変わってないです。

  • 画面を横長→縦長に変更
  • fpsを30→60に変更
  • キャラ画像を32px→64pxへ変更
  • 登場キャラを2人追加

ラッキーアイテムは全28種類, 運クリはスコアの低い順に - "敏感クリ" - "凶クリ" - "末クリ" - "小クリ" - "中クリ" - "クリ" - "クリクリ" - "大クリ" - "特大クリ" - "超特大クリ" - "凶悪クリ" - "極悪クリ"

に分かれています。

みなさんも大クリ以上を目指して頑張ってください!

壁紙

タイトル画像

ツイッターカード

エロいいね研究会の技術インフラについて

前置き

こんにちは、エロいいね研究会研究員のTrouble_SUMです。

この記事ではエロいいね研究会を支えるインフラについてお話いたします。

また、この記事を通してエロいいね研究会に興味を持たれた方は、さらなるエロいいねの高みを目指して我々と共に研究を進めていただけませんか?

エロいいね研究会は、優秀な研究者, 技術者を求めています。

Our Discord Community [https://twitter.com/sometrouble/status/1071191545980698624:embed] [https://twitter.com/sometrouble/status/1071547288009363456:embed]

エロいいね研究会とは?

エロいいね研究会

エロいいね研究会とは、@NYLON1919を研究会長とする研究会です。

主な活動はTwitter上でのエロいいね(=スケベな画像をいいねする行為)であり、エロいいね行為に関心を持つ有識者によって研究会は構成されています。

詳細はエロいいね研究会 - Aboutの研究論文を参照してください。

学術的な目的に限り、会長による優秀な論文を無償にて閲覧することができます。 ここではその一部を引用いたします。

NYLON1919’s blog - エロいいねのやり方(発展編)

NYLON1919’s blog - エロいいね危機(sexual faborite shock)

これらの研究論文にもあるように、エロいいね研究会は重大な危機を迎えています。

果たして、エロいいねというルーティンワークを今更研究する必要はあるのか? Buhitterのように母国語で書かれた利用規約も読めないバカ共に叩かれるのでは? ぶっちゃけ活動めんどくさくない? そもそも需要はあるのか?

様々な問題が重なり, エロいいね研究会はその存在理由(raison d'etre)を失いつつあります。

しかし、我々はこれからもエロいいねを続けるでしょう。それが十三階段を上る行為に等しいと知っていながらも。

インフラの全体像

前置きが長くなりましたが、本題に入りましょう。

また、この情報は2018/12/21現在の情報となっております。 変更があり次第、詳細を追記いたします。

全体像はこんな感じです。これを見たところでよくわからないと思うので一つひとつ見ていきましょうか。

Twitterでエロいいねする

タイムラインに表示されているスケベな画像を周りにさとられないよう、自然な動きかつ素早い動作でいいねします。

これには少しコツがいります。何度も練習を重ねていくうちに動作が洗練されてくるので、それまではひたすらエロをいいねしてください。

Discoにエロいいねが垂れ流される

IFTTTというWebサービスの連携サービスがあります。

例えば、「これをすれば(トリガー), これがされる(動作)」のような組み合わせを定義することで、処理の自動化を行うことができます。

これを利用して、「Twitterでいいねを行うと, Discordにその内容が投稿される」という動作を行っています。

DiscoからURLを拾ってDB(SpreadSheet)へぶん投げる

今回、DBの代わりとしてGoogleの提供しているスプレッドシートを利用しています。 採用した理由としては、非エンジニアの研究者でもデータの確認が容易ということと、単純にぼくが気になってたからやってみたかったんです。

TwitterのURLが流れてくるまでDiscordのチャンネルを監視するBotPythonで作成して、Herokuにデプロイして24時間動作させています。

また、わざわざDisco監視しなくても直でスプレッドシートへ投げてもいいんじゃ?と思う方もいるかもしれませんが、次の理由でDiscordをバッファとしてかませることにしました。

  • Slackと違ってDiscoはいくらでもメッセージを投げられる
  • 研究者同士の交流の場としてリアルタイムに他人のエロいいねが流れてくる環境づくりをしたかった
  • Disco上のリアクション(絵文字やリプライ)ごとになんらかの処理を行う際に便利

Webページから、DBへのデータ参照, 反映

エロいいね研究会のWebページでは、会員登録, 論文投稿, シンポジウム参加, エロいいねされたツイートの表示機能の実装を予定しています。(ほとんどできていませんが)

現在はBetaのステージング環境としてGithub Pagesを利用していますが、PagesではPythonPHPを用いた動的なページの生成処理を行うことができません。

そこで、GASとスプレッドシートを使って簡易的なAPIサーバ+DB環境の代わりとし、GET/POSTリクエストを投げて、レスポンスをVue.jsでレンダリングすることで動的に要素を表示しています。

通常のDBなどを利用した場合に比べパフォーマンスは多少落ちますが、今はまだそこを気にする段階ではないのでその辺はおいおいと言った感じですね。

何よりすべて無料で実装できるっていいよね。ロマンがあります。

眠い

ので今回はこのへんで終わりたいと思います。

続きは気が向いたら書きます。

終わりに

エロいいね研究会では技術者が不足(というか僕一人なので)しています。

我こそは!という開発者の方(もちろん, やる気のある初心者の方も)は是非お力添えいただければ幸いです。

具体的には, 次の知識がある人を求めています。

フロントエンド開発

バックエンド開発

Bot開発

  • Python3: Discordbotの機能追加/ ふつう

という感じです。 ぼくしかいないので全く作業が進みません。

Pagesで公開する関係上, リポジトリにソースがすべて公開されていますので参考にしてください。

Our Discord Community