読者です 読者をやめる 読者になる 読者になる

そろそろ旬も過ぎたしMastodonについて書いておこうか

ポエム

何度か人前で発表していると、聞きに行っただけの勉強会で突然「わいわいたさん、ちょっと時間あるんで10分ぐらい喋って貰えますか」とか、元々20分の発表と聞いていたのに「時間が押してるんで、5分でいいですか」とか、5分だと思って行ったら本当は30分だったとか(これは単に私の確認不足だった)色々起こる。

特に一番最初のは本当に難しくて、引き延ばしや短縮はまあ気合いでどうにかなるんだけど、特に話す予定も無かったのにじゃあ一席、みたいなのは結構難しい。

とはいえ折角お声がけ頂いたのにお断りするのは心苦しいし、機会を頂いたら最大限活用したいと思っているので、とりあえず何か話す用のネタは大体考えていたりする。

大体時事ネタを含めたりする事が多くて、今回はMastodonを触って思った事をとりあえずストックしていたのだが、とりあえず旬は過ぎてそうなのでブログに書いてみる。

Mastodon

  • https://mstdn.uec.tokyo というMastodonインスタンスを運用している
  • Mastodonは、普遍的な(教科書的なと言うべきか)Railsアプリケーションである
    • つまり、富豪的な実装であると言える
    • 悪い事は言わないのでメモリ2GB以上は用意しよう
    • Docker上で動かしたり分散するのも可能だが、個人的には「巨大なRailsインスタンス」と「巨大なDB用インスタンス」の2台で動かすのが楽なのではないかと考えている
  • Mastodonの運用はWeb系のアプリケーション導入/運用の練習には適しているかも
    • Nginx(HTTP) / Rails / Postfix(SMTP) が必要になってくる
    • ちなみにメールはメールアドレス確認メールを送信するだけなので、メールを送る処理を無効化したり、SMTP SaaSとかに任せる方法もある
  • Mastodonの重いところは、ディスクとDBコネクション周りか?
    • クライアントとアプリケーション間でストリーミングコネクションを張るので、Nginxのコネクション許可数を増やすのをおすすめ
    • SidekiqとDBの接続周りも増やすといいかもしれない
  • アプリケーションの更新はかなり高速なので、運用するなら一定のポリシーでやると良い
  • 更にスケールしたいという需要があるならpawoo.net の記事が参考になる
    • まあ、Sidekiqワーカを分散するぐらいだろうか…

以上。

まとめ

とりあえずこれで5分〜20分ぐらいは保ちそう。

現状の想定は「Mastodonという言葉は知っているけど技術的な要件は知らん」ぐらいの層を想定している。多分この層が一番多いのではなかろうか。

30分〜1時間のセッションならもう少し話すネタが必要かな。多分実際のconfを見せてみたり、サーバの様子を見せてみたりすれば+10分はいける。1時間までいくならしっかりとした計算式や根拠を話すと多分伸びる。が、1人だとこれが限界かなあ。

という訳で10分ぐらいの登壇ならいつでもしますのでいつでもお声がけください。

ちょこちょこWebアプリを書いてる

私がIT系に入って一番最初にやったバイトがインフラ系で、主にサーバの運用をしていたので、どちらかと言えばインフラ、ミドルウェア周りに興味があったし知見もあった。 そのバイトを始めとして色んな環境に身を置かせてもらっていたんだけど、ネットワーク機器とか、Infrastructure as a codeみたいな事とか、どちらかと言えばレイヤーが低めになっていった。

ただ、一応Web系に身を置いている人間として、Webアプリすら書いたことないのはどうなの、という話になり、それはその通りだと思いちまちまとWebアプリを書いている。

リポジトリはここ。使ってる技術的にはFlask(Python)+MySQL+Redisだろうか。

github.com

アプリケーションの内容的には、QiitaのAPIを叩いて検索とか出来るようにしている。Qiita Frontend Alternative?になるのかな。

本当に経験が無かったので手探り手探りでやっている。

DBとかはチューニングの為にたまにクエリを見たりしていたのでまあまあ存在価値は分かっていたんだけど、Redisはなんとなく「セッションを管理してるんだろうな」ぐらいの認識で、イマイチセッションがどう使われるのかとか分かっていなかったけど、何となくわかってきた気がする。

まだ分かってないのは、gitの扱いがちょっと怪しい。特に、「とりあえずコミットしたいんだけど秘匿情報がまだ含まれてる」とかの場合にどう扱うのかがピンと来てない。その時々で対処法が違うからここは勘を覚えるしかないのかなあ。

やったこと

  • QiitaのAPI叩いて取得する
  • タイトルとユーザIDで検索する
  • アカウントはDBで管理する
  • ログインしているユーザセッションはRedisで管理する
  • Herokuで動くようにする
  • Dockerでも動くようにする(というか開発環境は docker-composeMySQLとRedisを立ち上げている)

今後のTODO

機能

  • お気に入り機能
  • ユーザ登録機能

技術

とりあえず聞いた事があるこの辺を実装はしたいと思っている

まとめ

時間の隙間を見て実装していて、またフルフレームワーク(DjangoとかRailsみたいなやつ)を使わずにちょこちょこやっているので進捗はかなり遅いんだけど、まあ充実感は大きいので良かったかなと思っている。

あと、Pythonは割とふわっと書けるので便利。vimの機能でPEPに準拠しているかどうかをチェックする奴を自動で動かすようにもしているので、一定の水準を持ってふわっと書けるのが良いのかもしれない。

少し前にGolangでWeb書いてたら中々しんどさを感じたのでPythonにしたんだけど、まあ今の所言語を切り替える予定はない。

また何かあったら報告します。Flaskの知見ももうちょっと溜まったらアウトプットしたい。

ついでにコードのここが筋悪とかここはイケてないとかあったら教えてください。

2017年冬季(新春)アニメ総括メモ

少し遅れましたが、伝説となりえたアニメBanG Dream!も最終回を向かえたので、書いておきます。 ちなみにBanG Dream!は見てませんでした。

前回:

whywaita.hateblo.jp

結果

名前 放送時間 結果
AKIBA’S TRIP -THE ANIMATION- MX ¼(木) 23:30 途中まで見てたはず
政宗くんのリベンジ MX 1/5(木) 22:30 完走
うらら迷路帖 TBS 1/5(木) 25:58 完走
セイレン TBS 1/5(木) 26:28 切った
スクールガールストライカーズ Animation Channel MX 1/6(金) 24:30 切った
風夏 MX 1/7(土) 22:00 切った
亜人(デミ)ちゃんは語りたい MX 1/7(土) 23:30 完走
ひだまりスケッチ×ハニカム MX 1/7(土) 24:00 温存中
にゃんこデイズ MX 1/8(日) 22:27 切った
エルドライブ【ēlDLIVE】 MX 1/8(日) 22:00 完走
チェインクロニクル ヘクセイタスの閃(ひかり) MX 1/8(日) 22:30 途中まで見てたはず
アイドル事変 MX 1/8(日) 23:30 切った
リトルウィッチアカデミア MX 1/8(日) 24:00 1話も見てない
ちょぼらうにょぽみ劇場第三幕 あいまいみー~Surgical Friends~ tvk 1/8(日) 26:30 切った
ガヴリールドロップアウト MX 1/9(月) 24:00 完走
ACCA13区監査課 MX 1/10(火) 23:00 途中まで見てたはず
ハンドシェイカー MX 1/10(火) 24:30 1話もみてない
南鎌倉高校女子自転車部 tvk 1/10(火) 25:00 1話も見てない
けものフレンズプロジェクト テレビ東京 1/10(火) 25:35 完走
ピアシェ〜私のイタリアン〜 MX 1/11(水) 22:30 1話も見てない
OneRoom MX 1/11(水) 22:40 途中まで見てたはず
小林さんちのメイドラゴン MX 1/11(水) 24:00 完走
この素晴らしい世界に祝福を!2 MX 1/11(水) 25:05 完走
CHAOS;CHILD MX 1/11(水) 25:35 1話も見てない
MARGINAL#4 KISSから創造るBig Bang MX 1/12(木) 23:30 1話も見てない
クズの本懐 フジテレビ 1/12(木) 24:55 1話も見てない
SUPER LOVERS2 MX 1/13(金) 25:40 完走
Rewrite MX 1/14(土) 23:30 完走
グランブルーファンタジー MX 1/21(土) 19:00 1話も見てない
BanG Dream!(バンドリ) MX 1/21(土) 22:30 限界
幼女戦記 忘れた 忘れた 完走

詳細

幼女戦記

完全に優勝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

今季覇権と言える。 「99%悠木碧なんだけど本当に悠木碧なのか判別出来ない」と言われたターニャちゃんと、「数百億%早見沙織」と言われたヴィーシャちゃんが神。 あとはアツい演出が本当によくて優勝。完全に勝利した。

亜人(デミ)ちゃんは語りたい

優勝!!!

亜人ちゃん達が可愛すぎる。特に誰が可愛いとかはないです。

政宗くんのリベンジ

俺も風邪引いてリベンジしてえ。優勝。

けものフレンズプロジェクト

けものフレンズは今季最も話題になった作品であるのは間違いないと思う。

話題となった1話はどうも声優さんの演技に違和感があったり、2話以降とはかなり意向が違うように思える。 4話あたりで話題になったこのアニメだが、ゆるふわ系と思って見ていた層が最後まで残らなかったのは、このアニメが完全な王道アニメだからだろう。

私はあの最終回がとても好きだ。なのでしばらく最終回だけ見てると思います。今後に期待。

小林さんちのメイドラゴン

普通に優勝していくアニメ。優勝。

ピーチボーイリバーサイドのアニメ化を待ち続けています。

ガルリールドロップアウト

最近SS界隈で急に流行ってきたけどなんなんですかね?

うらら迷路帖

正直きららのキレが最近落ちてきているのを感じる。

エルドライブ【ēlDLIVE】

原作が面白くない(内容はいいんだけど刊行時期が微妙すぎる)のに比べてアニメは本当に良かった。 多分原作も週1で見たら面白いんだと思う。

まとめ

今季は正直に言うと不作であったと言わざるを得ないのではないかと思っている。 どうも優勝しきれない存在であったり、ずっと見ようと思える風格を感じられなかった気がしており、周囲のアニメ愛好家でも似たような評判であった。

通常であれば幼女戦記が覇権になるのは少ないのではないかと思っているが、覇権となったのは今季こそであるかもしれない。

ただ、その分2017年春季は正直ハンパないので是非見てほしい。

そんな今季のリストはこちらです。

2017年春季アニメ録画リスト · GitHub

では、2017年冬季(新春)、お疲れ様でした!!!!!!!!!!!!!!!!!!!!!!!!!

株式会社はてなに入社しました

株式会社はてなに入社しようとしましたが失敗しました。

株式会社はてなに入社しました - hitode909の日記

Dentoo.LT #16 参加してきた #dentoolt

atnd.org

遅くなりましたが参加報告記事です。

今回のスライドはちゃんとslideshareに上げておきました。 「地獄のご紹介」というおどろおどろしいタイトルですが、何度か話に出ているd250g2というインターネットコミュニティについてお話ししました。

www.slideshare.net

スライドにはある通り、大学院という場所で2年間頭の治療をする事になりました。 あまり具体的に公言はしていなかったのですが、無事単位数も十分に集まり、大学を卒業することとなりました。やらねばいけない事とやりたい事のバランスを取りながら全力で休んでいきたいと思います。

そして今回から主催が継承されました。 私から受け継いだ id:miki_bene から id:hogashi に移りました。 もうそろそろ私も準備にはほぼ関わっておらず、後輩達の力でほぼ実現できています。良い事ですね。 前述の通りまだしばらくは大学に居るので、しばらくは顔出しをしていると思いますのでご安心ください。

見逃した方はいつも通りYoutubeLiveがあるのでそちらからどうぞ。 新入生に向けての発表などもあったので、もしこのブログを見ている電気通信大学新入生が居れば少しお得かもしれません。

www.youtube.com

ついでに誰も言ってないのでここに書いておきますが、YoutubeLiveでのカスタムURLを取得しました。

https://www.youtube.com/c/dentoolt

かなり短くて良い感じですね。

まとめ

という訳で今回登壇/聴講/YoutubeLive視聴頂いた皆様ありがとうございました。

次回の Dentoo.LT で会いましょう。

Heroku上でWordPressを動かしてチューニングしてみる

2017/03/03 追記: ab結果がおかしいのではというお話を頂き現在調査中です。あくまで参考値として参照ください。

2017/03/03 追記2: ab結果がおかしい事が判明した為、abの結果表示を削除しました。速度に関する記述に関しては夢物語としてお楽しみぐださい。

アプリケーションPaaSなHeroku上でWordPressを動かすという試みがあり、一応まともに動くという話を聞いたので、試してみるがてら高速化出来ないかやってみる。

インストール

雑にWordPressの公式からファイルをダウンロードし、

$ git add .
$ git commit -m "initial commit"

などとする。

WordPressMySQLを用意する方法はいくつかあるが、アドオンで人気そうなclearDBを使う。

$ heroku create
$ heroku addons:add cleardb

と打てば、herokuアプリを作成してclearDBアドオンも追加される。herokuコマンドのインストールなどは割愛する。

$ heroku config

とするとclearDBへの接続情報を得る事が出来るので、 wp-config.php ファイルに記載し、よしなに書き足す。

その後、 git push heroku master とすれば、WordPressが立ち上がる。意外と最初見た時は衝撃的だった。

チューニング & 計測

とりあえずデフォルトで計測を行う。

Nginx/PHP 5.6.30

※ab結果がおかしかった為削除(2017/03/03)

PHPバージョンアップ

HerokuではPHP7が動くので、こちらに移行する。 HerokuでPHPのバージョンを指定する場合はcomposer.lockを設定すれば良いらしいので、雑にcomposerを導入して、composer.jsonを書いて composer install した。

上手くPHP7系になった場合は、 git push heroku master の際に利用されるPHPのバージョンが表示されていて、そこに7系の数字が出るはず。

$ cat composer.json
{
    "name": "whywaita/test-wordpress",
    "authors": [
        {
            "name": "whywaita",
            "email": "whywaita@whywrite.it"
        }
    ],
    "require": {
      "php": "^7"
    }
}

abコマンドはこれも含めて最初と共通。

※ab結果がおかしかった為削除(2017/03/03)

そこそこ早くなった。

Apache

正直Nginxの方が早いと思うんだけど、一応試してみる。

Webサーバの設定は Procfile で行う。

$ cat Procfile
web: vendor/bin/heroku-php-nginx

$ cat Procfile
web: vendor/bin/heroku-php-apache2
※ab結果がおかしかった為削除(2017/03/03)

案の定少し遅くなった… これ以降はNginxに戻した。

SSL

SSL化はオーバーヘッドが生まれるものの速度の面でもそれなりに期待できるし、ちゃんとやるなら必須なので試してみる。

Herokuは *.herokuapp.com のwlidcard SSL証明書を提供しているので証明書自体は既に適用されているんだけど、これはHerokuのロードバランサーを介することで動いているもので、WordPressで安易にやると強制リダイレクトループしたりするので気を付ける。

この記事にも書いてあるんだけど、wp-config.phpをよしなに書くと動く。

具体的には以下のコードを追加すればいいんだけど、この時にwp-settings.phpの読み込みよりも上に書かないと詰まる。

/** ssl in heroku **/
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
      $_SERVER['HTTPS'] = 'on';

その件はこのブログにある。このページにアクセスする権限がありません。という表記が出たらこれで直る。

なので具体的にはこうなるのかな?

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
        define('ABSPATH', dirname(__FILE__) . '/');

/** ssl in heroku **/
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
      $_SERVER['HTTPS'] = 'on';

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

これを追加してHerokuにデプロイするととりあえずHTTPSでも動くようになる。が、デフォルトのドメインはHTTPのままで、管理画面とかもHTTPのままになるので、WordPressの管理画面から変更すると良い。

※ab結果がおかしかった為削除(2017/03/03)

猛烈に早くなった。SSL凄い。 Herokuではhttp2はまだサポートしていないので、これが対応されるとまだ早くなりそう。

詰まったところ

has exceeded the ‘max_questions’ resource (current value: 3600) エラー

突然WordPressのインストール画面が出てくるようになってしまって、再インストールしようとしたらこういうエラーが出る。

ClearDBのFAQにちゃんと書いてあって、1時間毎のクエリ数が制限されているらしい。

ClearDB FAQs – ClearDB

大体待ってると直るけど、ちゃんと動かすのなら課金するなりMySQLサーバを自分で立てるなりした方が良さそう。

参考記録

私がホスティングしているなぜにブログベンチマークも計測してみる。

$ ab -n 100 -c 100 https://blog.whywrite.it/
This is ApacheBench, Version 2.3 <$Revision: 1748469 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking blog.whywrite.it (be patient).....done


Server Software:        nginx
Server Hostname:        blog.whywrite.it
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256

Document Path:          /
Document Length:        70808 bytes

Concurrency Level:      100
Time taken for tests:   15.793 seconds
Complete requests:      100
Failed requests:        0
Total transferred:      7127500 bytes
HTML transferred:       7080800 bytes
Requests per second:    6.33 [#/sec] (mean)
Time per request:       15792.543 [ms] (mean)
Time per request:       157.925 [ms] (mean, across all concurrent requests)
Transfer rate:          440.74 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      468  745 182.1    864     888
Processing:  1372 9285 4737.2  10609   14918
Waiting:     1340 9250 4736.6  10578   14888
Total:       1841 10030 4894.7  11472   15785

Percentage of the requests served within a certain time (ms)
  50%  11472
  66%  13843
  75%  14854
  80%  15274
  90%  15587
  95%  15655
  98%  15776
  99%  15785
 100%  15785 (longest request)

コンテンツ量もあるので一概に比較出来ないけど、実はHerokuの方が早いのかもしれない。

まとめ

とりあえずデフォルト設定と比較して約7倍ぐらい高速化できた。PaaS上でプラグイン利用無し縛りでやった分にはそれなりに高速化出来たような気がする。

Herokuは無料だとちょいちょい落ちたりしてるんだけど、その辺を許容するならかなり良い気がする。Herokuに信奉する人が何人か居るのは知っていて、そんなに良い物なのかと思っていたけど、最近そう言い出すのも少し分かるようになってきた気がする。

ちなみに今回のソースコードは以下に置いた。ClearDBのログイン情報がそのまま載ってるけど気にしないでください。

GitHub - whywaita/wordpress-heroku-sample

デモサイトは以下です。

https://yyta-wp.herokuapp.com/

2016年秋季アニメ総括メモ

夏季は書けずにすみませんでした。 ここ最近随分忙しく、今回も中々散々な結果になってしまいましたが、とりあえず書きます。

前回(本来は前々回):

whywaita.hateblo.jp

結果

名前 放送時間 done
競女!!!!!!!! MX 10/6(木) 23:30 完走
おくさまが生徒会長!+! tvk 10/9(日) 26:35 完走
その他 各局 10月ぐらい 挫折

詳細

競女!!!!!!!!

これは完全に優勝、いや、日本一アニメである。

この作品に関しては少し長く書く。

1話に感じたあの時の衝撃を、恐らく競女!!!!!!!!を見た全ての視聴者を感じたのではないかと思う。

競女!!!!!!!!はその作品性質から敬遠されがちなアニメだ。恐らく、1話を見て数分でこのアニメの視聴を辞めてしまった視聴者も多かったのではないだろうか。 お色気系の作品である為に、そういう萌え要素があったのではないかと思うかもしれないが、そんな事はほぼ無かった。

勿論そういった要素を抜きにしてこのアニメが話題たり得たかと言えばそうではないのかもしれない。この作品は、11話分の前振りがあって、12話の最終話が完全に成り立つアニメだ。あれほど熱いアニメを見て、心が熱くなったのは本当に久しぶりだ。 恐らく近い作品としてはキルラキルが思い出されるだろう。それぐらい素晴らしいアニメだった。

原作や脚本家などについてはあまり詳しく無いのだが、他の方の話を聞いている限り、原作のテンポをそのままに、脚本家が素晴らしい脚色を加えて昇華させたものであるようだ。 近年は創作作品の実写化など、原作者以外がその作品に手を加える事で劣化してしまう例が多く、世間もそれを避けるような傾向にあるようだが、アニメ作品、ことこの作品に関しては素晴らしい物であったと私は考えている。

本当に素晴らしいアニメであった。 「落第騎士の英雄譚」、「僕だけがいない街」と並べても遜色の無い、日本一アニメの称号を持ったアニメと私は称したい。

おくさまが生徒会長!+!

1期が完全優勝出来てしまったばかりに、2期の期待も高まったのだが、ただのエロアニメになってしまって残念。

確かに売上が伸びるのはその方向なのかもしれないし、1期の購買者層的にもそのような方向が強かったのは否定しないが、私が好きだったのはそういうのではなかった………

その他

完全に挫折した。1,2話ほどは見ていたのだが、あまりにも忙しく、上記2作品以外は完走に失敗したので、今後は反省したい。

まとめ

今季は完走作品が少ない為に、今回は総評としての言及は避けたいと思う。

より良いアニメに出会う為に、良い選定眼を持っていきたい。

2016年秋季、本当にお疲れ様でした!!!!!!!!!!!!!!!!!!!!!

来季の録画リストもいつも通り作っておいたので、よろしければどうぞ(実は秋季よりも忙しくなりそうなので、アニメが見られるかは怪しいが…)。

2017年冬季(新春)アニメ録画リスト · GitHub