チュートリアル振り返りインタビュー【Slack Bot編】
みなさん、こんにちは。
PyCon JP 2020チュートリアルSlack Bot編担当のあっきーです。皆さんはもうチュートリアルの動画を視聴されましたか?今回のチュートリアルの作成にご協力頂いた3名の方に、チュートリアルの見どころや苦労したところなどをインタビューさせて頂きました(*^▽^*)
既に視聴頂いた方も、これから視聴頂く方も、また別の視点で楽しめる内容となっていると思いますので、こちらの記事もぜひ一読ください。
チュートリアルの概要はこちら(リンク)
PyCon JP 2020 Tutorial
チュートリアルで使用したドキュメントはこちら(リンク)
PyCon JP 2020 チュートリアル Pythonの開発エコシステムを学ぼう Slack Bot編 ドキュメント
当日のアーカイブはこちら(リンク)
PyCon JP 2020 Tutorial Slack Bot編
インタビュー内容
Q. はじめに自己紹介をお願いします
佐野さん
佐野と申します。自動車機械部品設計事務所でインフラエンジニアやソフトウェア開発をしています。また、米農家もしてます。Python駿河、Unagi.py、PyCon mini Shizuokaの運営をしております。
中西さん
中西と申します。Unagi.pyと機械学習浜名湖というグループの共同運営をしており、PyCon mini Shizuokaでも実行委員を務めさせていただきました。
中井さん
中井と申します。Python駿河、Unagi.py、PyCon mini Shizuokaの運営をしてます。PyCon JPは今回が初めての参加です。
Q. 今回のチュートリアルのコンセプトがあれば教えて下さい
佐野さんタイトルが「Pythonの開発エコシステムを学ぼう Slack Bot編」となっていることからわかる通り、Pythonの開発における技術要素を幅広く扱っています。ターゲットとしては初学者の方をメインに考えていました。
初学者の時はそもそも開発の流れを理解することが難しいと感じています。例えば開発環境のデファクトスタンダードは何か、そもそもどのような流れで開発をすればいいのか。こういったことは調べれば検索できますが、断片的な結果でしか検索できないことが多く、開発エコシステムを理解するのはなかなか大変だと思っています。
今回のチュートリアルを通して、「開発環境の整備」、「開発する」、「テストコードを書く」、「ドキュメントを作成する」この一連の開発エコシステムを学ぶことができると思っております。
Q. 今回のチュートリアルのこだわりポイントを教えて下さい
佐野さん
自分だったらこうするだろうな、このツールを使うだろうな、という自分の中でのベストプラクティスをまとめました。また、基礎的な内容に加えて最新のツールの内容も積極的に説明の中に含めています。
中西さん
開発の部分だけではなくエコシステムを網羅できている部分が良かったと思っています。コードを書く部分と同じくらい、テストを書く部分、ドキュメントを作成する部分に時間を割いています。
中井さん
今回のチュートリアルは、開発エコシステムを学ぶという壮大な目標を掲げていますが、一方で、Slack Bot の作成と運用を体験してもらうことで、実用的な成果物も取得できるようになっています。
佐野さん
どのようなアプリケーションを作るのかを考えた際に、最新のトレンドのチャットツールの内容を入れたいという思いがありました。エコシステムだけだと地味な印象なので、キャッチーな要素を入れることで、身近な内容でエコシステムを学ぶことができるコンテンツになったのではと思っています。
Q. 開発環境の説明、bot作成、テストを書く、ドキュメントを書く、という流れに何か意図はありますか?
佐野さん今回は初学者の方をターゲットにしたので、例えばTDD(テスト駆動開発)の様にテストから書き始める、ということは考えていませんでした。まず要件定義を実施して、要件に合うように開発をする。今後の変更に耐えることができるためテストコードを作り、ドキュメントも作成する、という流れの方が初学者は理解しやすいと思っていました。
中西さん確かに、初学者の方にいきなりテストから入るのはなかなか難易度が高いかもしれないですね。
Q. そういえば、画面内に文字起こしが表示されていましたが、何か意図があるのでしょうか?
佐野さん
個人的な動機で実施してみたかったので、表示してました。以前、シビックテックのイベント「Code for Japan Summit」に去年参加した際に、すべてのセッションでトークの文字起こしがされていたのを見て、自分も試してみようと思いました。そのイベントではアクセシビリティに非常に配慮された内容のカンファレンスでした。
世の中には様々な人がいるので、今回のチュートリアルの音声をライブで聞くことができない人もいるかもしれない。そのような方に機会損失をしてほしくない、という思いで実験的に導入してみました。
Q. テストコードを書く、ドキュメントを作成する、という内容を含められた思いについてお聞きしたいです
佐野さん
テストコードを書く、ドキュメントを作成するということは業務でプログラムを作成する場合に絶対に必要になる知識だと思っています。テストは品質を保証する手段として、ドキュメントはプログラムの仕様書としての役割があると思っています。テストコードの役割としては、既存のコードを修正する際に、既存の振る舞いを破壊していないかを確認するために必要だと思います。
テストやドキュメントを書いておくのは半年後の自分のために絶対に必要だと思っています。自分も何度も助けられたので、ぜひ体験してほしかったです。また、普段からも意識してほしいと思ったので内容に入れました。
中西さん
後から見返して困ることはいっぱいありますよね。
誰もが一度は経験していることだと思います。
中井さん
テストコードを書く、ドキュメントを書くのは必要だと思いますが、佐野さんの中でのベストプラクティスを教えてもらえるのは非常に良かったと思っています。特にドキュメントの自動生成は本当に便利だと思いました。
佐野さん
テストコードを書く、ドキュメントを書くという作業は現在ではなく、未来に対してどうするのかという行為。実施することに絶対に意味はあると思っています。
Q. 普段Markdownを書くことが多いのですが、reStructuredTextのメリットなどあれば教えてほしいです
佐野さん
Markdownは方言がありそれぞれの方言で書き方が変わったりすることがありますよね。reStructuredTextの場合は方言がないため、書き方に揺れが起きることがないです。また、Markdownと違い豊富な機能があります。sphinxの場合は、モジュールを使うことでさらに便利に使うことができます。
中西さん
構造化されたドキュメントを生成する場合は、reStructuredTextの方が書きやすいと思っています。Markdownは例えばA4サイズ1枚の文書の場合等は便利だと思いますが、複数ページになるような文書の場合はMarkdownだと厳しいと思います。
中井さん
私も同じ認識です。Markdownは1画面で収まるような文書の場合に適していると思います。reStructuredTextはどちらかというと複数ページに渡る文書に適した構文がそろっている印象です。
Pythonのドキュメントを作成する場合に、reStructuredText+sphinxの組み合わせが適していると思っていますし、本当に便利です。autodoc拡張機能を使うと自動でドキュメントを作成する部分が本当に便利で、参加者に実感してほしかったです。
Q. 時間的制約で今回の内容には入れられなかったが、本当は入れたかった、という要素があれば教えてください
佐野さん
今回のチュートリアルのSlack BotはあまりインタラクティブなBotにはなっていません。コマンドを実行すると答えが返ってくるというシンプルな内容でした。実はBotをもっとインタラクティブにすることもできます。現在(インタビュー時点)ではアルファリリースですが、Bolt for Pythonを使うとBotとのインタラクティブなやり取りが簡単に実現できますし、Block Kitを使うとボタンを配置することもできます。もっとリッチなBotにすることもできたのですが、時間的に今回は説明を断念しました。
中井さん
今後の勉強会でぜひ共有してほしいですね。
Q. 最後に一言お願いします
中西さん
長丁場本当にありがとうございました。オフラインでも開催できることを楽しみにしてます。
中井さん
ご参加頂いた方7時間本当に大変だったと思います。最後までついてきて頂き本当にありがとうございました。「出来たよ」というコメント本当にうれしかったです。
佐野さん
PyCon JP 2020の1コンテンツとして参加できてよかったです。自分としても意義のある内容だったと思っています。これからもコミュニティ活動頑張っていきます。