July Tech Festa 2021 winterに登壇しました

2回連続3回目の登壇でした。発表でも軽く言及しましたが、3回のテーマがバラバラであることでお馴染みです。

スライドとか動画とか

何を話したか

sphinx-revealjs のアピールを、「Sphinxの概要」「Sphinxでもプレゼンテーション」を土台にして話しました。

もうちょっと真面目に

枕として「Sphinxが担う役割と活躍シーン」話した後に、 その枠組みに載ることで「HTMLプレゼンテーションをどう組み立てるか」の概論と、 その概論をもとに sphinx-revealjs の概要・モチベーションなどを話していました。 今回、技術深めの話はほとんど行わず、概論にとどまっているのが普段とちょっと違う感じです。 1

自分はOSS活動のうち、そこそこの割合をこういったプラグイン開発に使っていることが多いです。 2 これは、発表時にもSphinxの面として触れているのですが、 「プラグインの存在」を前提としたある程度以上息の長いライブラリは、

  • コアが安定的な作りをしている

  • アプリケーションとしてのI/Oインターフェースが明示的に定義されている

  • これらがある程度きちんとドキュメント化されている

といった理由から、「このライブラリに自分が欲しい+α」を実現するのが比較的容易だったりします。 sphinx-revealjs に関しても、発表の通りでreSTのパース自体は基本的にほとんど弄っておらず、 出力の部分だけ新しく実装した感じになっています。

なおこのパターンで開発するそのOSSは、領域の積集合になるために、 まず間違いなくニッチ = 利用者は自分だけ という状況になりがちです。 そんな中でも、国内外で使ってみてくれた方や「こんなこと出来ない?」とIssueを上げてくれた方が出てくれたのは、 自分にとっても非常に有意義なイベントでした。

使ってくれてる方に感謝するのもですが、 当時「sphinx + revealjsのライブラリを作ってみよう」と思った自分を褒めたいです。

他のSphinx拡張を使うときの話

今回は追加で次の3個の拡張を使用しています。

  • sphinxcontrib.blockdiag : blockdiag形式の画像を埋め込める

  • sphinxcontrib.gtagjs : gtag.jsを埋め込める(自作)

  • sphinxemoji : replace定義に大量の絵文字を登録する

sphinx-revealjs の主な役割は「パース済みdoctreeの出力時に、特定の要素に限って出力内容を通常のHTML系とは別の挙動をさせる」ものです。 そのため、そのルールに干渉しないような「別のディレクティブを登録して普通に使う」「bodyとは無関係なことをする」ような拡張はそのまま使えます。

ツイート拾ってレスポンス

質問ツイートっぽいのはそこまでなかったので、自分がリアクションできそうなものをピックアップしてみます。

その1

IT系の会社で、自社の考え方(方向性・規則などで公開可能なもの)をGitHubで管理+公開しているところをたまに見かけますよね。 この辺は「HEADを最新版として安定的に参照可能」「いつ、どんな理由で変化したかの追跡が可能」とそれなりに良いことがあるので、 出来る範囲で積極採用できれば良いなぁとは考えたりしてます。

その2

発表後にその場で聞かれた質問ツイートと、ひねり出した回答をまとめてくれたやつです。

もうちょっと後追いで考えてみたんですが、もうちょっと絞って「HTMLプレゼンテーションが標準の世界線」があったとしたら、 meta タグや link タグなどを通じて多くの発表資料が互いにリレーションを持って、 よりハイパーテキストとしての要素が濃くなるのかなとも思いました。

...あれ、その世界線には今みたいなWeb上にリッチコンテンツが出回らないかも?

その3

GitPitchと関連するツイート。

確か、 sphinx-revealjs 開発最初期の頃にGitPitchのことは見た気がするんですよね。 ちょうどその頃、業務でもPythonを使うウェイトが高い時期だったのもあって、 ドキュメントをreSTで書くケースが多く、「reSTをそのままスライドにする」欲が高かったような記憶があります。

結果として、ちゃんと生きたOSSとして今もこのコードを書けているので、結果オーライなんじゃないかなと。

For 運営雑感

JTFには昨年もお世話になったのですが、今回はブログに落とし込む余裕があったので、 登壇者(一部時間視聴者)目線での雑感を簡単にまとめてみようと思います。

リハーサル

事前に「Zoom自体のテスト」などを目的としたリハーサルを実施してもらっています。

そこそこの時間を取ってもらって1on1で

  • ボリューム周り

  • 表示のされ方

  • 当日の流れ

などを結構細かく確認してもらっててて、このあたりは非常にありがたかったです。 3

Ask the speaker

オフラインイベントと同様に、Ask the speakerが用意されています。 登壇者は発表後にATS用のルームにしばらくいる感じになります。 4 5

あったほうが良いのは間違いなさそうなのですが、オフラインイベントと比較すると難しそうですね。

「その場で聞きにいけること」の意義はたしかに大きいのですが、

  • 配信には席数制限が実質無いため、シンプルに発表に流れがち

  • 「オンラインにいる=後でオンラインで聞ける」で、その場で聞くインセンティブが若干低い

  • 利用サービス次第では「話しかけに行けるのか」が分かりづらい

あたりに課題感があるのかな?と思いました。

まとめ

CfP応募のきっかけになったのは、前回登壇者向けの案内が来たことでした。 「『推しテク総選挙』ってテーマなら、これは被りにくそう」 「期間の積み重ね的に登壇資料にはできそう」 と思ってたら採択されました。

とはいえ、ちょっと油断しててアウトラインしか用意してなかったので、 採択通知が来たときはちょっと焦りましたが。

幸い形としてまとめることは出来てちゃんと発表として完走できたのは良かったです。 2021年の個人Tech活動としてはいいスタートを切れたと思います。

脚注

1

この辺はCfPの時点で可能性はあったのですが、スライドを書いている過程であからさまにコードのないスライドになりました

2

他だと、一時期ErrBotのプラグインをポツポツ書いている時期がありました

3

環境がちょっと特殊なのもあって、非常に助かります

4

今回はZoomのブレイクアウトルーム機能が使われました

5

なお、一人だけ来てもらいました