GIGAZINEのアニメまとめ記事をパースするコマンドgiganiを作った

github.com

GIGAZINEが毎クールごとに出している新作アニメ一覧ページ(ex: http://gigazine.net/news/20170917-anime-2017autumn/ )をパースするコマンドを作りました。

動機

毎クールごとにそのクールのアニメ総括メモを書いていて、ついでにgistに録画するリストを毎回手作業で作っていたのですが、これが面倒になったので自動的にパースするようにしました。

以下のようなstructを提供しています。

type Anime struct {
    Name        string
    URL         string
    StartDate   string
    BloadCaster string
}

https://github.com/whywaita/gigani/blob/f272572a6bf98fc2d432eb6727f475b5357bb426/main.go#L8-L13

現状だとMarkdownの表を出力するようになっていますが、他に出力したいものがあれば適当に弄ってください。 出力例はこんな感じです。

気づき

HTML パース

HTMLパーサといえばRubyのNokogiriやPythonのBeautiful Soupなんかが有名ですが、軽く見たところ一条件の要素をささっと取るのは楽なものの、今回のGIGAZINEのサイトを見ていると

  • そもそも正しいタグ構造になっていない
  • 法則性はあるものの放送局や特番の関係で微妙にズレていることがある

などなど結構お粗末で、上記のライブラリ群だと上手く動かなさそうだったので、Golangでシュッと書くことにしました。

現状のGolang標準パッケージにあるトークナイザーは x/net/html があります。が、これもいまいち使いづらく、特に

<h2><a href="http://whywaita.hateblo.jp/">なぜにぶろぐ</a></h2>

のようなHTMLがあった場合に「なぜにぶろぐ」という文字列を取得することが出来ないように感じたので、大体フルスクラッチかなと思っていたところ以下のページを見つけました。

stackoverflow.com

HTML系パッケージではなくxmlパッケージを使うことで良い感じにパース出来るのでは、という記載があったので参考に書いてみました。

type htmlTitle struct {
    H2 Value `xml:"h2"`
    A  Value `xml:"a"`
}

type Value struct {
    Content string `xml:",innerxml"`
}

func trimTitle(sentence string) (title string, err error) {
    s := strings.TrimPrefix(sentence, `</p><hr><p class="preface"></p>`)
    h := htmlTitle{}

    err = xml.NewDecoder(strings.NewReader(s)).Decode(&h)
    title = h.A.Content

    return title, nil
}

https://github.com/whywaita/gigani/blob/f272572a6bf98fc2d432eb6727f475b5357bb426/parse.go

このように書くと安全に値が取得出来るようになって最高です。

終わりに

まだもう少しバグはありますがとりあえず動いているので満足しています。 何かアレな部分があればご連絡ください。

良いアニメライフを。

私はこれを作っていたらアニメ録画出来ていなかったので急いで決めます。

スカイアーチネットワークス杯 第8回ICTトラブルシューティングコンテストの運営委員をしました #ictsc

標題の通りです。

8/26,27 に開催されたICTトラブルシューティングコンテストの運営をやってきました。

icttoracon.net

ポエム

本会は我が所属である電気通信大学で行われました。これを開催するまでには随分と長い交渉があり、様々な関係各所に多大なご協力を頂きました。本当にありがとうございました。

さて、様々なポエムを書こうかと思い立ち、深夜テンションで2000文字ほど書いたところまでは覚えているのですが、今日朝起きたときにほぼ全部消しました。なんかこれを共有しても意味ないのでは?という気持ちになったからです。

それなら何を書くんだという気持ちになった結果として一行目の感謝の言葉があります。この大会は数年前に一度「電気通信大学での開催は不可能である」という決断を下されているのを覆して開催されました。私が東奔西走して開催まで頑張ったのは勿論、やはり大学職員/教員の皆様のご協力はとても大きく、開催にこぎつけたのは様々な方のおかげです。

終わりに

終わりの後には次の始まりがあるものです。という訳で次回は第9回 ICTトラブルシューティングコンテスト、プラチナスポンサーとしてさくらインターネット杯が行われます。

次も何らかの形で関わるかもしれません。皆様どうぞよろしくお願いします。

2017年版フロントエンド入門しようとした(してません)

medium.com

皆さんがどうかは知りませんが、しがないエンジニアであるところの私は2017年に生きているので、そろそろフロントエンド業界の皆様が纏めたであろう甘い汁をすすろうかと思います。

実行環境

何はともあれ実行環境を入れなければ始まりません。Nodejsなるものを入れます。

最新版はv8.1.4のようなのでこれを入れました。Nodejsのリリースサイクルとして、偶数は安定版(LTS)、奇数は開発版というものが使われてきたようなので、v8.1.4でも問題ないでしょう。ですが、前述したNodejsのサイトを見るとv6.11.1が安定版と記載されています。

偶数奇数パターンはなくなったように見えますが、現状は「なくなるかもしれない」というフワッとした状況のようです。よく分かりませんね。

私はクライアントマシンの環境構築にはanyenvを使っているので、これを利用してndenvをインストールしました。

$ anyenv install ndenv
$ exec $SHELL -l

パッケージマネージャ

NodejsもRubyPythonと同じようにモジュールパッケージ機構を持ちます。Node Package Managerでそのままnpmです。同名のパッケージマネージメントコマンド npm が長く使われてきたのですが、近年高速に動作するnpm(パッケージマネージサイトのほうです)クライアントとしてFacebookyarnを公開しました。npmコマンドとほぼ同等の機能が使える上に高速であるということなので、今回はこちらを使います。

前述の通りndenvを利用しているので、一緒にyarnもインストールするプラグインをインストールしました。

github.com

ndenv install をする前にこのプラグインを導入しておくと便利です。

$ ndenv install v8.1.4

モジュール群のPATH

yarnコマンドを使ってモジュールをインストールすると、そのディレクトリにnode_modulesというディレクトリが生成され、そのディレクトリにモジュール群の本体がインストールされます。

プロジェクト毎に利用したいモジュールのバージョンを変更したいなど、様々な要件があると思うので、この辺はよしなに実行します。が、一々相対パスで実行するのは面倒ですね。

という訳で私は以下のような設定を.zshrcに書きました。

export PATH=$PATH:./node_modules/.bin

こう書くと各コマンド群がそのまま使えて便利です。

ちなみに、yarn global addとすると、端末のグローバル領域(プロジェクトに依らず、システム全体で共有されているモジュール置き場)にインストールされます。私はグローバル領域にはインストールしていませんが、もしそこにモジュールなどをインストールしているのであれば、以下のように書くべきでしょう。

export PATH=./node_modules/.bin:$PATH

PATHは上から探索するので、先に書いた方が優先されます。上記のように書くことで、各プロジェクト用の node_modulesを先に探索するようになります。便利ですね。

スクランナー

スクランナーというと耳覚えがない気がしますが、プログラムの更新を検知し、自動でwebサーバを再起動してくれるやつです。

古くはgulpgruntとかいうのがありましたが、最近はwebpackを使うのがイケているようです。

正確にはタスクランナーの役割をするのはwebpack-dev-serverというモジュールがやるのですが、デプロイの際にwebpackを利用する関係から、configを統一できるwebpack(とwebpack-dev-server)が便利に使われています。

先ほどインストールした yarn を使ってインストールします。 --dev を付けると自動的に開発環境用の依存関係(devDependencies)に入れてくれます。便利ですね。

$ yarn add --dev webpack webpack-dev-server

設定は webpack.config.js というファイルに書きます。ここでもJavaScriptファイルを書くのかと閉口してしまう気がしますが、これから沢山書くので気にせず書きましょう。

$ cat webpack.config.js
module.exports = {
  entry: {
    javascript: "./src/app.js",
  },
  output: {
    path: __dirname + "/build",
    filename: 'bundle.js',
  },
  module: {
    loaders: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/,
      },
    ],
  },
}

sourceディレクトリや出力先ディレクトリなどはよしなに設定してください。loaderに何か書いてありますがこれは後述します。

そしてよしなに設定を書いた後に

$ webpack-dev-server

とコマンドを打つと実行されます。これを実行したまま、別のウィンドウなどでソースコードを編集し保存すると自動で変更を検知してくれて大変便利です。

他にも、webpack-dev-serverでリロードしたら自動でブラウザをリロードしてくれるだとか、確認をすぐに行えるようになる設定やらモジュールやらもあるようです。

Lintツール

言語仕様の全てが完璧に頭に入っているなら不要ですが、私はそうではないのでLintツールを導入します。

JSLintという完全にそれっぽい物がありますがフェイクで、JSHintとかいう名前衝突避けしましたみたいな名前の物もフェイクで、現在の正解はESLintのようです。

$ yarn add --dev eslint

JavaScript他は言語仕様として書き方が決まっていないらしいので(よく調べてないので決まっていたらごめんなさい)、色んな団体が自分のLintルールを公開しています。よく分からないのですが、Airbnbが公開している物が良いとされているようなので、こちらを使いましょう。

$ yarn add --dev eslint-config-airbnb

このように書くと適用されるそうです。

$ cat .eslintrc
{
  "extends": "airbnb"
}

ちなみにこのパッケージ名にもなっているESECMA Scriptの略だそうです。よく分かりませんが新しそうな風格を見せているので使っておきましょう。

トランスパイラ

長くなってきましたがようやく最後です。

ESLintを使って新しい標準に準拠したコードを書く訳ですが、残念ながら世の中のブラウザは新しい標準を完全に動かせている訳ではないらしいです。 というわけで、同じ機能を実現する古い標準を満たしたコード(動作は同じものです)に変換する必要がある訳です。悲しいですね。

というわけで登場するのがトランスパイラという概念です。Babelというものを使います。

本来はbabelコマンドを使ってファイルを変換するのですが、これを一々手作業でやるのは面倒なのでwebpackさんに登場してもらいます。 先ほど掲載したwebpack.config.jsには以下のような記載がありました。

  module: {
    loaders: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/,
      },
    ],

これは*.jsというファイルに対してはbabel-loaderというものを使うような設定です。

babelに関しては実際に使うところまで行かなかったので細かいところは省略します。

終わりに

というわけで入門しようとしてみました。登場人物が多すぎるし、ここまでやってやっと実装環境が完成です。

よく聞くReactとかVueとかAngularとかはこの後に登場する概念です。しんどいですね。

ちなみにこのように入門したかったのですが、導入しようと思っていた案件毎消滅してしまいました。悲しいですね。

というわけで実践まではいきませんでしたがとりあえずやった事のメモとしておきます。完全に使っている訳ではないので、もし何か間違いなどありましたらご指摘ください。

それでは2018年のフロント業界が成熟した頃にまた会いましょう。

2017年春季アニメ総括メモ

もう2017年も半分を過ぎましたがいかがお過ごしでしょうか。

3ヶ月に1度、総括メモを見ていきましょう。

前回:

whywaita.hateblo.jp

結果

名前 放送時間 結果
銀の墓守り(ガーディアン) MX 4/1(土) 21:00 1話も見てない
進撃の巨人 Season 2 MX 4/1(土) 22:00 1期も見てない
グランブルーファンタジー ジ・アニメーション MX 4/1(土) 24:00 切った
デュエル・マスターズ テレビ東京 4/2(日) 8:30 切った
アリスと蔵六 MX 4/2(日) 22:30 途中まで見てたはず
つぐもも MX 4/2(日) 24:30 完走
僧侶と交わる色欲の夜に… MX 4/2(日) 25:00 完走
笑ゥせぇるすまんNEW MX 4/3(月) 23:00 途中まで見てたはず
フレームアームズ・ガール MX 4/3(月) 25:05 切った
アイドルタイムプリパラ テレビ東京 4/4(火) 17:55 1話も見てない
アイドルマスター シンデレラガールズ劇場 MX 4/4(火) 21:55 完走
ロクでなし魔術講師と禁忌教典(アカシックレコード) MX 4/4(火) 24:30 完走
王室教師ハイネ テレビ東京 4/4(火) 26:05 1話も見てない
BORUTO-ボルト- NARUTO NEXT GENERATIONS テレビ東京 4/5(水) 17:55 切った
ラブ米(ラブコメ)-WE LOVE RICE- MX 4/5(水) 22:45 完走
サクラダリセット MX 4/5(水) 23:30 途中まで見てたはず
武装少女マキャヴェリズム MX 4/5(水) 1:35 完走
サクラクエスト MX 4/5(水) 24:00 切りかけている
月がきれい MX 4/6(木) 24:00 1話も見てない
クロックワーク・プラネット TBS 4/6(木) 25:58 1話も見てない
恋愛暴君 テレビ東京 4/6(木) 26:35 完走
ひなこのーと MX 4/7(金) 25:00 完走
ツインエンジェルBREAK MX 4/7(金) 22:00 1期も見てない
正解するカド KADO: The Right Answer MX 4/7(金) 22:30 完走
神撃のバハムート VIRGIN SOUL TBS 4/7(金) 25:55 切った
ベルセルク 第2期 TBS 4/7(金) 26:25 1期も見てない
Re:CREATERS MX 4/8(土) 23:30 途中まで見てたはず
エロマンガ先生 MX 4/8(土) 24:30 完走
ID-0 MX 4/9(日) 23:00 切った
有頂天家族2 MX 4/9(日) 22:00 1期も見てない
ゼロから始める魔法の書 MX 4/10(月) 24:30 完走
覆面系ノイズ MX 4/11(火) 23:00 途中まで見てたはず
終末なにしてますか? 忙しいですか? 救ってもらっていいですか? MX 4/12(水) 25:05 途中まで見てたはず
冴えない彼女の育てかた♭ フジテレビ 4/13(木) 24:55 完走
ソード・オラトリア MX 4/14(金) 24:30 1話も見てない
アトム ザ・ビギニング NHK総合 4/15(土) 23:00 切った

詳細

正解するカド KADO: The Right Answer

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

日本一アニメなんておこがましすぎる。言うなれば異法一アニメとも言えるでしょう。

最終回の残り数分を見た瞬間に頭が狂うかと思いましたがなんとか生存できました。

今季間違いなく覇権です。

僧侶と交わる色欲の夜に…

今季からとんでもない枠が出てきてしまいました。COMIC ZIN枠です。

BPOに怒られるその日まで待ち続けましょう。ちなみにAT-XでもR15版しか見られないバケモノです。

スカートの中はケダモノでした をよろしくお願いします。

優勝。

アイドルマスター シンデレラガールズ劇場

これが優勝しなかったら何になるのか。

ロクでなし魔術講師と禁忌教典(アカシックレコード)

こういうの見とかないと落ち着かないんですけど久しぶりでしたね。

優勝。

ラブ米(ラブコメ)-WE LOVE RICE-

恐らくジャンルとしては石膏ボーイズとかその辺だと思うんですが、完成度を高めた上でCookpadにエンディングを使うとここまで化けるんですね。

優勝!

武装少女マキャヴェリズム

最近友人の影響で伊藤美来さんのロングトーンが気になるようになってきました。

優勝。

ひなこのーと

きららが無くなったらどうなるんでしょうね?

エロマンガ先生

完全に俺妹。優勝。

ゼロから始める魔法の書

魔法始めていけ。

冴えない彼女の育てかた♭

俺の直感も冴えなかった。

まとめ

COMIC ZIN枠というとんでもない存在が爆誕しました。今後も地上波に流せる事を期待しています。木魚はずるい。

以前私が述べたように日本一アニメは「濃厚なジャブ」と「最終回の強烈なアッパー」が必要です。正解するカドはこれを綺麗に決めていました。あまりにも強烈すぎて失神しかけましたがなんとか生き残れました。体力付けておいて正解でしたね。

いつも通り来季のリストを用意しておきましたので間に合う方はどうぞ。 2017年夏季アニメ録画リスト · GitHub

ではまた3ヶ月後に会いましょう。

ANiUTa所感

aniuta.co.jp

「定額アニソン聞き放題」を謳うサービスANiUTaを契約してしばらく経ったので所感をメモ。

何が聞けるのとかはレーベルとかそういう要素があるのでこちらをどうぞ。

筆者の環境

良い点

  • アニメ単位で検索できるの便利
    • アニメは知ってても知らない曲とかあるのが聞けるのが良い
  • オフィシャルプレイリストが便利
    • 著名なDJプレイリストとか
    • 「このプレイリスト作った奴絶対オタクやんな!?」とかある
  • ランキングもアニソンだけだし便利

悪い点

  • 全体的にシャッフル機能がない
  • マルチデバイスがない
    • スマホのみ
    • iOSAndroid 間での移動が不可?(未検証)
    • PCで聞きたい…
  • 個人のプレイリスト共有機能がない

まとめ

2000年代のアニメ曲はOPEDは知っていてもそれ以外のが聞けなかったりするので、しばらく契約してる気がする。ただ他に類似サービスが出来たらすぐ移動しそうだな…。

オープンソースカンファレンス 2017 Nagoya #oscnagoya と mikutter Nagoya 2017.5 #moguno に参加してきました

このようにアホに脅されたので、後輩2名を引き連れて行ってきました。

旅程

出発

新幹線は金銭的に大変厳しかったため、車が運転出来る後輩を雑に誘いました。

…と思ったら完全にミス。新東名を走っているとトラックが大量に止まっていて、事故かしらん?と思ってこちらも停止すると、そのまま4時間ほどそこでストップすることになりました。

まあどっかのSAやPAで寝る気だったので、別にどこで寝ても変わらないんですが…うん…心臓に悪い…

という訳で、なんと車でぶっ飛ばしたのに平均時速は50km/hに。下道かな?

朝飯は腹も減ったのでガッツリと餃子で〜

f:id:whywaita:20170527081223j:plain

OSC Nagoya

無事宿に付けたので、チェックインしつつ、そのまま会場に移動。

セミナーは以下を見てきました。

  • 東海道らぐ天下分け目のあひる焼きLT合戦@OSC2017名古屋の陣
  • mikutter Worldwide Developers Conference 2017 @ Nagoya
  • WebエンジニアのためのはじめてのRedis
  • MySQL開発最新動向 ~MySQL 8.0、MySQL InnoDB Clusterなどのご紹介~
  • 【3F:第2ファッション展示場】ライトニングトーク&閉会式

KapperさんのGPD-WINのセミナーには行きたかったのですが、少し遅れていったところ完全に混雑していて断念…。

東海道らぐでは始めてLT発表してきました。アテンドしてくださった皆様ありがとうございました。

www.slideshare.net

MySQLでは話題のClusterとかGroup Replicationについて思っていた疑問を中の人(Oracleの方)に聞けて満足。夢はもう少し先になりそうですね。

閉会式では、同行者の後輩2名をけしかけてLTしてもらいました。それなりにウケていたので良かった。OSCに行ったのに何も発表しないとか考えられませんもんね。

懇親会では高速に食事を消費する要員として活動した後は、LTでゲラゲラ笑う役としてゲラゲラ笑っていました。楽しかった。ビールも美味しかった。地ビール最高。

懇親会の後は同行者も眠そうだったのでそのまま宿に戻ってばたんきゅー。

mikutter Nagoyaだと思ったか?ばかめ!

喫茶マウンテンに行く用事があったので行ってきました。この時点で完全に遅刻。ヽ(‘ω’)ノ三ヽ(‘ω’)ノもうしわけねぇもうしわけねぇ

ピラフとコーヒーを頼んだところ、ピラフがドリンクセットである事が発覚し、しかもピンク色のドリンクが出てきて色彩が爆発。後ろのは有名な甘口抹茶小倉パスタです。

その後は普通に昼食用に色々注文。美味しかった…。

f:id:whywaita:20170528124317j:plain

mikutter Nagoya 2017.5

mikutter.connpass.com

という訳で2時間遅れで到着。

色々有意義な?話を聞けたんですが、mikutterのカンファレンスに行って特に参考になったのはopenSUSEの話とかよく分かんないな?

終わった後は飯会とかがあったのですが、我々は車で移動する必要があったためそのまま離脱。楽しかった〜。

ほったらかし温泉

インターネットで話題な、展望最高な温泉であるほったらかし温泉に行きました。ギリギリに行ったけどとりあえず間に合って良かった。

同行者が「エモ〜〜〜い」とか言いまくるので、私も途中でインプットされてしまい「エモいエモい」ばっかり言ってました。エモかった。

帰宅

そのまま中央道をかっ飛ばして到着。着いたのは0時過ぎており、そのまま疲れ果て寝ました。

費用

おかのさんのツイートでこういうのがありました。

残念ながら私のツイートに言及しているのは見つけられなかったのですが、とりあえず費用感として私の今回の旅費を公開しておきます。

※別にケチって行動した訳ではないので、どれが高いとか安いとかはないです。あくまで参考値。

  • ガス代: 7000円 (3人分)
  • 高速代 : 12000円 (3人分)
  • 朝に無事動いたので、SAで餃子定食 : 1000円
  • 昼食代: ココイチカレーヌードル: 216円
  • OSC懇親会(夕飯)代金: 2000円
  • OSC帰路でのタクシー代: 1000円 (3人分)
  • 喫茶マウンテン(昼食): 1700円
  • ほったらかし温泉: 800円
  • 夕飯(談合坂SA): 1000円

合計13382円ぐらい?新幹線で行くと往復2万円ほどかかることを考えると比較的安く行けました。

〜〜〜追記(2017/06/02 1:50)〜〜〜

宿代が抜けていたので加筆します。民泊使いましたがやはり3人とかそれ以上ぐらいで行くとかなり安いですねえ。

  • ガス代: 7000円 (3人分)
  • 高速代 : 12000円 (3人分)
  • 朝に無事動いたので、SAで餃子定食 : 1000円
  • 昼食代: ココイチカレーヌードル: 216円
  • 宿代: 10000円 (3人分)
  • OSC懇親会(夕飯)代金: 2000円
  • OSC帰路でのタクシー代: 1000円 (3人分)
  • 喫茶マウンテン(昼食): 1700円
  • ほったらかし温泉: 800円
  • 夕飯(談合坂SA): 1000円

合計16,000円ぐらい?新幹線で行くとそれだけで往復2万円ほどかかることを考えると比較的安く行けました。

〜〜〜追記ここまで〜〜〜

終わりに

2日間本当に楽しかった。いつものmikutterブースでわいわいするのも良かったし、しまだぁさんなど名古屋在住の方に改めてご挨拶出来たり、本当に良かったです。

また行きたいけど、流石にポンポン名古屋には行けないので、次は東京ですかね…。

そろそろ旬も過ぎたし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分ぐらいの登壇ならいつでもしますのでいつでもお声がけください。