# プロフィール
# 筆者について
こんにちは。くりてぃふぁい👾です。
WEB系ベンチャー企業2社を経て、現在外資系ITコンサルティングファームでアーキテクトとして従事しています。WEBアプリケーションエンジニアとして10年以上のキャリアを積んできましたが、どうすれば品質と生産性を最大化できるのかを考え続けた結果、開発者エクスペリエンスの重要性を強く感じるようになってきました。私自身はバックエンドの開発を主に、インフラ、クラウドコンピューティング、DevOps系ツールの導入など、WEBアプリケーションの構築に必要なアクティビティを業務、個人での開発を通じて経験してきました。そこに生産性最優先のベンチャー企業での経験と、エンタープライズクオリティを求められるシステムインテグレーターとしての経験をあわせ、多角的な視点で開発者エクスペリエンスを最大化するプラクティスを情報発信しています。技術に特化した記事だけでなく、受託開発の改善すべき点についても言及していくので、開発者だけでなく、システム開発に関わる方全般に少しでも価値ある情報が発信できれば幸いです。
# 開発者エクスペリエンス
本ブログでの最大のテーマは開発者エクスペリエンス(Developer Experience)
です。
開発者エクスペリエンスと言っても見解は色々とあるかと思いますが、私は以下のように定義しています。
- 開発者がモノ作りに集中できること
- 開発者のキャリアにとって価値のある技術選定が行われていること
- コストが安いこと
# 開発者がモノ作りに集中できること
最も重要な要素として、モノ作り、つまりビジネスロジックの開発に注力できることであると考えています。クラウドコンピューティング、SaaS等の隆盛によりビジネスの差別化を生みづらい要素は開発をする必要がなくなってきています。言い換えるならばDon't repeat yourself
の原則を守ることとで、注力すべき領域を最小化できるアーキテクチャを策定することが重要なポイントです。
# 開発者のキャリアにとって価値のある技術選定が行われていること
開発者にとって技術のキャッチアップは避けては通れない道です。誤った技術選定をしてしまうと開発者の市場価値にメリットがない経験になってしまいます。特に近年では同じ様な技術でも選択肢が多いので、より寿命が長く、市民権を得ている技術を採用することが重要です。より一般に受け入れらている技術を選択することで関連エコシステムを利用できる機会が増えたり、WEBでの情報収集も容易になります。
もう一点重要な点として、多機能系の肥大なプロダクトは極力選ばないことです。特定領域に特化したプロダクトは、その領域のDeepな知見が得られることが多いのと、それ自体の教育コストは高くなりずらい傾向があります。例えばAWSのサービス群は理想に近い分割単位だと思います。あとは各ピースをパズルのように組み立てていけばよいので、一般的かつ薄い技術を採用していくこととが重要です。
# コストが安いこと
とどのつまりシステム開発とはコストカットであると考えています。そして、コストは我々開発者にとって数少ない定量的な指標です。ランニングコストは当然のこと、人件費や教育コストも含まれます。安易にOSSを使おう!と言っているわけではなく、アーキテクチャ選定判断の重要な材料にすべきだ!というニュアンスです。またDevOpsのプラクティス
と、一般的なプラクティス
を採用するということも非常に重要です。例を挙げるならば、IaCを実施することでドキュメントメンテナンスのコストを最小減にする。The TWELEVE-Factor Appの原則に則ることで、”いつものあれです”となるようにすることでプロジェクトメンバーの新規参画コストを下げる。などが挙げられます。
こんなことを考え続けた結果、サーバレスアーキテクチャ、Jam Stackこそが開発者エクスペリエンスを最大化するアーキテクチャだ!という結論に達し、日々キャッチアップに勤しんでいます。本ブログでは同アーキテクチャ関連の技術をメインに発信していきます。
# 3code Tech Blog について
3code Tech Blogは私個人で運営している技術ブログで、ブログも個人で開発し、AWSのCloud Front(CDN)経由で公開しています。
前述したように、サーバレスアーキテクチャ、Jam Stackをベースに、開発者エクスペリエンスを最大化するための情報発信をしています。
# 記事のフォーマット
各記事のフォーマットを統一することで読者の方の情報収集コストを最小化できればと考えています。
テック系の記事はいわゆるCookBookであると考えています。DRYの原則に従い記事のフォーマットはO'Reilly Problem/Solution/Discussion CookBook format を、記事に記載すべき内容はVue.js CookBook Introductionを参考にしています。
テック系の記事は極力サンプルコードを提供しています。サンプルコードと記事はそれぞれGithubで公開しており、レポジトリのディレクトリ構造はREADME.mdをご確認下さい。
完全に準拠できてはいませんが、3code Tech Blogの各記事は以下のフォーマットで構成されます。各章は更に細かい章立てで構成される場合があります。
# Problem 必須
記事で扱う問題、ゴールのアウトラインを説明します
# Solution 必須
Problemで提起した問題の解決案のサマリーを説明します。解決方法だけを探している場合、ここまで読んでいただければ目的を達成できるようにしています
# Discusion 任意
Solutionの内容、そこに至った背景などを深掘りします。より深い理解の手助けができるようこの章を充実させるよう努めています。記載する内容はVue.js CookBook Introductionで推奨されている項目から、記事毎に適切なものをピックアップしています。
# See Also 任意
参考リンクの一覧があれば列挙します。
# サイト名の由来
ブログには3code
と名前をつけました。これには私の趣味であるPUNK ROCKが由来しています。
PUNK ROCKは文化的要素、精神的な要素、音楽的な要素とそれぞれ特徴がありますが、音楽的な要素としてはスリーコードのギターリフをかき鳴らすシンプルな点が挙げられます。スリーコードのシンプルなリフの代表格は3大パンクバンドの一つThe Ramonesですが、彼らのインタビューを読んだところ、その音楽性が生まれたのは楽器が弾けなかったからというのが理由だそうです。とりあえずやってみる。ということですね。かっこよくないですか?
エンジニアにとってアウトプット、とりあえず手を動かしてみることは非常に重要だと考えます。そんなことから、このブログに3code
と名づけることにしました。私はただのサラリーマンエンジニアですが、先人のエンジニアたちが発信してくれた情報に助けられた恩返しとして自身でもやってみようとこのブログを開設しました。もし自分でも情報発信をしたいと!思っているけど、自信がなくて動けてない人がいたら一緒にとりあえずやってみましょう!
最後にこのプログのスリーコードなテーマソーングのリンクを貼って終わりたいと思います。拝読ありがとうございます。