研究会

機械学習、データベース、分散システム、その他技術的なことを書く研究会です

フリーランス 2 年目の振り返り

はじめに

今年はフリーランスとしては 2 年目になる年でした。

2 年目もなんとかフリーランスのエンジニアとしてやっていくことができたので、去年と同様にこの 1 年を振り返ってみようと思います。

実績

今年は 5 社と契約し、5 つのプロジェクトに携わりました。

5 社のうち 2 社は去年から引き続き契約していただいたクライアントで、残りの 3 社は今年新規に契約することになったクライアントでした。

またその新規の 3 社のうちの 2 社は旧知の方からの紹介やオファーでした。

仕事内容としてはデータエンジニアが主で、その他には開発コンサルのようなこともしました。

仕事で新しく使ったツールやサービスは以下のようなものがありました。

  • dbt
  • Dataform
  • Terraform
  • trocco
  • AirFlow
  • Looker
  • Looker Studio (旧 Google データポータル)
  • Amazon QuickSight
  • Firebase
  • AWS Amplify
  • Rust

売上は去年と比べると約 1.7 倍に増えました。

また通算で 1 社あたりの平均契約月数は 10.6 カ月に増えました (去年は 7.3 カ月)。

数字としては去年よりも良い方向に変化しており、仕事内容もやりたい方向の業務に携わることができたので満足のいく 2 年目になりました。

具体的な業務内容

今年の主な仕事だったデータエンジニアと開発コンサルについて、具体的な内容を振り返ってみます。

データエンジニア

データエンジニアとしてはそれぞれ特徴の異なるいくつかの現場を経験しました。

データ活用が盛んな組織での業務

まずは既にデータ活用が盛んな組織でデータエンジニア/データアーキテクトチームの一員として参加した現場でした。

そこでは既に BigQuery を中心とした大規模なデータ基盤があり、データエンジニア/データアーキテクトや分析担当者がそれぞれ専任で多数在籍しており複数チームを組んでいるような組織でした。

その現場では私は主に他社がリリースした新サービスや新機能を導入するための調査やプロトタイプの実装を担当しました。

例えば Dataform や dbt の導入プロジェクトのための調査を行い、既存のクエリを移植するためのサンプルを実装してドキュメントを整備しました。また trocco を AirFlow のデータパイプラインに組み込むために API を調査し、AirFlow から trocco を使えるようにするカスタムオペレーターを実装したりもしました。

またチームはデータエンジニアのチームでしたが、メンバーの中には IT システムに強くない方もいらっしゃるので、システム的なトラブルや複雑なエラーが出たときに私が引き継いで問題を解消するといった役割を担うことも少なくありませんでした。

チーム全体としてはデータマネジメントを意識してタスクを組んでいる印象で、この規模でデータ活用をしている組織ではデータマネジメントは今後ますます重要視されてくると感じました。

データ活用文化のない組織での業務

こちらは大きな組織でエンジニアも多数在籍しており自社サービスを展開しているものの、データを活かしたサービス開発はしていない現場でした。

私は始めはデータエンジニアとしてではなく小回りの利くなんでも屋のような役割で参加したのですが、業務の流れでサービスのユーザーの行動を可視化する例を示すことになりました。

その現場ではサービスを展開しているもののユーザーがどれくらいの頻度で使っているかが分からないという課題がありました。元々そういった分析をする方針であればアプリケーションに Google Analytics 等を組み込んでおくこともできますが、この場合はそういった仕組みは使っておらず、使えるのは基盤として使っている AWS のログだけでした。幸いにそのアプリケーションはユーザー認証に Cognito を使っており、Cognito は認証イベントを CloudTrail にログ出力するようになっていたのでそのログを Athena でクエリできるように整備し QuickSight でユーザーのログイン頻度やアクティブユーザー数等を可視化することができました。

まだ始めの一歩ですが、こういったステップを続けてサービス作りにデータを活用する効果が社内に認められて、より活発にデータを活用する文化にできたらよいなと思った現場でした。

データ活用文化のないスタートアップでの業務

こちらでは自社サービスを展開しているスタートアップで、サービスの利用状況を把握するために役割を超えて幅広く手を動かした現場でした。

私がチームに参加したちょうどその頃、サービスの状況を把握するためにウォッチするべき KPI を定める議論をしていたところでした。

私もそのミーティングに参加し、幾度かの議論を経て定まったサービスの KPI を追えるダッシュボードを作り始めました。

しかしその時点ではユーザーの行動を追える情報はサーバー側に存在しなかったので、まずは Google Analytics のコードをフロントエンドのコードに追加し、興味のあるイベントが起こったときにそれを補足できるようにしました。

またバックエンドはマイクロサービスの作りになっており DB も個々に持っていたので、それらのデータを一つの BigQuery に集約するデータパイプラインも構築しました。

他にもメール送信機能は外部サービスを使っていたりしたので、メールに関するログを外部サービスから取得して BigQuery に投入する仕組みも構築しました。

そうして各所からのデータが集まるデータレイクが出来上がったので、それをデータ変換する仕組みを dbt で作り、ダッシュボードで可視化するためのパイプラインを整えました。

ダッシュボードは Google データポータル (現 Looker Studio) を使って実現し、定めた KPI 以外にもそれに繋がる重要な指標を把握するチャートも用意して、サービス開発の定例で参照するという流れを確立しました。

この現場では少人数のチームであり自分でプログラムに手を入れたりインフラを変更したりできる環境だったため、サービス作りにデータを活用する新たな流れを導入できたよい経験になりました。

開発コンサル

こちらは業務内容としては上とは変わって、サービス開発を技術的な点からサポートする役割をする現場でした。

相手方は医療ドメインの専門家の方で、そのドメインをターゲットにした Web サービスを開発してリリースするために必要なサポートを提供するという仕事内容でした。

始めはサービスのコアとなるある問題を解くためのプログラムがローカルにあるだけの状態で、その機能を Web で提供するのがひとまずの目標でした。

私の役割としては Web アプリケーションとして仕上げるためのシステムアーキテクチャの提案、技術選定のアドバイス、ユーザーエクスペリエンスを意識したサービス利用フローの提案、それを開発するための開発プロジェクトの進め方の提案などでした。

ここでは自分のコンピューターサイエンスのバックグラウンドや、新規サービスの構想から実装してリリースまでやり遂げた経験からできるサポートを提供する形でした。

この案件は相手方はターゲットとなる事業ドメインの専門家であり当時から既に具体的なユーザーが見えていたものの、後はシステム化のノウハウだけが足りないという現場だったので、自分の提供できるものと非常にマッチした仕事でした。

評価

2 年目である今年は仕事内容としては自分の目指していきたい方向と合致したものばかりで楽しく仕事ができたのでよかったです。

顧客からの評価もおおむね良く、長く契約していただけるケースが増えました。

頂いたフィードバックとしては

  • 「あいまいな指示でもうまく要件を咀嚼してこなしてくれて助かる」
  • 「技術的なスキルが優れているので難しいタスクを任せやすい」
  • 「ドキュメントを丁寧にまとめてくれる」

などがありました。

また過去の私の仕事を評価していただいた方から頂いた案件が今年は二つあり、これもよい出来事でした。

今後もこの調子で今の顧客を大切にしつつ、評価され続けるような仕事ぶりを維持していきたいと思います。

これから

今後も基本はデータエンジニアとして仕事を受けつつ、開発コンサルも求められればやっていく方針でいこうと思います。

去年から継続してデータ活用の現場に触れてきた感触として、データ活用に積極的な組織ではデータマネジメントに注力していきつつあることが分かったので、そういった方面の知識や経験も積んでいこうと思います。

特にデータの品質担保のためのテストの仕組み、幅広いメンバーのデータ理解のためのメタデータ管理、各種法規の遵守のためのセキュリティなどが直近の課題として捉えられている印象だったので、そういった方面でも仕事ができるように準備していきたいと思います。

それでは 3 年目もどうぞよろしくお願いします。