nikkie-ftnextの日記

イベントレポートや読書メモを発信

告知 | 12/14 #技書博 2にて、argparseを使ってPythonでコマンドラインツールを作る方法について同人誌を頒布します(2F-か01)

はじめに

頑張れば、何かがあるって、信じてる。nikkieです。
12月の技書博2で、Pythonコマンドラインツール作成についての薄い本(=同人誌)を頒布します。
現時点の目次や頒布に関する情報をまとめます(随時更新予定)

技書博については公式サイトを参照ください:

f:id:nikkie-ftnext:20191117024909p:plain

企画

  • サークル名:Everlasting Diary
  • サークルページ:https://gishohaku.dev/gishohaku2/circles/nklmjjWPhfT6oVdq4Upa
  • 当日の配置:2F-か01
  • 対象者:Python入門者、Python中級者になりたての方
  • タイトル:未定(仮称:argparse本)
  • ページ数:30Pくらいを予定(※増減ありえます)
  • 頒布価格:気軽に買える価格にしたい(※収支考慮の上決定します)
  • 頒布形態:物理本 / 電子本 両対応

構成(案)

Pythonの入門書やレシピブックでPythonスクリプトを動かすことは扱うと思っています。
Pythonスクリプトに引数を渡せるようになれば、Pythonを始めた方のできることが広がる!」と考えたのが、今回のアウトプットのきっかけです。

3部構成

  1. 入門編
    • Python入門者向けのパート。本編に接続するために用意
    • argparseを初めて聞いたという人を想定
    • Django Girls Tutorialの関数1を出発点とする
    • sys.argvを使ってスクリプトに引数を渡す方法を紹介
    • argparse導入:ヘルプメッセージが手に入る
    • コマンドラインツールの位置引数の紹介
    • コマンドラインツールのoptional引数の紹介
    • add_argumentの引数helpやaction、choicesについて
    • 書くにあたってはArgparse チュートリアルに準じるようにする
  2. 本編
    • argparseでコマンドラインツールを作る過程を実例から学ぶパート
    • Pythonコマンドラインツールを作ったことがあるが、argparseは使わなかった(または理解せずに使った)人を想定
    • 題材は"退Py"の17章にある画像縮小のコード2
    • 出発点:指定の画像ファイルの縮小(os.pathでなくpathlib使う)
    • フォルダを指定し、中の画像をすべて縮小できるようにもする
    • mvコマンドにならったコマンドにする
    • type引数に関数をセットする(存在するパスかのチェック目的)
  3. 発展編
    • 私が仕事でPythonを書く中でインプットした知識をアウトプットして整理するためのパート
    • 過去の私に向けて、「このあたりを知っておくと実務で役立つよ」と伝えたい項目を用意
    • イデアを以下に書き出しておく(全部拾いたいが時間と相談)
    • unittestを書く
    • クラスを使って書く
      • ファクトリという考え方
      • singledispatch
    • パッケージ化する

連絡事項

事前に共有した内容からの変更について

9月のみんなのPython勉強会LT『行くぜ、行こうぜ、技書博』で

  • Pythonの環境構築図鑑を執筆予定
  • Python合同誌も企画中

と共有しましたが、これらを変更しました。

環境構築図鑑からargparse本にテーマを変えた理由ですが、環境構築とは別に、Pythonでなにか実装するということを扱いたいと強く思ったからです。
Django Girlsに関わる中で環境構築の問題に気づき、9月のPyCon JP 2019で15分発表しました。
この続編として環境構築図鑑と考えていましたが、PyCon JPを終え、台湾、シンガポールと世界に飛び出して、Pythonのコードを書いた上でアウトプットをしたいというモチベーションが湧き上がってきました。
環境構築図鑑ではPythonのコードをあまり書かないでしょうが、argparse本にすることでPythonをガッツリ書くことができます。
PyCon JPスタッフなどでプライベートでPythonを書く時間が減っていたこともあり、「書きたいものを書く」という信念で、今回はargparseについて書きます。
環境構築図鑑3は今後のアウトプットの機会と自分のモチベーションと相談して実現を考えます。

Python合同誌は、技書博2では見送ります。
合同誌自体を諦めたわけではなく、今後のアウトプットの機会はあると思うので、今回1人で出すという実績を作った上で、機会を狙っていきます。

委託してもらって大丈夫です

Python関係の自分の本を置いてほしい(委託したい)という方がいれば、Twitter DMなどでご連絡ください。
置ける数に限りはあると思いますが、対応します。
これは、技術同人誌即売イベントでPythonカテゴリが盛り上がって欲しいと思っているがゆえの提案です。

おわりに

初のサークル主ということで至らない点は多いかと思います。
「こういう情報が知りたい」という声はTwitter質問箱からお聞かせいただけると嬉しいです。
また、進捗などはTwitterでお伝えしていきます。

当日に本がお渡しできるよう、強行日程ではありますが、執筆に取り組んでいきます!

f:id:nikkie-ftnext:20191117024926p:plain


  1. Python入門 · Django Girls Tutorialhi関数を想定。入門編は余裕と思ってもらえるように単純な例を使う

  2. 英語にて Automate the Boring Stuff with Python で確認できます。また、日本語書籍が『退屈なことはPythonにやらせよう』です。

  3. 4月のみんなのPython勉強会で共有した「環境構築方法(python.orgかAnacondaか)に応じて、参照する情報を読み替えよう」という提案を具体例を元に説明するとして考えていました。「伝え切れていないな」という感触があったためです。