この記事は、ニフティグループ Advent Calendar 2023 12日目の記事です。
ニフティのN1! Machine Learning Product Engineer 中村です。
最近はAmazon Bedrockを活用した生成AIをプロダクト実装することにハマってます。
NIFTY Tech Book #1を作りました
以前の投稿でもお知らせした通り、技術書典15および全社イベントのNIFTY Tech Day 2023で来場者特典として、NIFTY Tech Book #1を配布させていただきました。
技術書典では120冊が3時間ほどで頒布終了となり、終了後も「まだ配布していますか?」と伺っていただいた方も多くいらっしゃいました。(間に合わなかった方々、ごめんなさい!)
まだ電子版は購入可能になっていますので、まだご覧になっていない方はぜひこちらからご覧ください。
どうやって作ったのか?
というわけでNIFTY Tech Bookというものを作ったのですが、自分はこういった印刷物を作成したことが今まで一度もありませんでした。どういうふうに進めて、どういうことを考慮するべきなのか?ということを自分なりにまとめてみたいと思います。
なおニフティには技術広報という固有の肩書きは現在は存在しません。そのため、エンジニアリングを楽しもう・みんなで作ってみよう、という有志の会で成り立っています。
まず応募しよう
技術書典は半年に1度開催されている技術書同人誌イベントです。
その他にも最近では技術書同人誌博覧会というイベントも年に2回ほど開催されています。
これは持論ですが、人間は締め切りがないと基本的に動けません。自分も他社の合同技術本を見ながら、「こういう本が自分でも作れたらな〜」と思っていただけで、実際には何も行動していませんでした。良くないですね。
そこで今回は、技術書典15にえいやと応募してしまって、やるしかないという状況を自分で作ってしまって、そこからどんどん動き出していきました。締め切り駆動開発は偉大です。
人を集めよう
自分が作りたいなと思っていたのが、「みんなでわいわいと集まって作る合同本」だったので、やると決めたら人を集めていきます。
ニフティでは2ヶ月に1度ほどLT大会が開催されるのですが、LT大会に登壇し、最後に番宣をするという形で人を集めたり、直接声をかけたりして、参加者を募っていきます。
Slack上で少し反応してくれている人には「じゃあ書こうね」とか「〇〇の内容でどうよ?」と声をかけていき、最終的に8人の執筆者が集まりました。
幸運なことに表紙を描いてもらえることにもなったので、表紙のデザインや入稿時のデータ作成などを分担することもここでできました。
(Special Thanks to 表紙を描いてくれたムサシ)
内容について
一般的な合同技術本であれば、エンジニアリング周りのことだけを扱うのだと思います。しかし、編集長の自分自身が「Team Geek」だったり「アジャイル式健康改善ガイド」だったり「Cooking for Geek」だったりのマインド・健康・人間の暮らしのような本も好物にしているため、今回は技術に関連する内容であれば無制限として執筆者のみなさんには書いてもらいました。
あとで執筆者に聞くと、「何でも書いていいよ、と言われたので本当に自由に書いた」という意見をいくつかもらいました。結果的に本全体の内容バランスも良かったので、この方針は今回の執筆者には上手くはまったと思っています。
発売後に行われた技術書典のYouTubeでの紹介でも、「C言語でQRコードを書くという内容から、ランニングを続ける技術まで本当に幅広い」ということで特徴づけられていたので、自由に書いてもらって良かったなと思っています。
執筆しよう
執筆作業に入るわけですが、今回はRe:VIEWというツールを使わせていただきました。
Re:VIEWは裏側はTeXで動作する執筆ツールで、執筆内容なども含めて全てをGitHub上で管理する体制にしました。同時に執筆者のためのDiscordサーバも開設し、コミットがあるたびにDiscordに通知が飛んでくるようにして、互いに執筆しなければいけないという空気感を作ることに(多分)成功しました。
「作業が終わったらPRを出してレビューしてもらうこと!」としていたので、誰が執筆が完了したのかが認識でき、自分自身も校閲漏れがなく進められたので、もう一度本を作るとしてもRe:VIEWで作ると思います。
(素晴らしいツールを開発していただいている開発者およびコミュニティのみなさんありがとうございます)
校閲しよう
執筆者に執筆してもらい、全部の文章が集まったら、校閲作業が入ります。校閲作業が必要なので、印刷所の入稿ぎりぎりを締め切りにすると痛い目をみます。(今回は2週間前を締め切りとしていたので大丈夫でした)
有志で集まって書いているとはいえ、会社の名前で書いている書籍のため、会社のネガティブキャンペーンになりそうな内容については編集者としては許すわけにはいきません。
ということで校閲をするわけですが、120ページもある本文を校閲するのはなかなか骨が折れます。
エンジニアらしくこの作業を自動化できないんだろうか?と考え始めました。
AIは編集長の夢を見るか?
そこで、人知れずチャレンジしていたのがAIによる校閲作業です。実は私は本業は機械学習エンジニアなので、昨今のAIブームの流れには乗れているはずです。というわけで、大規模言語モデル(Amazon Bedrock, Claude2)を使って校閲をさせてみます。
・プロンプト
1 2 3 4 |
あなたは優秀な日本語の編集長です。これから入力する本文に対して、会社の評判を下げるような文章や、誤字脱字、内容の間違いがあれば、行番号とともに指摘してください。入力本文の最初を1行目とします。もし指摘事項がない場合には「指摘事項はありません」と返してください。 ### 出力例 line 1 : 「解凍」ではなく「解答」を使うべきです line 5 : 会社のネガティブキャンペーンになっている可能性があります |
・出力(全て)
1 |
指摘事項はありません |
・・・うまくいかない・・・。
というわけで、なぜかわかりませんがAIによる校閲は全くできませんでした。自分で人力で行ったほうが早いと判断して、2日ほどで黙々と校閲作業を行い、結果をGitHubにコミットして執筆者に見てもらうという作業を続けて、最終版に向けた校閲を行いました。
今でも生成AIはどんどん進化しており、次巻を作るときにはもっと優れたAIやプロンプトが生まれているのではないかという期待を持っています。次回こそAIによる校閲が成功すればいいなと思っています。
いざ、入稿!
校閲も済んだら入稿です。冒頭にも述べたように、自分には入稿の経験が全くないです。しかし、Re:VIEWを使って執筆している場合、設定を少し変更するだけで入稿用の本文データが生成できます。隠しノンブルなども完璧に入れてくれるため、これによって知識がない自分でも入稿を行うことができました。
そして、これは書籍の中にも書いているのですが、ここでトラブルがありました。
NIFTY Tech Bookは最初から左綴じを想像して作っており、入稿も左綴じでお願いをしました。しかし、自分の伝達ミスで、表紙データが右綴じを想定したデザインになっており、表紙を捲ると逆向きに始まってしまうという状態になっていました。
幸いなことに、印刷所の人が向きが逆なことに気づいてくださり、再入稿を行うことでトラブルを未然に防ぐことができました。印刷所の皆さん、その節はありがとうございました。
印刷所に入稿するという経験はなかなかないですが、印刷所の方々はプロなので、そこに上手く甘えつつ入稿に挑戦するというのがベストなように感じています。
技術書典の場合は直接持ってきてくれる!
あとは実際の本の完成を今か今かと待ちます。
技術書典の場合、バックアップ印刷所に指定されている印刷所(今回は日光企画さんにお願いしました)を使うと、オフライン開催の当日に、会場へ直接搬入されます。そのため、自分達も完成品を当日に初めて見ることになります。
技術書典15は11時開場ですが、10時に会場入りしたメンバーで「やっぱり紙の本はいいね」「実際に物になると嬉しいね」「この厚さを無料配布している企業はここしかない!」などなど、会場前から盛り上がっていました。
みんなも紙の本を書こう
そのような流れで今回技術書典に参加してきました。
最初は自分の思いつきから始まった今回のNIFTY Tech Book #1ですが、執筆をしてくれた有志のみなさんからは
「紙の本になって実物を見ると頑張って書いて良かったなと思った」
「実物が想像以上に厚くなってびっくりした」
「もう少しテーマを絞って、ニッチなテーマで有料にして売ってみたい」
「#2もあるならぜひ書きたい」「今回は準備してくれてありがとう」
という嬉しい言葉をたくさんもらいました。
最初は知らないことだらけなので大変なのですが、終わってみれば「案外大したことなかったな」と思いますし、何物にも変え難い達成感を感じられます。技術書典が終わった後の1人打ち上げは最高の気分でした。(そういえば執筆者打ち上げをしてないなとこの記事の執筆中に思い出しました)
この記事を読んでいるあなたにも、ぜひ本の執筆、できれば紙の本の印刷に挑戦してもらえれば、この体験記を書いた意味があるなと思います。みなさんの挑戦を応援しています。
NIFTY Tech Book #2も夢想中なので、ぜひ一緒に書いてくれる人を募集しています!
明日のニフティグループ Advent Calendar 2023は「12月だからp5.jsで雪を降らす」です。ビジュアルが見える系のプログラミングって面白いですよね。