とある案件に応募したい(機械学習・DevOps関連)

週2、週3で働きたいと思い、フリーランスエンジニアの求人サイトで案件を探してみました。

一番上にヒットした案件はとても魅力的な条件に見えましたが、スキルが足りないどころか
説明できない用語が多くありました。

そこで、この案件に応募できるように用語の把握すると同時に
求められているスキルや案件の業務内容を深く追及してみようと考えました。

できれば、いくつかの用語の技術を実装し、
経験者と言えるようになることも目指したいと思います。

まずは、募集内容を紹介します。

ヒットした募集内容

下の画像のような募集内容でした。(画像をクリックすると拡大画像が閲覧できます)

DevOps案件の募集内容

募集内容に出てくる専門用語や単語を、以下のように分解しました。

専門用語や単語を分解したもの

DevOpsエンジニアの案件・求人

機械学習モデル
素早く安定的なデプロイ CI/CDパイプライン構築 ※1
効率よくデータを捌く ミドルウェア開発、インフラ構築
GCPデータ基盤 その活用案件 多数
さらなる拡充
専門人材

分析官
機械学習モデルを実装するエンジニア
連携
速く安全に 機械学習のサイクルを回せる環境 の構築

ビジネス課題と要求の整理
案件の要件定義をPMと行える = 足りない情報が何かを定義 自身で要求できる
機械学習ワークフローの設計/開発/運用
データ提供のためのAPI設計/開発/運用(アプリ開発側との連携)
(※1)(A/Bテスト実施など)

DWHへログデータを収集・蓄積・加工する
一連のデータパイプラインの設計/開発/運用

Infrastructure as CodeおよびCI/CDの経験
Go、Java、Pythonなどを利用した開発経験
GCPでの開発経験
コンテナ技術(Docker)を用いた開発経験

Kubernetesの利用経験
ワークフローの構築経験(Digdag/Airflow etc…)
監視ツールの導入・運用経験
データマネジメント(DMBOK)に関する理解や実践経験

リモート
(業務開始時期)2021/10〜
(募集人数)1人
稼働率50%
(面談回数)1回

〜120万円/月 スキル見合い
140h-180h
23区
業務委託
元請

要件定義・基本設計・詳細設計・プログラミング(実装)・テスト・その他
PM(プロジェクトマネージャー)・運用/監視担当・Java系エンジニア・サーバーエンジニア
Python・Java・Docker
リモートOK
2日・週3

それぞれの用語や単語の分析

各用語に対して疑問をリストアップし、各疑問を一つづつ調査し記事にしたいと思います。
全ての疑問を記事にできた時、この案件に応募できるスキルが身に付くか、
何をすればスキルが身に付くかイメージできる状態になることを期待したいと思います。

また、それらの記事を読む読者も同じようにイメージできるようになり、
今まで従事してきた案件とは異なる分野にチャレンジできるようになることも目指したいと思います。

それぞれの用語や単語に対して、リストアップした疑問を以下に記載します。

それぞれの用語や単語に対してリストアップした疑問

DevOpsエンジニアの案件・求人
→なぜこの案件がDevOpsなのか?
→DevOpsとは何か?

機械学習モデル
素早く安定的なデプロイ CI/CDパイプライン構築
→「機械学習モデルを素早く安定的なデプロイ」とはどういうことなのか?
→CI/CDパイプラインによってなぜそれが可能なのか?
→CI/CDパイプラインとは何なのか?

効率よくデータを捌く ミドルウェア開発、インフラ構築
→ここでのデータとは何を指すのか?(機械学習のインプットデータ?)
→それを実装するミドルウェアやインフラとはどういうものか?
→「ミドルウェアの開発」とあるが、ミドルウェア自体を作るということか?
→「ミドルウェア」の定義についてもう一度確認。

GCPデータ基盤 その活用案件 多数
→GCPとは、Googleのクラウドのこと?
→GCP上にデータ基盤を置いているということか?
→それともGCPにデータ基盤用のサービスがあるということか?
→「その活用」の例をいくつか挙げる

さらなる拡充
→「さらなる拡充」とはどのような方向性で、どのような内容なのか

専門人材
→何ができたら、この場合の「専門人材」となるのか

分析官
→分析官とはどんなことをする人なのか?

機械学習モデルを実装するエンジニア
→それはどんな人か
→その人はどんな役割を担っているのか?

連携
→連携とは何をするのか?
→何を依頼するのか、何を依頼されるのか

速く安全に 機械学習のサイクルを回せる環境 の構築
→機械学習をできるだけ短時間で小コストで大量に回したい(AIをたくさん開発したい、高精度なAIを開発したい)という理解で良いか?
→安全とは、バグや設計ミスが少ない状態ということで良いか?
→構築対象は、機械学習を効率的に行うための自動化した環境ということで良いか。
→それは既存のソフトウェアを使用するだけでなく、組み合わせたり、ツールを開発したりすることも含むという理解で良いか?

ビジネス課題と要求の整理
→対象のビジネスとは何を指しそうか?(業種は?)
→課題を抱えているのは誰か?(経営者?企画担当者?運用担当者?現場?)
→どんな要求を出してきそうか

案件の要件定義をPMと行える = 足りない情報が何かを定義 自身で要求できる
→なぜ機械学習モデルで解決したいのか
→PMとの役割分担は何か?
→PMの考慮もれを補うということか?
→要するに要件定義ができること。ということか?

機械学習ワークフローの設計/開発/運用
→ワークフローとはどういう意味か?
→具体的にはどういう仕組みが考えられるか
→設計から運用までということは、全フェーズを担当するという理解で良いか

データ提供のためのAPI設計/開発/運用(アプリ開発側との連携)
→データ提供とはどういうことか?
→AIに学習データをインプットするということか?
→それともAIがはじき出した結果を顧客に提供するということか?
→APIということは、別のシステムがその結果を利用するということか?
→API自体が成果物なのか?
→それとも他に既にシステムがあって、そこから利用したいということか?
→アプリ開発側と、API開発担当は別ということか?
→その場合、アプリ開発側はどのようなものを開発するのか?

素早く安定的なデプロイ CI/CDパイプライン構築(A/Bテスト実施など)
→A/Bテストとは何か?
→2種類のモデルを作ってどっちが良いかを比べるということか?
→1つのモデルを2種類の方法で活用した結果を比べるということか?

DWHへログデータを収集・蓄積・加工する
→DWHとは何か?
→データを蓄えた大きな箱ということか?
→ログとは機械学習の結果か?
→蓄積して何に活用するのか?
→加工して何に使うのか?

一連のデータパイプラインの設計/開発/運用
→パイプラインということは、データの収集から加工までを自動化するということか?
→回せば回すほど利益が出る仕組みということか?

Infrastructure as CodeおよびCI/CDの経験
→Infrastructure as Codeとは何か?
→物理的なインフラに対して、コードによるインフラという理解で良いか?
→CI/CDツールにはどういうものがあるか?
→実際に構築してメリットを感じてみたい(自動化されて開発が楽になるイメージ)

Go、Java、Pythonなどを利用した開発経験
→Goとはどういう言語か?
→Javaはどういう特徴があるのか?
→Javaというとお堅めのシステムが採用しそうなイメージだが
→Pythonは機械学習のためか?
→それ以外にPythonを使用するのか?

GCPでの開発経験
→GCPでの開発とはどういうことか?
→GCPはクラウドの認識だが、開発はどのクラウドで行っても同じなのではないか?
→それともOS以外の高レイヤの機能のことか?

コンテナ技術(Docker)を用いた開発経験
→コンテナもOSのようなものという印象だが、開発者でもありインフラもできるオールラウンダーを求めているということか?
→Dockerとはそもそも何か?

Kubernetesの利用経験
→Dockerの上位レイヤにKuberetesが位置する印象だが、違うのか?
→Dockerもあるし、Kubernetesもあるということか?
→それとも、Dockerをより効率的に使うためにKubernetesがあるということか?

ワークフローの構築経験(Digdag/Airflow etc…)
→ワークフローとは何か?
→それぞれどのようなソフトウェアか?
→機械学習を効率的に行うためのワークフローということか?
→どんなことができそうか?

監視ツールの導入・運用経験
→何を監視するのか?
→機械学習の進捗か?
→機械学習の進捗の中で不規則に動作が変わることを想定しているのか?
→その場合、どのような分岐が考えられるか?
→監視ツールの運用とは何を指すのか?
→どのような監視ツールが想定されるか?

データマネジメント(DMBOK)に関する理解や実践経験
→DMBOKとはPMBOKのようなものか?
→PMBOKと何が違うのか?
→理解とはどのレベルが想定されるか
→実践とは、理論をもとにデータを管理したということか?

リモート
(事業所)23区
リモートOK
→現地でないとできないことは無いのか?

(業務開始時期)2021/10〜
→この手の案件の人の入れ替わりは激しいのか?緩やかなのか?

(募集人数)1人
→一気に何人も追加するような案件では無いということか?

(精算時間)140h-180h
稼働率50%
週2日・週3日
→精算幅に書いてある時間の半分稼働すれば良いということか?
→この手の案件は忙しいのか?
→短い時間でも役に立てるものなのか?

(面談回数)1回
→この手の案件は1度面談しただけで案件へのマッチ・アンマッチが分かるものなのか?

〜120万円/月 スキル見合い
→この手の案件はなぜ高単価なのか?
→どの程度のスキルならいくらなのか?

業務委託
→準委任ではなく業務委託であるところにポイントがあるのか?
→ハイレベルな案件は大体業務委託なのか?
→成果物とは何なのか?
→なぜ業務委託なのに時間が定められているのか?

元請
→エンドユーザーの前にワンクッションあるということか?
→この手の案件は商流は浅めが多いのか?深めが多いのか?

要件定義・基本設計・詳細設計・プログラミング(実装)・テスト・その他
→開発完了まで全フェーズということか?
→要件定義では何をしそうか?
→基本設計では何をしそうか?
→詳細設計では何をしそうか?
→プログラミングでは何をしそうか?
→実装にはプログラミング以外もあるのか?
→テストはどういうことをしそうか?
→その他とは何が想定されるか?

PM(プロジェクトマネージャー)・運用/監視担当・Java系エンジニア・サーバーエンジニア
→PMが欲しいのか?担当が欲しいのか?
→両方ということか?
→開発だけでなく、運用もするのか?
→その場合の運用とは何が想定されるか
→Java系エンジニアとは何か?
→サーバーエンジニアとは何か?

Python・Java・Docker
→Pythonは機械学習の実装で使用するのか?
→Javaはどこで使うのか?
→Javaはどのように使うのか?
→なぜDockerが有用なのか?

ひとまず、以上になります。

では、次回以降の記事で各疑問に対して
調査・整理した結果を紹介していきたいと思います。

ここまで、ご精読いただきありがとうございました。