先日、ヘイシャの技術ブログに記事を投稿しました。
簡単に内容を紹介すると、RubyでCSVファイルをパースして標準ライブラリcsv
が提供しているCSV.read
と同じように最終的に二次元配列に変換する処理系をフルスクラッチで実装するというものです。コードは最終的には50行程度で、簡単なCSVパーサーが完成します。簡単のためオプションには対応していないです。
投稿した記事内・過去の記事でも触れていますが、Rui Ueyamaさんの低レイヤを知りたい人のためのCコンパイラ作成入門に感銘を受けており、CSVパーサーの処理系はCコンパイラの処理系に似たような感じになりました。
ファイルから 1 文字ずつ値を読み込む部分から紹介しており、初めてパーサーを作る人でもスムーズに取り組めるようにしたつもりです。
今回は後日談というか、執筆にあたっての思いを記事にしました。
技術ブログを共有の場として認知した
個人ブログを運営している自分にとって、企業の技術ブログとの付き合い方は難しい問題です。
というのも企業の技術ブログに記事を投稿するのであれば、個人ブログの方に記事を投稿した方がメリット(記事数が増える, 広告収入が発生する...)が多いと感じています。
企業ブログでしか投稿できないような内容、例えばアプリケーションのアーキテクチャについて紹介するだとかは別ですが、正直な所、基本的には自分のブログに記事を投稿したいという思いがあります。 ただ、企業の技術ブログに協力したくないという訳ではないので「何か良い付き合い方はないかな...」と模索していたのですが、1つの考えに至りました。
企業の技術ブログは知識・知見の共有の場であるという考えです。
例えば最近、学んで面白かったこと(eg: Cコンパイラを作成した)を開発メンバーに紹介・共有したいという思いを叶えてくれるのが企業の技術ブログです。個人ブログに投稿しても良いですが、個人ブログに投稿した記事のURLを社内slackなどに貼るのはおこがましい感じがしますが、企業の技術ブログであれば「投稿しました!」のアナウンスがされて、自然に見てもらえる可能性があります。
もちろん、口頭で雑談を交えて共有することもできますが、常に見ることのできる場所に、知識・知見のアウトプットがあるというのがブログの良い点です。
小さな成功体験を提供したい
自分が所属する開発チームには比較的、経験の浅いメンバーが多いです。
彼らに将来像を聞いてみると「スペシャリストになりたい」と思いを持つメンバーが多いことを知りました。
スペシャリストを目指すのであれば、特定の分野でインプット・アウトプットを継続することが重要だと思いますが、その一方で「特に興味のある分野はない」という矛盾した現状があったのです。
そのせいか「何か作りたいけど、何を作れば良いか分からない」という声もよく聞いていました。
何様だよ...という気持ちはあるのですが、そんな彼らに小さな成功体験を積んで欲しいという思いがあります。
どういった影響を与えるのかは個人によって違うでしょうが、結果的に何かのきっかけになってくれると嬉しいです。
とはいえ自分も「何か作りたいけど何を作れば良いか分からない」と日々、悩んでいる一人でもあります。
僕にとってもアウトプットすることで、自分が何をしたいのかを見つけ直すきっかけになっています。
「何がしたんだろう...」と、日々、悩むばかりです。
最後に
そんなエゴましましで書き上げたのが、以下の記事です。
「パーサー面白いかも」でも「自分はパーサーは興味ないな...」でも何でも良いのですが、誰かの何かのきっかけになってくれたら本当に嬉しいです。
皆さんもぜひ記事を見て頂けると嬉しいです。
少しでも「ええな〜」と思ったらはてなスター・はてなブックマーク・シェアを頂けると励みになります。