WEB系開発者の業務内容を文章化してみた

目的

WEB系企業の開発者です。

採用に携わることになったので、勉強中です。

スキルは高いとはいえないので、参考になるかわかりませんが、WEB系の小さめ企業の業務イメージが少しでも頭に浮かんで、興味をもってくれたらいいなと思い、この記事を書いています。

業務について

今まで働いてきた会社

  • 20人 ~ 60人規模の会社
  • toC向けサービス
  • 技術主導の会社ではない
  • エンジニア職が全体の10~30%ぐらいです。
  • 半分以上がエンジニアという会社みたいな技術力をもつ会社とは業務内容が違うかもです。
  • みんながフロント、サーバ、クラウド全部やる
  • アプリは専任のエンジニアがいますが、それ以外は特に業務が分かれていません。

フレームワークとか、業界に差があれど、業務内容については大きく変わらない印象です。

業務内容

  • 新サービス開発
    • 小さい会社なら企画段階から入れると思いますし、1からサービスを開発できるので楽しいです。
    • ただ、案件数は少ないので、もしそれをメインでやりたいのならば、創業から間もない会社か、社内ベンチャーに力を入れている大きめの会社を探した方がいいかもと思います。
  • 集客向上施策実装
    • toC向けアプリケーションの宿命として、集客が重要となります。
    • 新規ユーザー
      • 主にSEOに力を入れてて、コンテンツ追加したり、リンクを増やしたりします。
      • 言われたままで作ると、ページ速度が落ちたり、時間がかかりすぎることが多いので、目的を聞いて代案を出す時もあります。
      • SEOは効果が出るまでに時間がかかったり、アルゴリズムが変わりやすかったりするので、コンサルに頼む会社が多い印象です。
    • 再訪ユーザー
      • ユーザーが使いやすいように改修していきます。
      • WEBで新規ユーザーを獲得して、UXを改善しやすいネイティブアプリをDLしてもらうという戦略が多いと思います。PWAなどで、今後どうなるかはわかりませんが。
  • コンバージョン向上施策実装
    • どのWEBサイトでも、ネイティブアプリでも売上に繋がるコンバージョンポイントがあります。
      • 広告クリック
      • 会員登録
      • アプリインストール
      • 記事閲覧
    • ABテストをしながら改善していくと思います。
      • 最近はあまり携わってないので違うかも?
    • 要件が比較的シンプルなので、開発者自身が企画を出していきやすい部分だと思います。
  • 社内業務支援ツール開発
    • 営業の方や、カスタマーサポートの方の仕事がしやすいように要望をもらったり、ヒアリングしたりして作っていきます。
    • 例えば、DBにあるデータを閲覧、検索、登録がしやすいアプリケーションを作り、普段30分かかっていた作業が5分で終わるようにします。
    • 普段と違い、顔の見える社内の人から、感謝の言葉を直接頂けるので新鮮です。
  • 企業クライアント向けツール開発
    • toC向けサービスといえども、広告主である企業クライアントがいることが多いので、その方達用のツールを作ります。
    • 最初はクライアントから依頼を受けて、社内の人がやってた仕事を、工数削減のために一部クライアントに直接やってもらおうって流れで必要になります。
    • toC向けを開発していると、インパクトが強い部分以外に対して、ある程度速度優先で施策を進めることが多いのですが、その感覚で仕事をすると予期せぬクレームがくるので注意です。特にブラウザの差異周り。
  • 既存サービスリニューアル
    • 既存のアプリケーションの保守が難しくなってきたら発生します。
    • 既存の動きをそのまま持っていく必要があるのですが、ドキュメントとか残ってないことがほとんどなので、精神力を必要とします。
    • 保守しやすいコード(テストも含めて)を書こうとか、他人が読みやすいコードを書こうという強い意思が獲得できるので、一度は経験してみてほしいです。
  • 技術基盤開発
    • ElasticSearchを使った検索サーバ構築だったり、個人情報を保存する暗号化DB構築だったり、社内の様々なアプリケーションから共通で呼び出される部分を切り出して開発していきます。
    • やりたいことごとに適したデータストアや、Saasを組み合わせて使っていくので、知識が広がります。
  • 障害対応
    • エラーを監視して、発生したら問題解決に動きます。
    • 新規で開発したら開発した分だけ、自分の保守担当のサービスが増えていきがちなので、通知をしっかり作ったり、クラウドに任せられるところは任せていくことが自分を守ります。
メリット
  • toCからtoB、社内向けまで幅広い顧客に対して働ける。
  • フロントから、クラウドを使ったインフラまで幅広い技術に触れられる。
  • あまりルールが定まってない。
デメリット
  • 専門性がつきにくい。
  • 大企業のサービスと比べてトラフィックが少ないので、その辺りの経験が積めない。
  • あまりルールが定まってない。

利用技術やサービス

フロントエンド関連

Reactや、RailsPHPのテンプレートを直接使うところも多いと思います。 現在使ってるものを書いています。

Vue & Nuxt
  • Vue.js
  • Nuxt.js - ユニバーサル Vue.js アプリケーション
  • SPAも作れるし、SSRも作れるし、静的サイトも作れるし、ルールも定まっていて、あまり考えることがなくて楽。
  • 日本語のドキュメントも充実していますし。
  • 逆にNuxtに全部お任せしているので、Webpackなど周辺ツールについて知識がつきにくいです。
  • lint系はESlintとPrettier [開発ツール - NuxtJS]
  • e2eテストだけ行っていて、先輩が導入したPuppeteerを使っています。
  • (一方、個人ではReactを使うようにしています)

サーバサイド関連

PythonやGoを使う会社も多いと思います。

RailsRuby
  • 多くのWEBサイトに関しては、RailsAPIを作成しています。
  • 社内用のCRUDアプリケーションに関しては、RailsOnlyで開発をしています。
Express(Node.js)
  • 静的型付け言語を使いたいという要望があり、一部のAPIはTypeScriptを用いています。
  • NuxtもSSR時はExpress上で動かすようにしています。
CodeIgniter(PHP
  • 古いアプリケーションはCodeIgniterで動いているので、たまに修正します。
  • 基本はリニューアル時や仕様確認時にコードを読んでいます

クラウド関連

家ではFirebaseを使ってますが、業務はAWSを主に使ってます。 他にもSQSとかDymanoDBとか使いますが、自分がよく触るものだけ列挙。

ECS
  • DockerをAWSで簡単に実行できます。
  • 現状ほとんどのサイトをECSで動かしています。
CodePipline、CodeBuild、ECR
  • デプロイ時に使っています。
ALB、Route53、CloudFront
  • Route53 => CloudFront => ALB => ECS という流れでリクエストを受けています
Lambda

Macアプリケーション

Visual Studio Code
  • 無料で、欲しい機能は軒並みあって満足している
  • VSCode内にターミナルを開けるので、そこでDockerとかGitの操作をしている。
  • 以前はiTermを使っていたが、全く開かなくなった
  • デフォルトのGit機能やGitlensが便利で、普段あまり使わないgit操作はそっちからやってる。
Google Chrome
Slack
  • 通常使いの他に忘れっぽいのでリマインドをよく使う
Sequel Pro
  • MySQL用のGUIツール
  • QueryのExplainとか、テーブル定義やindexを確認したりする時はこれしか使ってない
Cliper
Docker
  • 最近は、ECSとかCodeBuildのdebugや、PJを最初に作る時に頒布用のDockerFileを作成する時ぐらいしか使わない。
  • 新しいアプリケーションはLambdaが多いので。
  • 普段の開発はRailsとNuxtがほとんどだが、それはLocalに直接立ち上げることが多い。

WEBブラウザサービス

自社サービス
  • debug時に使うことも含めると、一番開いているサービスかもしれない
Github
  • Pull Requestとかはここから作ってる
  • Github のマージをhookにデプロイが行われるので必須
Youtube Music
  • 過去のコードを読み解く時も楽しく仕事ができる
開発関連ツール
  • 会社で利用してるためよく使うもの

終わり

どなたかの参考になれば!