2018/10/09(火)技術書典5で『ほぼPythonだけでサーバーレスアプリをつくろう』を頒布しました
昨日、池袋で行われた技術書典5にサークル参加しました。技術書典は秋葉原で行われた第1回から参加していますが、サークル側で参加したのは今回が初めてです。次回以降、初めてサークル参加される方の参考になることもあるかもしれませんので、簡単に振り返ってみたいと思います。
本のテーマ
去年の夏ごろ、joeくんと組んでいるプライベートプロジェクトのThunder Clawで同人誌を出したい、ということになりました。Python → へび → へびつかい座 → シャイナさん → サンダークローという経緯で名前が決まったサークルなので、題材にする言語はPythonで即決です。
ちょうどそのころ、ChaliceというAWS向けマイクロフレームワークのGA版がリリースされました。いいタイミングなので、このChaliceを題材にしようということになりました。フロントエンドはTranscryptというaltJSがあるらしく、使ってみると実用に耐えるレベルで変換してくれました。また、Java製のSeleniumラッパーであるSelenideのファンである我々は、ほぼ同インターフェイスを持つPython製のラッパーSeleneをテスト編で取り扱うことも決めました。
そして申し込んだコミックマーケット93は落選。そして、満を持して申し込んだ技術書典4にも落選。原稿そのものは少しずつ進めましたが、日が経つにつれて主要なテーマが少しずつ変化していきました。最終的に、技術書典5で出した本の大きなテーマは以下の3つです。
- Transcryptはいいぞ
- Seleneはいいぞ
- 実装とテストは開発の両輪である
乱暴な言い方をしてしまえば、サーバーレスはテーマを届ける手段であって執筆の目的ではなくなりました。というより、GA版からだいぶ時間が立ってしまったので、Chaliceを軸にすることができなくなった、とも言えます。
一方、Transcryptは相変わらずマイナーなパッケージで、まだこれをゴリ押しすることは可能だと判断しました。Seleneについても同様です。
Transcrypt怒涛のアップデート
会場が広くなって参加サークル数も増えた技術書典5には無事当選し、本を出せることになりました。前々から書き進めていたので、締め切りに苦しんだりすることはないだろう、そう思っていたのですが……。
Pythonもくもく自習室やPyCon JP 2018でもネタにしたのですが、8月29日時点でアルファ版だったTranscrypt3.7が、30日と31日に4回のリリースを行い、一気にRC版、GA版をリリースしました。
これが後方互換性を保つバージョンアップであればよかったのですが、生成されるJavaScriptファイルの形式がまったく別物になってしまったため、Transcryptについて取り扱った5章はほぼ丸ごと書き換える羽目になりました。また、テスト編についても、Seleneを扱った第10章で大きな打撃を受けました。
もちろん、原稿だけであればなんとかなったでしょう。しかし、私は9月18日にPyCon JP 2018でTranscyptについて発表する予定でした。こちらのダメージのほうが深刻で、スライドの3分の2は書き直し、それも動作検証から行わなければいけません。そのため、原稿自体が2週間ほど滞ることになりました。
結局、本が出せたことからもわかるように締め切りには間に合ったのですが、当初は20%オフの入稿も検討していながら、最終的には通常入稿の締め切りギリギリになってしまいました。
はじめてのオフセット印刷
私とjoeくんはコミックマーケット79にサークル参加したことがありますが、当時の本はコピー紙でしたし、実際の作業もほとんどおぎたさんに任せっきりでした。
今回はページ数も多いですし、ちゃんと印刷所に頼もうということになりましたが、ホームページを見てもイマイチよくわかりません。悩むくらいなら聞いてしまえということで、御茶ノ水の日光企画さんに相談に行きました。
「何も知らないので教えてください」というスタンスでいろいろ聞きましたが、1時間以上かけて親切丁寧に教えてくださいました。初めて印刷所に頼む方は、絶対に話を聞きに行ったほうがいいです。我々はプログラミングのことは詳しいかもしれませんが、印刷に関してはほとんどの人が素人なのですから。
また、先方も快く教えてくれます。事前にいろいろなことを明確にしておけば、我々の手間も省けますが、先方の無駄な作業を減らすことにも繋がります。遠慮してあとから迷惑をかけるくらいであれば、余裕があるうちにわからないことは明確にしておきましょう。
また、日光企画さんは当日も設営中に印刷物の不備がないか確認に来てくださって、とても安心感がありました。ありがとうございました。次回も日光企画さんのお世話になろうと思います。
当日の設営
これは言葉では難しいので写真を貼ります。
事前に準備したのは次のようなものでした。
- 松井稼頭央レプリカユニフォーム(ホーム)
- 松井稼頭央レプリカユニフォーム(ビジター)
- あの布
- 見本誌用イーゼル
- 見本誌用ブックカバー
- 見本誌用ラベル
- お手製ポスタースタンド
- 値札
- 値札ホルダー
- かんたん後払い用QRコード
- スケッチブック
- メモ帳
- 筆記用具
- 売上金を入れるホルダー
- ハサミ
- カッター
- ガムテープ
- らいにょん
ライオンズファン二人のサークルということで、先日引退を発表した稼頭央さんのユニフォームを着ました。先行のアプリエンジニアがビジター、後攻のQAエンジニアがホームです。
ポスタースタンドを机の上に置いたのは失敗だったかもしれません。落ち着いてきてからは、ポスターの後ろでお昼を食べたりできましたが、ピーク時に2人同時に前に出られなかったので、列をさばくスピードが少し落ちてしまいました。
なお、上の写真のどこかにらいにょんくんはいます。見つかりますか?
頒布冊数と被チェック数
13時ちょっと前に紙で用意した200部が完売しました。1分1冊よりも速いペースで売れ続けることは完全に想定外で、スペースまで来てくださったのに買えなかった方には申し訳ないです。
その後も17時の閉会まで電子版の頒布を続けましたが、売れたのは70部ほど。それまでのペースを考えれば半分どころのペースではありません。もちろん、序盤は人の多い時間帯だったということもあるのでしょうが、やはり紙の本を求める人が多かったということでしょう。紙はないのか、再版の予定はないか何度も聞かれましたし、そのたびに謝ることになってしまいました。
紙の在庫があればおそらく300部はさばけたでしょうし、400部刷ったとしても、完売は無理でも大惨事にはなっていなかったと思います。とはいえ、200部というのもかなり冒険したつもりだったので、これ以上刷るという選択肢はありませんでした。このあたりは経験を積んでいくしかないのでしょうね……。
最終的な被チェック数は231ということで、紙の本の部数よりも被チェック数が上回りました。被チェック数はあくまでも「チェックしてくれた」数なので、それだけの人が買ってくれるとは限りませんし、また、逆にそれだけの数があれば十分とも限りません。今回に関していえば、チェックしていないのに買ってくれた人が多かったのかなという印象です。
ただ、うちのサークルについては少し特殊な事情もありました。
まず、joeくんのブログ記事がバズったこと。もともとはわかめさんがブログ更新ツイートをリツイートしてくれたのが始まりだったんじゃないかと思っているのですが、それがはてぶのブックマーク数56につながり、スマートニュースからの流入もあったそうで、かなりの人に知ってもらうことができたと思っています。
また、joeくんがTest Engineers Meetupの登壇時、私がPyCon JP 2018の登壇時にそれぞれ冒頭に宣伝を挟み込みました。しかも、私の登壇はテーマがTranscryptなので興味を持ってもらいやすい状況でしたし、セッションの動画はYouTubeでも公開されています。私のセッションを聞いてきたという方も何人かいらっしゃったので、宣伝効果は高かったのではないかと思います。
もちろん、宣伝のために登壇するようでは本末転倒ですが、たまたまいい機会をいただけたのが頒布数にもつながったのではないかと思っています。
今後の予定と宣伝
コミックマーケット95に申し込んでいます。当選した場合は、合作ではなくjoeくんと私それぞれで薄い本を1冊ずつ出す予定です。さすがに140ページ級をほいほい出せるほど筆は軽くありませんので。
もちろん、来年春に行われるであろう技術書典6にも申し込むつもりです。こちらはまたアプリエンジニアとQAエンジニアという組み合わせならではの本が書ければいいなと思っています。
最後に一つ宣伝です。今回頒布した『ほぼPythonだけでサーバーレスアプリをつくろう』の電子版をBOOTHで販売しています。会場に来られなかった皆さん、来たけれどうちのスペースに気づかなかった皆さん、現地ではスルーしたけどやっぱり欲しくなった皆さん、もしよろしければどうぞ。よろしくお願いします。
ほぼPythonだけでサーバーレスアプリをつくろう - Thunder Claw - BOOTH(同人誌通販・ダウンロード)
2018/10/05(金)技術書典5にて『ほぼPythonだけでサーバーレスアプリをつくろう』を頒布します
10月8日(祝)に池袋サンシャインシティで行われる技術書典5にサークル参加します。
Thunder Clawは『ほぼPythonだけでサーバーレスアプリをつくろう』という本を頒布します。バックエンドをChalice、フロントエンドをTranscrypt、ユニットテストをpytest、UIテストをSeleneと、ほぼすべてのコードをPythonで記述します。第I部の実装編をアプリエンジニアの@7pairsが、第II部のテスト編をQAエンジニアの@joe_uragamiが執筆しました。
全144ページ、電子版のダウンロードカードとセットで1,000円で頒布します。ご興味のある方は「か09」でお会いしましょう。
今回が初めてのサークル参加なので、どう動くべきかわかっていない部分もあるのですが、開場からしばらくは二人揃ってブースにいる予定です。本の内容について聞きたいことがあればお気軽にお声がけください。
なお、埼玉西武ライオンズのビジターユニフォーム(紺)を着ているほうがアプリエンジニアの@7pairs、ホームユニフォーム(白)を着ているほうがQAエンジニアの@joe_uragamiです。先攻がアプリエンジニアで後攻がQAエンジニアです。
ただし、台風一過で暑くなる可能性もあるので、そのときはTシャツになっているかもしれません。その場合はPyCon JP 2018のスピーカーTシャツ(紺)を着ているほうが@7pairs、一般参加者Tシャツ(黄)を着ているほうが@joe_uragamiです。
2018/09/10(月)技術書典5にサークル参加します
技術書典5のサイトが一般公開され、私達のサークルの情報も公開されました。
https://techbookfest.org/event/tbf05/circle/55000003
現在鋭意執筆中ですが、本の内容はほぼ確定していますので、ご興味のある方は「か09」にぜひお越しください。
私は9月18日のPyCon JPで発表するということもあり、今週が色々な意味で山場なのですが、発表もこの本もいいものにできるように全力を尽くしますので、どうぞよろしくお願いいたします。
ちなみに、よりによって8月31日にTranscryptに大幅な変更が入りやがった影響で、PyCon JPの発表、およびこの本の原稿に多大なダメージを受けました。現在必死にリカバリー中ですw
2018/09/06(木)技術書典5で『ほぼPythonだけでサーバーレスアプリをつくろう』を頒布します
Thunder Clawは技術書典5にサークル参加します。スペース「か09」にて『ほぼPythonだけでサーバーレスアプリをつくろう』という本を頒布する予定です。
タイトルにあるように、この本ではほぼPythonだけでサーバーレスアプリをつくります。「つくる」というのは実装して終わりではなく、テストコードの作成まで含めてのことです。ChaliceというAWSマイクロフレームワークでバックエンドを実装し、TranscryptというPython→JavaScriptのトランスパイラでフロントエンドを実装し、pytestというテストフレームワークでユニットテストを実装し、SeleneというSeleniumラッパーでUIテストを実装します。これらはすべてPythonのパッケージです。
第I部「実装編」はアプリエンジニアの私が、第II部「テスト編」はQAエンジニアの@joe_uragamiが執筆を担当しました。このようにプロジェクトを横断した形で書かれた本というのはなかなかないと思いますので、その点も楽しんでいただければと思います。
また、今回はジョン湿地王先生に表紙のイラストを描いていただきました。ありがとうございました。実は我々は技術書典4に落選しており、先生にはそれに間に合うように発注をしていたので、3月には手元にイラストが手元にある状態でした。執筆に疲れたときにはイラストを眺めて英気を養ったものです。ある意味ではイラスト駆動執筆ですねw
現在最後の追い込み中で流動的な部分もありますが、ページ数は130ページ前後を予定しています。140ページを超えると入稿の締め切りが早まるので、そのラインは超えないはずですw また、こちらもまだ確定ではありませんが、頒布価格は紙と電子のセットで1000円を考えています。
最後に、まだ仮ではありますが、目次を載せておきますので、興味を持たれた方は当日足をお運びください。なお、執筆途中で著者たちの病気が出てしまったため、第I部はニンジャスレイヤー、第II部はポプテピピックのネタが時折挟まれますが、その点はご容赦いただければ幸いです。
目次
- 第I部 実装編
- 第1章 Pythonで実装をしよう
- 第2章 開発環境の構築をしよう
- 第3章 ChaliceでWeb APIの実装をしよう
- 第4章 boto3でデータの永続化をしよう
- 第5章 Transcryptで画面の実装をしよう
- 第6章 Pipenvでリリースを簡単にしよう
- 第II部 テスト編
- 第7章 Pythonでテストをしよう
- 第8章 pytestでユニットテストをしよう
- 第9章 pytestでAPIテストをしよう
- 第10章 SeleneでUIテストをしよう
- 第11章 手動テストは……流石に手でやろう
- 第12章 CI/CDでテストを実施しよう