ばんくしさんは「誰かの理解の助けになろう」として“苦労ベース”の技術ブログを書く【エンジニアのブログ探訪】

「エンジニアのブログ探訪」第2回

はてなブログで技術に関するブログを書いている方に、“ブログを書き続けること”について教えていただく企画「エンジニアのブログ探訪」。第2回は河合俊典(ばんくし)さんid:vaaaaaanquishに登場いただきました。

河合さんは大学在学中の2013年にブログを開設し、これまでさまざまな技術や多くの技術書に関する記事を発信し続けています。

どのようにして記事の題材を考えるのか、そしてそれらの記事は河合さんにとってどんな形で役立っているのか──河合さんと技術ブログの関わり方を、テキストインタビューで伺いました。

f:id:toya:20210212144752p:plain

河合さんの技術ブログ「Stimulator

──ブログを始めたきっかけについて教えてください。

既に技術ブログを書いていた方々とGive and Takeの関係になりたい、と感じたのがきっかけです。

今でこそさまざまな媒体で多くのソフトウェアエンジニアが技術ブログを書いていますが、私が高専(高等専門学校)から大学に入った頃は、まだ技術ブログを書いている人は少数派でした。

特に私が大学に入った目的は「機械学習に関する研究活動がしたい」だったので、体系的に文書化されていないような新しい情報を求めていたのですが、機械学習についての最新情報をブログで活発に発信しているような人となると、本当に数えられるほどだったんです。

そんな中で技術ブログは本当に助け舟のような存在でした。論文上にない考察や関連情報をテキストで得られますし、学会や研究室以外で新しい論文の所感を見聞きできる数少ない機会として重宝していました。毎年実施される機械学習をテーマとしたアドベントカレンダーは、期間中は毎日欠かさず見ていましたね。

ソフトウェアエンジニアとして良いコードを見て「こんなコードが書けるようになりたい!」と思ったり、研究者として他人の論文から刺激を受け、着想を得ていったりするのと同じ感覚で、「このブログを書いている人たちともGive and Takeの関係でありたい」と思うようになっていました。

つまるところ、憧れる相手と対等に刺激し合う状態を求める気持ちで、Giveとしてブログを書き始めた、というのが答えなのですが、私の中では今でも継続できているパワーの根源でもあると思っています。

──ブログにはどのようなことを書いていますか?

私は「自分が苦労したこと」または「自分が知ってもらいたいこと」を書いています

まず、「自分が苦労したこと」は、先述の原体験から来ています。

私自身が難しい問題の解決策をブログで得ていたので、私も以下のような、自分が「簡単に解決する、知るのが難しかった」ことベースで書いて、誰かの理解の助けになろう、Giverになろうという形です。

  • ある問題に対して体系的に方法論を知るのは苦労するだろう
  • この論文は読み解くのに苦労した
  • この学会に行くのはそれなりに苦労が必要する
  • このライブラリのビルドは絶対に苦労する人がいるだろう

もう1つは「自分が知ってもらいたいこと」ですが、これはSNSを意識した、「○○を作ってみた」「○○が良かった」といった内容の記事です。少し文章を柔らかくして多くの人の目に触れ、コメントしてもらうために書いています。

特に最近では読まれる記事は勢い良く一気に読まれるので、多くのフィードバックがもらいやすくなっています。「実は別の方法で解決できるよ」「こうした方が良いよ」「こっちの書籍、ライブラリが良いよ」などの寄せられたコメントから、実際に記事をリライトしたり、さらに追加で書籍を読んだり、OSSにPR(Pull Request)を出したりと、多くの刺激を得るきっかけになっています。

こういった技術ブログの書き方や内容の選び方は、大学の研究室の先輩で院生の頃のアルバイト時代の上司でもある@kazoo04の影響が大きいです。

@kazoo04のブログは、必ず参考文献や脚注を書く、技術に関して客観的、平等を意識した文章と主観的な文章を明示的に分けて書くといったことを徹底していると思います。

もちろん最初はそれを見よう見まねで書いたり、@kazoo04がTwitterで「脚注を書け」と口うるさく言っているのを見て意識してみたりする程度だったのですが、継続してみると、文体だけでなく筆者も読者も技術的に深く知識を得るための工夫であることが分かってきます。

実はどれも「自分が何故苦労したのか」「その苦労を分解するとどうなるか」「それらを分かりやすく伝えるためにはどう書くか」というところにつながっています。「自分が苦労したこと」「自分が知ってもらいたいこと」それぞれの文体の変え方も、脚注や客観視などの量の調整だなとよく思っています。

他にも企業の技術ブログでは、Preferred Networks(PFN)R&Dブログも参考にしています。機械学習の業界内でもトップレベルの密度と内容、深さ、スパンで記事が出る、という点もすごいのですが、ある程度参考文献に任せつつ読者に分かりやすい表現をしていて、ブログという立ち位置をうまく使っていると感じています。

ダラダラ長く書いても分かりにくくなりますが、短すぎても価値の薄い記事になるだけなので、バランスの良いブログからは学ぶところが多いです。私も会社の技術ブログを書くことがあるので、かくありたいと思います。

──ブログを書き続けてきた中で、苦労したことはありますか?

苦労ベースで書いているので、苦労しかないです(笑)。

先の回答の通り、苦労ベース、知ってもらいたいことベースなので、アイデアのストックが常にあるわけではない状態です。やりたいことはたくさんあるんですが、苦労するかどうかは別なので、情報のアンテナを張って毎週書けと言われたら私は続かないと思います。自分で主催するAdvent Calendarは結構苦痛だったりもしますが、ワイワイするのが好きなので、つい登録してしまって後悔することもあります(笑)。

どうしてもネタがない時は「最近難しそうと感じていること」にチャレンジして、苦労を生み出すことはあります。積読している難しい本を重い腰を上げて開いてみるとか、最近ではWebAssemblyのように普段触らないであろう技術に挑戦するだとかですね。しんどいですが、技術的な学びが多いのでプラスマイナスゼロだと思いたいです

vaaaaaanquish.hatenablog.com


苦労ベースの欠点はもう1つあって、めちゃくちゃ苦労して結果が出ても、いざ執筆して記事が出来上がると内容がペラペラになっていることです。プログラミングにおいては「数日苦労して動かした10行のコード」が存在するからですね。

私は内容の肉付けのためにも、実行したコマンド、失敗したコード、本当に1行でも参考にした記事は全部テキストで保存しています。一見大変な作業に思えますが、実際一度参考にしたものやコマンドは再度使うことが多いので、効率も少しばかり良くなります。私はそれ専用のSlackチャンネルを作って投稿していくだけです。後から検索できますし、見返さなければ流れて行くだけなので、重宝しています。

f:id:toya:20210212151720p:plain
実際のSlackでのチャンネルの様子

あと、苦労というほどでもないのですが、自分なりに良い記事だと思っても刺さりそうな人に刺さらない、バズらないという時は「なぜなんだ……」とはなりますね(笑)。でも「苦労ベース」なので、長期的に考えれば、いつか苦労して見てくれる人がいるだろうということでそこは諦めています。

──技術ブログを書いていて良かったことは何ですか?

一番大きいのは、技術書のレビュー記事の依頼が来るようになったことですね。先の「必ず参考文献や脚注を書く、技術に関して客観的、平等を意識した文章と主観的な文章を明示的に分けて書くようになった」辺りを意識しているからだと思いたいんですが、フォロワーが多く、読んでもらいやすいからかもしれません(笑)。

もちろん書籍は安くはないので、献本という形でいただけることもうれしいことの1つではありますが、私にとっては「苦労が向こうからやってくる」のがうれしいです。レビューするには、本を読み切らなければなりませんし、参考文献やGitHubコードが添付されていればそちらも把握しておく必要があるので、かなり大変です。普段自分が業務や趣味で触っている範囲の内容だけが書いてあるとは限らないので、受動的に新しい学びの機会を得られているなと感じています。

苦労しつつも技術的な学びを得て、それらをブログで公開して、その結果読まれて、さらにレビュー依頼が来るのというのは私にとっては好ましいサイクルだなと感じています。

こういったサイクルを継続していった結果、最近では自分が担当する企業の技術ブログのレビューでも、伝わりやすい書き方や、抜けていそうな文献、脚注の補填の指摘などについて良い指摘ができるようになったと思っていて、それも良かったことの1つですね。

企業の技術ブログを執筆するソフトウェアエンジニアが多くなってきた昨今では特に、書いたエンジニアが「良いレビューをして良い文章になったこと」「その文章が多くの人に読まれたこと」について喜んでいると私もうれしく思います。

──執筆時の様子について教えてください。

夜中に記事を書くことが多いです。大体12時手前までに、使っていた技術についてガーッと1時間ほどかけて一度書き切ります。先述の通り、コマンドや文献は作業中にまとめているので、勢いで困ったところを書いていくだけです。その後布団の中でスマートフォンを使って自分でレビューして、一晩二晩おいて良さそうなら投稿、という感じです。

環境については、特別何か工夫があるわけではないですが、「しゃべりながら書く」ということをやっています。誤字脱字を減らすため、複雑な文章にしないための工夫です

ソフトウェアエンジニアの書く記事は、プログラミングの癖のせいなのか否定や対義を示すために「〜〜だが、〜〜だが〜〜だが〜〜である」といった表現になることが多いと感じていて、それでは伝わりにくいので読み上げて違和感がないか確認しています。自分が「断定」したいのか「感想、所感」を書きたいのかも読み上げると分かることがあるので、自分には合っていると感じています。

これは私のデスクです。夜中は特に座っていると眠くなってしまうので、昇降デスクの高さを調節して立って執筆しています。これは私のデスクです。夜中は特に座っていると眠くなってしまうので、昇降デスクの高さを調節して立って執筆しています。
これは私のデスクです。夜中は特に座っていると眠くなってしまうので、昇降デスクの高さを調節して立って執筆しています。

──これまでブログを続けられたのはなぜでしょうか?

Giverになりたいと思って始めたブログですが、前述の通り、今では学習サイクルの一部になりつつあります。

苦労したことを振り返り、他者に見せられる形にすることで「あれ、これ自分でもよく分かってなかったな」「深く理解していなかったな」という所が見つかり、参考文献を読み返して、さらに深い知識へと至ることが多いです。

また、まとめることであやふやなまま残さず、自分の中での言葉として解釈、理解できるのもうれしい点の1つです。分かりやすく言えば、期末のテスト前に復習してノートをまとめる時に得られる「ヨシッ!」という感覚に近いですね。

もちろん当初のGive and Takeの気持ちも忘れていません。他人のブログも良いものがあれば広めますし、刺激し合える、指摘し合える良い環境、良い読者、良いフォロワーを増やすことは大事だと思っています

あと、これはブログの購読者が増えてからの話ですが、Twitterなどで反応をもらえるのも良いところです。「これ読んで解決できた! これ読んで理解できた! 助かる!」という感想はやっぱりうれしいので、めちゃくちゃブログのURLで“エゴサ”しています(笑)。

ばんくしさん

お話を伺った人:河合俊典さんid:vaaaaaanquish

河合俊典

ニュース記事のレコメンドやユーザ分析を行う機械学習エンジニア。最近生まれた娘の子育てに夢中。
Twitter:@vaaaaanquish
技術ブログ:Stimulator
Webサイト:https://vaaaaanquish.jp/

◆ エンジニアのブログ探訪

blog.hatenablog.com