最近作っているものについて

初めに言っておく。これはエッセイである。
一般的な意味での技術記事ではない。しかし、

 と、ここまで書いたところでQiitaの投稿画面からnoteの投稿画面に移ってきた。技術記事のためのプラットフォームに、「これはエッセイである」と始めるとは何事かと当たり前に思ったし、そう言っておいて実は意味のある技術記事でしたー、みたいな内容でも本当にないからだ。

 実は書き始めの気分としては、「しかしこういう内容こそ、まさにエンジニアが発信するべき事柄なのだ。さあ自由なインターネットを取り戻そう」みたいなことを枕にしようかと思っていたのだが、いやそれはほんとにやる意味がないなと思いとどまった。別にそこに強い志があるわけでもない。ただの気まぐれだし。

 ということでnoteで筆を取り直すことにしたのだが、なんと気楽なことか。投稿前に見直すとは思うが、終着点を決めずにスラスラ(ダラダラともいう)書いてしまっている。Qiitaではこうはいかない。読む人の時間を無駄にしないよう、最初に要点、次に前提、そして内容、最後に参考リンク。内容まで読む前に、自分にとってその記事が有用かどうか、いま読む価値があるのかどうか、判断させることが重要だ。

 念のため言っておくとこれはQiita批判ではない。エンジニアは僕を含めそういう情報を好む。何しろ我々が直面しているのは一人一人が全く違うそれぞれの局面での困りごとだ。ある記事が自分の困りごとを100%解消するなんてことはまずありえない。あったら僥倖だ。何度も検索ワードを変えながら、無数に見つかる玉石混交のサイト群から、これはヒントになりそうだ、というページを検索結果画面の短い文章からピックアップし、むっちゃタブ開いて、読んでは閉じていく。だから、記事の冒頭で"for me" or "not for me"を判断できることは、記事の内容に匹敵するくらい大切な要素だ。

 と、思っている。内容に関しては、ちゃんと読むに至った人のうちの2%くらいに、困りごとのうちの3%くらいの参考になれば良いと思っている。

 ということでいまnoteに書いているわけだが、さて何を書きたかったかというと、いま自分が作っているものについてだ。

 ここ数日、いま作っているものについての技術記事をQiitaに連投している。何を作っているかというと、まずはこの記事を見ていただきたい。なお、このあたりで非エンジニアは離脱するだろうと思っている。と、(いやQiitaじゃねえんだから!)というツッコミが飛んできそうな注釈を入れておく。

 これなのだが、要はReactというフレームワークの中で動く便利ツールを作って公開する際に、80%の人がやっているであろうことをピックアップして自動化しておきましたよ、この通りにやれば内容の開発に専念できますよ、というもの。

 で、この記事を書いてから改めて気づいたのが、「さらにこの作業の大半は自動化できるじゃん?」ということ。細かい話になるが、GitHubリポジトリを作るとかNPMトークンを登録するとか、モジュール名を置き換えるとかは大体自動化できる。書き換える箇所は決まっているし、同じ情報を複数箇所で編集することもあるのだから、直接書き換えさせるよりは、「どうしましょうかね?」って聞いて最低限の情報だけ答えてもらって、適切な箇所を書き換えてあげる方がよっぽど良い。先ほどの記事では30分と書いたが、多分5分以内にできる。

 すでに他に同じことを実現してくれるものがあるかどうかは知らない。すこし調べた範囲では見つからなかった。近いものはあるのかもしれないが、さっき書いたように、それが自分の状況に100%フィットすることはまずない。同じように、いま僕が作っているものが誰かのニーズを100%満たすこともまたありえないと思ってはいる。それでも良い。とりあえず自分はこれが欲しいのだから。

 もうちょっと詳しく作っているものの概要を書いておく。これは自分用のガイドラインでもある。もうここからは興味のあるエンジニア以外はマジで離脱すると思っている。興味のあるエンジニアすら真面目には読まないと思っている。

- npmパッケージ名、reactモジュール名、descriptionを決めてもらう
- GitHubユーザー名を入力してもらう
- GitHubアクセストークンをWebから取得してもらい、コピペしてもらってツールからログイン
- 希望のリポジトリ名を入力してもらう(デフォルトはスコープ部分を抜いたパッケージ名)
- そのリポジトリがすでにあるかどうかを検索し、あれば別名を入力してもらう。このチェックはループ
- テンプレート(決め打ち。これ)を指定してリポジトリを作成してクローン
- 仕組み的にはReactライブラリに限らず、npmパッケージ開発全般に応用できるが、テンプレートとその後の編集処理の差し替えで対応できるとして、とりあえずReactライブラリ開発にのみ対応したツールとして開発する
- ローカルに同じ名前のフォルダがある場合は別名の入力を求める。このチェックはループ
- 任意で著者名とメールアドレス、著者サイトを入力してもらう
- これまでの情報でpackage.jsonと各種ソースを書き換える
- 書き換えたものをfeat:コメント付きでcommitする
- npmログイン状態ならnpmトークンを新規に作るか既存の.npmrcにあるものを使うか聞く
- トークンを作るならパスワードを聞く
- ログインしてなければユーザー名とパスワードとメールアドレスを聞く
- npmトークンをGitHubリポジトリのSecretsに設定する
- git pushはツールではやらない。ユーザーに任せる。

 これで大体仕様は網羅できているのではないだろうか。仕事の合間にやっているので進みは遅いけど、そろそろ概形はできてきたので、今月中くらいを目処に公開できてるといいなあ。

サポートしていただけたら、書く勢いになります!