Skip to content

kajirikajiri/cv

Repository files navigation

職務経歴書
2024年4月23日現在
氏名 中村一貴

■職務要約
5年間にわたり業務システム開発に従事し、要件定義から設計、テスト、保守運用まで幅広い業務を担当。フロントエンド、バックエンド、インフラ、アプリ、ブラウザ拡張機能の開発にも携わり、多岐にわたる技術力を獲得。3~6名の小規模チームでプロジェクトをリードし、多役を務めて目標達成に貢献。フロントエンドテックリードとして、プロジェクトを成功に導く。また、業務委託を通じて、大規模サービスの経験を積む。

■活かせる経験・知識・技術
・担当者との密接なコミュニケーションを通じてビジネス目標に基づいた要件定義から開発、テスト、及び保守運用までを総合的に行った経験
・TypeScript、JavaScript、Ruby、Go、AWSを用いた多様なWEBアプリケーションの開発経験
・品質重視の開発アプローチとしてE2Eテスト基盤の構築経験
・ブラウザ拡張機能とFlutterを使用したネイティブアプリ開発の経験
・新技術の迅速な習得と適用能力

■職務経歴
2019年4月〜現在
事業内容:社内のSaaSを一元管理するためのSaasアプリケーション・ソフトウェアシステムの開発 正社員
2022年〜現在    /    企業向Saas棚卸台帳機能の立上・開発 規模・開発環境
【プロジェクト概要】
複数のサービス上に存在するユーザーを一元管理するための機能の開発

【担当フェーズ】
要件定義、基本設計、詳細設計、単体テスト、結合テスト、運用保守

【業務内容】
担当者へのヒアリング、仕様書作成、システムの設計、開発、導入、テスト、運用、保守メンテナンス

【課題 A】
新規プロダクトの立ち上げに伴い、全画面の実装を担当する必要がでた。フロントエンドの画面、インフラを全面的に担当した。

【取り組み・工夫した点 A】
立ち上げだったので、全体的に完成までのスピードを意識した。CEOやバックエンド担当とのやりとりで必須機能以外をなるべく削った。設計を最初から固めず、事前にある程度の打ち合わせを行い、それに合わせて段階的にレビューをもらって、少しずつ完成させていった。一気に作り上げてレビューを行い、手戻りが大きくなり、工数が増えることを懸念したため。StackOverflowやGithubを見ているとスタンダードになりつつあり、他プロジェクトでも採用していたReactとTypeScriptより実装した。コンポーネントを1から実装するのは時間がかかるので他プロジェクトでも採用していたMUIとMUI-Xのコンポーネントを利用した。テストは管理画面であり、多くの人が利用しないのでE2Eテストをするほどでもなく、スピードで勝るReact Testing Libraryを採用した。インフラ面では個人的に使っていた、CloudflareのCloudflare PagesのPreview機能が便利だと感じていたので、社内利用実績のあるAWSのAWS Amplifyを採用し、Previewページが使えるようにした。CI/CDは社内で実績のあったCircleCIを採用した。Github Actionsも勢いがあり、Githubとの親和性から候補に上がったが、利用実績が少なく、今から調査を始めるよりはCircleCIを使った方が良いという判断をしてCircleCIを採用した。

【成果 A】
MUI-XのData Gridは複雑なコンポーネントであり、テストにはReact Testing Libraryのようなインテグレーションテストではなく、E2Eが推奨されていた。過去のプロジェクトで個人の環境に依存するE2Eは工数が増えやすいことを懸念して、CircleCIにCypressによるE2Eテスト基盤を整えた。これにより、各人の端末に依存しない点で安定したテストになった。また、プロダクトが無事完成した。

【課題 B】
人員不足により、採用活動を行うことになったため、エンジニアも同席した方が良さそうという判断があったため、私も同意し、担当した。

【取り組み・工夫した点 B】
WantedlyやGreenなどを利用し、レジュメの閲覧・候補者の検討・返信、面談への参加を行った。プロダクトが初期段階であり、1つのことではなく複数を担当でき、また意欲的に自分から進んでタスクをとってくれそうな人が良いという話し合いの結果に基づいて検討を行った。また、採用後は3~6ヶ月くらいで実務に慣れて1人で開発していただく予定だったので、PRのレビューやプロダクトで使用している技術の相談など行った。

【成果 B】
無事に採用を完了し、6ヶ月以内には1人で開発していただけるまでになってくれて嬉しかった。

【課題 C】
バックエンド側も担当することになり、バックエンド含め実装を行った

【取り組み・工夫した点 C】
GoのTestifyのテストが不足しており、拡充を行った。依存性注入ができていない箇所があり、依存性を注入できるようにリファクタリングを行った。ユニットテストがメインだったのでインテグレーションテストで通して動作検証ができるようにした。Goは経験が少なかったが、既存の実装や公式のドキュメントを参考に実装を行った。

【成果 C】
Ruby on Railsの方でもバックエンドからフロントエンドまで担当していた経験もあり、難なく実装することができた。またGoの経験もできた。

【実績詳細】
・CypressによるE2EテストのCI/CD環境を構築。他プロジェクトでは、個人のローカルでE2Eを実行しており、制度や速度にばらつきがあったため、CI/CD環境を構築し、個人の環境に依存しない形でのE2Eテストを構築した。
・AWS AmplifyによるCI/CD環境の構築
・React Testing Libraryによるユニットテスト環境の構築
・イベント・条件・アクションからなるワークフロー画面の作成
・ワークフローの一覧画面の作成
・ワークフローのログ画面の作成
・Yupによるバリデーションの実装
・useReducerによる状態管理の実装
・Prettier・ESLintによるコードフォーマットの構築
・エンドポイントの作成・Goのユニットテスト・結合テストの実装
・トランザクションによるロールバックの実装
・エンドポイントとの繋ぎこみ
・複雑なUIになりそうな機能をUIでなくエンドポイントで提供することを提案した

【チーム人数】
4人

【役割】
フロントエンドテックリード

【言語】
TypeScript、Go、Ruby

【フレームワーク・その他】
Ruby on Rails、React、Next.js、Material UI、Yup、Jest、React Testing Library、Playwright、Puppeteer、Cypress、Rspec、testify、Github、Docker、Figma、AWS Amplify、AWS S3、AWS EC2、AWS Lambda、AWS CloudWatch、AWS System Manager、AWS Route53

【OS】
Windows、MacOS、Linux
2020年〜現在    /    企業向Saasシングルサインオン管理画面立上・開発 規模・開発環境
【プロジェクト概要】
シングルサインオン機能を実現するための機能の開発

【担当フェーズ】
要件定義、基本設計、詳細設計、単体テスト、結合テスト、運用保守

【業務内容】
担当者へのヒアリング、仕様書作成、システムの設計、開発、導入、テスト、運用、保守メンテナンス

【課題 A】
シングルサインオン機能の管理画面で導入していたE2Eテストの実行、実装のコストが大きく削減が必要になった。

【取り組み・工夫した点 A】
調べてみると、E2Eのように一連の流れを考慮したテストをReact Testing Libraryで実装できることがわかったので実装を行った。ブラウザで行っているわけではないため、その点注意が必要だが、従業員がログインする画面ほど利用者が多くなく、クリティカルな画面でなかったため、問題ないと判断して実装を進めた。まずは導入を行い、それ以降の機能を実装する時には新しい方で実装し、残りは時間をみて切り替えていった。

【成果 A】
E2Eほどの時間がかからなくなり、テストの時間が短縮された。E2Eだと各人のPCの状態によってテストがFlakyになったりしたがその点も改善された。

【課題 B】
他プロジェクトとの連携やエンドポイントを利用したい要望が多くなり、公開エンドポイントの実装を行った。

【取り組み・工夫した点 B】
エンドポイントのドキュメントを公開するため、rswagの導入を行った。また、CEOが探してきたreadme.comへのファイルのアップロードをGithub Actionsにより連携した。アクセスの過多が懸念されたため、AWS WAF&Shieldによるアクセス制限を行った。

【成果 B】
他プロジェクトとの連携が完了し、それまでよりも統合された機能を提供できる下地ができた。公開エンドポイントの整備により、顧客への提供価値を高めた。

【実績詳細】
・PuppeteerによるE2Eテスト環境の構築
・Enzyme環境の構築
・EnzymeからReact Testing Libraryへの移行
・E2EテストからReact Testing Libraryへの移行
・一覧画面の作成(ユーザー、デバイス、イベント、ルール、アプリの一覧画面の作成)
・詳細画面の作成(ユーザー、デバイス、イベント、ルール、アプリの詳細画面の作成)
・React Apexchartsを使って折れ線グラフ、ヒートマップによるユーザー数の表示画面を作成
・時間や場所などに基づいて判定するルール機能をANDやORで組み合わせる動的なUIの作成
・ユーザーのCSV処理(一時確認画面・処理確定画面)の作成
・ルールの並び替え機能を作成
・メンバーの招待・招待の有効期限・パスワードルール(文字数や使える記号の選定)の作成
・グループにユーザーを追加・削除する画面の作成
・アプリごとに異なる接続方法を認識して必要な入力フォームを表示する画面の作成
・追加したメールアドレスに通知を行う機能の追加
・自分のメールアドレス・パスワードを変更する機能の追加
・Vue.jsを使って作成した管理画面をReactに移行した時、どうしても解決できないエラーがあり、あたりをつけるため原因となるファイルを特定し、原因箇所を絞りあとは半分ずつコメントアウトしていき原因を特定し修正した。
・Vue.jsからReactに移行した時はビックバンリリースを行った。利用するのが管理者のみ、テストが成功していた、利用者が多くない、などの理由から。
・JavaScriptで作成した管理画面をTypeScriptに移行
・Dockerによる開発環境の構築
・Prettier・ESLintによるコードフォーマットの構築
・エンドポイントの作成・Rspecによるテスト
・データベーステーブルの作成
・Rakeタスクの作成
・トランザクションによるロールバックの実装
・To Many Connectionになったエンドポイントをまとめた処理の作成
・エンドポイントとの繋ぎこみ

【チーム人数】
3人

【役割】
フロントエンドテックリード

【言語】
TypeScript、JavaScript、Ruby

【フレームワーク・その他】
Ruby on Rails、React、Gatsby、Next.js、Vue、Nuxt、Material UI、Yup、Jest、React Testing Library、Playwright、Puppeteer、Cypress、TestCafe、Rspec、Dynamoid、Github、Docker、Figma、AWS S3、AWS EC2、AWS Lambda、AWS CloudWatch、AWS System Manager、AWS Route53、Amazon DynamoDB

【OS】
Windows、MacOS、Linux
2020年〜現在    /    企業向Saasシングルサインオン画面の立上・開発 規模・開発環境
【プロジェクト概要】
シングルサインオン機能を実現するための機能の開発

【担当フェーズ】
要件定義、基本設計、詳細設計、単体テスト、結合テスト、運用保守

【業務内容】
担当者へのヒアリング、仕様書作成、システムの設計、開発、導入、テスト、運用、保守メンテナンス

【課題 A】
新規のプロダクトの立ち上げに伴ってシングルサインオンのログイン画面の実装が必要になった

【取り組み・工夫した点 A】
ログイン画面、2段階認証画面、シングルサインオン可能なアプリケーション一覧の画面など全画面のpc, モバイルへの対応を行った。バックエンド担当者、デザイナ、CEOと連携を行い機能を作り上げた。

【成果 A】
プロダクトの完成が第一だったので他部署の方とのコミュニケーション、CEOとの最低限のラインについての話し合いにより、機能の削減をはかり実装時間の短縮を行った。ユニットテストや統合テストの実装を行い、E2Eは設定に時間がかかるのでとりあえずなしで実装した。

【課題 B】
機能がやや複雑で、型がない言語では実装時にプロパティがわからなかったり、どんな値が入っているかわからず、実装速度の改善のため型のある言語への切り替えが必要になりリプレイスを行った。

【取り組み・工夫した点 B】
CEOへの説得を行い、時間を確保し実装を行った。その時点では顧客への影響が少なかったので、一括でサーバーサイドレンダリングからクライアントでのレンダリングに切り替えた。その後、JavaScriptからTypeScriptへの実装に切り替えた。また、Next.jsがIEのサポートを切ったので、選択肢にあがらずGatsbyでの実装を行った。

【成果 B】
型がつき、補完が効くようになったので開発効率が改善した。

【課題 C】
他プロジェクトで導入した、React Testing Libraryによる統合テストがE2Eほど時間がかからず実装やテストが行えたため、このプロジェクトにも導入を行った。

【取り組み・工夫した点 C】
パッケージのインストールでエラーが多発し、調べても結果が出てこないことがあったので、原因となるファイルを半分づつコメントアウトし、原因を突き止め解決していった。とりあえずのインストールをすまし、それ以降のテストは拡張機能との連携が必要な場合などの必須な場合を除いてE2Eではなく、React Testing Libraryによる実装を行った。

【成果 C】
テストの実行時間がE2Eに比べて短いのでテスト時間が改善した。また、とりあえず環境を整えたことにより、それ以降の機能ではE2Eを使わなくて良い場面では時間の短縮になった。

【課題 D】
初期に作成した複数のデータを一括更新する処理でエラーが発生したため調査対応を行った

【取り組み・工夫した点 D】
調べてみると、約30くらいのデータの一括更新でToo Many Connectionが発生しており、バルクインサートの処理を入れた対応した。

【成果 D】
エラーが出なくなった。データ量の増加に伴う知見になった。

【実績詳細】
・PuppeteerによるE2Eテスト環境の構築
・Enzyme環境の構築
・EnzymeからReact Testing Libraryへの移行
・E2EテストからReact Testing Libraryへの移行
・シングルサインオン画面の作成
・秘密の質問画面の作成
・2段階認証画面の作成
・本人確認・許可・拒否画面の作成
・アプリ一覧画面の作成・サイズ変更機能の作成
・アプリ並び替え機能の作成
・アプリのログイン情報の追加・編集・削除機能の作成
・Railsで作成したシングルサインオン画面をReactに移行
・端末の申請画面の作成
・OIDCの認証画面の作成
・SAMLの認証画面の作成
・Dockerによる開発環境の構築
・Prettier・ESLintによるコードフォーマットの構築
・エンドポイントの作成・Rspecによるテスト
・データベーステーブルの作成
・Rakeタスクの作成
・トランザクションによるロールバックの実装
・To Many Connectionになったエンドポイントをまとめた処理の作成
・エンドポイントとの繋ぎこみ

【チーム人数】
3人

【役割】
フロントエンドテックリード

【言語】
TypeScript、JavaScript、Ruby

【フレームワーク・その他】
Ruby on Rails、React、Gatsby、Material UI、Yup、Jest、React Testing Library、Playwright、Puppeteer、Cypress、TestCafe、Rspec、Dynamoid、Github、Docker、Figma、AWS S3、AWS EC2、AWS Lambda、AWS CloudWatch、AWS System Manager、AWS Route53、Amazon DynamoDB

【OS】
Windows、MacOS、Linux
2020年〜現在    /    企業向Saasブラウザ拡張機能の立上・開発 規模・開発環境
【プロジェクト概要】
他の認証方式では対応できない認証方式に対応するための拡張機能の開発

【担当フェーズ】
要件定義、基本設計、詳細設計、単体テスト、結合テスト、運用保守

【業務内容】
担当者へのヒアリング、仕様書作成、システムの設計、開発、導入、テスト、運用、保守メンテナンス

【課題 A】
企業の独自アプリなど、Samlログイン非対応の画面にもシングルサインオンしたいという課題の優先度の上昇に伴い実装が必要になった。

【取り組み・工夫した点 A】
ブラウザ拡張機能の実装を行い、代理認証によるログインに対応した。各ページごとのID, Passwordなどの要素の違いに対応できるように要素ごとにDBにCSSセレクタを保存した。基本的に要素の表示を非同期で待機することはできないので独自の実装で要素の表示を待機するなどの実装を行い、setTimeoutによる決まった時間での停止を避けた。これにより、動作を安定させた。

【成果 A】
Samlログイン以外のログイン画面にも対応できるようになり、契約社数の増加に寄与した。よくあるSaasアプリケーションの最上位プランのみSaml可能になっている場合などにも最上位プランに変更する必要がなくなり、取り込める顧客が増えた。

【課題 B】
ログイン処理が条件分岐するようなページのログインに対応したいという課題の優先度の上昇に伴い実装が必要になった。

【取り組み・工夫した点 B】
ブラウザ拡張機能に機能追加を行い、複数の条件分岐に対応することが可能となった。DBの特定のカラムの構造に手を入れる必要があったので、再帰処理でネストがかけるような構造にした。

【成果 B】
特定のWebアプリケーションでのログインに困っていた顧客が取り込めるようになった。

【課題 C】
動作検証が手動では限界になってきたので、E2Eテストによる動作確認の必要性が向上した。

【取り組み・工夫した点 C】
Puppeteerで拡張機能のパスを指定してテストを実行することができたので、それによって実装した。外部のアプリケーションを対象にせず、独自にホスティングした条件を満たすページを対象にテストした。

【成果 C】
手動でのテストがなくなり、漏れがなくなり、時間の短縮に繋がった。

【課題 D】
基本的なログイン画面ではない場合にカスタムな要素が存在するページが確認され始め、一定の数に達したので実装を行った。

【取り組み・工夫した点 D】
カスタムな属性の数は固定ではないので、動的に対応できるようにDBから拡張機能までの実装を行った。

【成果 D】
カスタムな要素が存在するページへのログインに対応したことにより、それまで契約できていなかった顧客にも対応できるようになった。

【実績詳細】
・PuppeteerによるE2Eテスト環境の構築
・React Testing Libraryによるユニットテスト環境の構築
・アプリ一覧画面の作成
・代理認証機能の作成
・パスワード代理更新機能の作成
・パスワード代理認証機能のバリデーション機能の作成
・代理認証の複数パターンへの対応
・Form submitによる代理認証を行う機能の作成
・代理入力機能の作成
・代理クリック機能の作成
・エンドポイントとの繋ぎこみ
・URLが一致した場合に代理認証を行う機能の作成
・JavaScriptで作成したブラウザ拡張機能をTypeScriptに移行
・Manifest V2からManifest V3への移行
・エンドポイントの作成・Rspecによるテスト
・データベーステーブルの作成
・Rakeタスクの作成
・トランザクションによるロールバックの実装
・エンドポイントとの繋ぎこみ

【チーム人数】
3人

【役割】
フロントエンドテックリード

【言語】
TypeScript、JavaScript、Ruby

【フレームワーク・その他】
Ruby on Rails、React、Material UI、Jest、React Testing Library、Playwright、Puppeteer、Cypress、Rspec、Github、Docker、Figma

【OS】
Windows、MacOS、Linux
2021年〜現在    /    企業向Saasネイティブアプリの立上・開発 規模・開発環境
【プロジェクト概要】
シングルサインオン機能をスマートフォンアプリでも実行できるようにするための開発

【担当フェーズ】
要件定義、基本設計、詳細設計、単体テスト、結合テスト、運用保守

【業務内容】
担当者へのヒアリング、仕様書作成、システムの設計、開発、導入、テスト、運用、保守メンテナンス

【課題 A】
シングルサインオン機能をスマホからも使いたいという要望の優先度が高まったため実装することになる。過去のReact Nativeのアプリ実装のやりづらさが課題となっていた。

【取り組み・工夫した点 A】
React Nativeの時の大きな課題として依存関係の解決の複雑さがあった。その点を意識して、既存のWebのUIを使いまわせるところは使い回すことにして、実装工数を減らした。また、Flutterを見たところ、書き方がJavaScriptに近いためいけそうだったのと、過去のReact Nativeの記憶があまりよくなかったのを考慮して、Flutterで実装を行った。

【成果 A】
初めて使ったFlutterだったが、ほぼJavaScriptに近かったので楽に実装できた。また、ほぼWebのUIを使ったことも時間の短縮に繋がった。なるべく実装を減らしたためか、依存関係の複雑さも感じられなかった。テストに関してもFlutter側は最低限に済ませて、WebのUIの既存のテストで賄うことができた。

【実績詳細】
・PuppeteerによるE2Eテスト環境の構築
・React Testing Libraryによるユニットテスト環境の構築
・代理認証機能の作成
・代理入力機能の作成
・代理クリック機能の作成
・エンドポイントとの繋ぎこみ
・エンドポイントの作成・Rspecによるテスト
・データベーステーブルの作成
・Rakeタスクの作成
・トランザクションによるロールバックの実装
・エンドポイントとの繋ぎこみ

【チーム人数】
3人

【役割】
フロントエンドテックリード

【言語】
Dart、TypeScript、Ruby

【フレームワーク・その他】
Flutter、Ruby on Rails、React、Material UI、Jest、React Testing Library、Playwright、Puppeteer、Cypress、Rspec、Github、Docker、Figma

【OS】
Windows、MacOS、Linux
2019年〜2020年    /    仮想通貨 システムトレード サービス・開発 規模・開発環境
【プロジェクト概要】
取引所APIを駆使し、プログラムで自動的に取引を行うシステムの開発

【担当フェーズ】
要件定義、基本設計、詳細設計、単体テスト、結合テスト、運用保守

【業務内容】
担当者へのヒアリング、仕様書作成、システムの設計、開発、導入、テスト、運用、保守メンテナンス

【課題 A】
ログイン時の2段階認証がなく、顧客からの要望や・不正ログインの危険性もあり、2段階認証の実装が必要となった。

【取り組み・工夫した点 A】
メール、電話番号、Google Authenticatorによる2段階認証を実装した。Google検索を駆使して実装した。参画して間もない頃だったので、事業的に優先度が高いわけではないが、まずは慣れるために必要なタスクを行った。

【成果 A】
ユーザーが2段階認証によって安全にログインできるようになった。また、メンバーや会社の雰囲気に慣れることができた。

【課題 B】
アプリインストール後に初めて訪れる画面でユーザーの離脱率が下がるよう、新しいデザインに基づき画面の実装を行った。

【取り組み・工夫した点 B】
JavaScriptの経験を生かし、既存の実装を参考にReact Nativeでアプリを実装した。デザイナーとのコミュニケーションにより、細かい点や実装における難しい点などを話してデザインの微調整のお願いなどを行った。

【成果 B】
ABテストに使う画面が完成した。デザイナーとのやりとりを学んだ。

【実績詳細】
・2段階認証機能の実装
・導入画面の作成

【チーム人数】
4人

【役割】
フロントエンド開発者

【言語】
JavaScript、Ruby

【フレームワーク・その他】
Vue、Nuxt、React Native、Jest、Ruby on Rails、Rspec、Github、Docker

【OS】
Windows、MacOS、Linux

2023年12月〜現在
事業内容:大規模メディアのソフトウェア開発 契約社員
2023年〜現在    /    管理画面・ユーザー画面の機能追加 規模・開発環境
【プロジェクト概要】
管理者やユーザーが使う画面に機能を追加

【担当フェーズ】
要件定義、基本設計、詳細設計、単体テスト、結合テスト、運用保守

【業務内容】
担当者へのヒアリング、仕様書作成、システムの設計、開発、導入、テスト、運用、保守メンテナンス

【課題 A】
作成から5年以上経過しているプロダクトでDBのレコードを削除し、容量を削減して将来的な速度低下・不便さを防ぐプロジェクトを担当した。

【取り組み・工夫した点 A】
Ruby on Railsのプロダクトだったので、dependentやbefore_destroyなど削除に関わる処理を慎重に洗い出した。CTOへの確認を行い、メタプログラミングである、オープンクラスやrefineの調査・比較検討を行った。削除する対象をDBとしてみるのか、ログとしてみるのかという点が学びだった。DBとしてみる場合は抜け漏れや重複があると困り、ログとしてみる場合は重複の点においては重要ではない。担当者とのやりとりを丁寧にこなし、丁寧なコミュニケーションが評価された。

【成果 A】
削除機能の実装が完了し、プロダクト利用者が無駄なレコードを閲覧しなくてよくなった。

【課題 B】
サムネとアイキャッチ両方の画像の設定の手間が利用者に負担が大きいため、片方の設定で両方を設定するプロジェクトを担当した。

【取り組み・工夫した点 B】
RMagickやPaperclipを比較検討し、デフォルトで仕様を満たせたRMagickを採用した。複数の設定動線があったため、Ruby on Railsの保存前後のコールバックを利用した。保存処理の途中でトランザクションとSidekiqのジョブがあり、なぜかたまに失敗する処理を発見し、原因を探し、Rails側プロセスはトランザクション内部の保存したレコードが見えるが、Sidekiqのジョブは別プロセスなのでトランザクションの状況によっては失敗するという知見をえた。こういう場合はRailsのafter_commit_everywhereのgemを使う。もうすぐRailsの標準として同様の機能が実装されそう。

【成果 B】
画像変換やトランザクション、ジョブ、プロセス・スレッドの調査方法、local, staging, production環境ごとの違いがあることがあることを理解した。この機能が作成されたことにより、ある作業において作業時間が半分になった。

【実績詳細】
・Angular, CoffeeScript, Rails, Slimなど初めて使用する言語やフレームワークも素早くキャッチアップした
・Angular, CoffeeScript, Rails, Slim, React, Vueが混在するプロジェクトでも大体1週間以内にPRを提出、マージした
・最初の1週間くらいで早くて助かるなどのフィードバックを受けた
・2, 3週間ほどで他部署とのコミュニケーションをとりながらの実装をおこなう
・1ヶ月くらい経過したところで難易度の高いタスクを任され、慎重に確認を行いつつ削除機能をマージした
・難易度の高いタスク完了後、他部署よりコミュニケーションが丁寧で助かるとフィードバックを受けた

【チーム人数】
4人

【役割】
フロントエンド・バックエンド開発者

【言語】
TypeScript、JavaScript、CoffeeScript、Ruby

【フレームワーク・その他】
vuejs-rails、Ruby on Rails、Activerecord-Import、React、Angular、Vue、Slim、Material UI、Rspec、Paperclip、after_commit_everywhere、Gon、Draper、Pagy、RMagick、Airbrake、Github、Docker、Figma

【OS】
MacOS、Linux

■テクニカルスキル

種類 使用期間 レベル
OSWindows 5年3ヶ月 要件に応じた環境設計・構築が可能
MacOS 5年3ヶ月 要件に応じた環境設計・構築が可能
Linux 4年3ヶ月 要件に応じた環境設計・構築が可能
言語TypeScript 4年3ヶ月 最適なコード記述と、指示、改修が可能
JavaScript 5年3ヶ月 最適なコード記述と、指示、改修が可能
CoffeeScript 0年3ヶ月 最適なコード記述と、改修が可能
Ruby 5年3ヶ月 最適なコード記述と、指示、改修が可能
Dart 3年3ヶ月 最適なコード記述と、改修が可能
Go 2年3ヶ月 最適なコード記述と、改修が可能
フレームワーク・その他React 4年3ヶ月 最適なコード記述と、指示、改修が可能
Next.js 4年3ヶ月 最適なコード記述と、指示、改修が可能
Material UI 4年3ヶ月 最適なコード記述と、指示、改修が可能
Gatsby 4年3ヶ月 最適なコード記述と、改修が可能
Vue 4年3ヶ月 最適なコード記述と、改修が可能
Yup 4年3ヶ月 最適なコード記述と、改修が可能
Vite 3年3ヶ月 最適なコード記述と、改修が可能
Jest 5年3ヶ月 最適なコード記述と、指示、改修が可能
Puppeteer 5年3ヶ月 最適なコード記述と、指示、改修が可能
Cypress 4年3ヶ月 最適なコード記述と、指示、改修が可能
Playwright 1年3ヶ月 最適なコード記述と、改修が可能
TestCafe 1年3ヶ月 最適なコード記述と、改修が可能
React Testing Library 4年3ヶ月 最適なコード記述と、指示、改修が可能
Rspec 5年3ヶ月 最適なコード記述と、指示、改修が可能
Ruby on Rails 5年3ヶ月 最適なコード記述と、改修が可能
Redis 5年3ヶ月 最適なコード記述と、改修が可能
sidekiq 5年3ヶ月 最適なコード記述と、改修が可能
Activerecord-Import 0年3ヶ月 最適なコード記述と、改修が可能
Paperclip 0年3ヶ月 最適なコード記述と、改修が可能
after_commit_everywhere 0年2ヶ月 最適なコード記述と、改修が可能
Angular 0年3ヶ月 最適なコード記述と、改修が可能
Slim 0年3ヶ月 最適なコード記述と、改修が可能
Gon 0年3ヶ月 最適なコード記述と、改修が可能
Pagy 0年3ヶ月 最適なコード記述と、改修が可能
Draper 0年3ヶ月 最適なコード記述と、改修が可能
RMagick 0年3ヶ月 最適なコード記述と、改修が可能
vuejs-rails 0年3ヶ月 最適なコード記述と、改修が可能
Flutter 3年3ヶ月 最適なコード記述と、改修が可能
React Native 1年3ヶ月 最適なコード記述と、改修が可能
Docker 5年3ヶ月 最適なコード記述と、指示、改修が可能
Github 5年3ヶ月 最適なコード記述と、指示、改修が可能
Figma 3年3ヶ月 UI上で操作や設定が可能
AWS S3 3年3ヶ月 UI上で操作や設定が可能
AWS Amplify 2年3ヶ月 UI上で操作や設定が可能
AWS Lambda 3年3ヶ月 UI上で操作や設定が可能
AWS Route53 3年3ヶ月 UI上で操作や設定が可能
AWS System Manager 3年3ヶ月 UI上で操作や設定が可能
AWS CloudWatch 3年3ヶ月 UI上で操作や設定が可能
AWS EC2 4年3ヶ月 UI上で操作や設定が可能
AWS WAF & Shield 3年3ヶ月 UI上で操作や設定が可能
AWS IAM 3年3ヶ月 UI上で操作や設定が可能
Nuxt 4年3ヶ月 最適なコード記述と、改修が可能
testify 2年3ヶ月 最適なコード記述と、改修が可能
Amazon DynamoDB 4年3ヶ月 UI上で操作や設定が可能
Dynamoid 4年3ヶ月 最適なコード記述と、改修が可能
Slack 5年3ヶ月 UI上で操作や設定が可能
Sentry 5年3ヶ月 UI上で操作や設定が可能
Airbrake 0年3ヶ月 UI上で操作や設定が可能
GPT-4 1年3ヶ月 UI上で操作や設定が可能
DeepL 2年3ヶ月 UI上で操作や設定が可能
Statuspage 3年3ヶ月 UI上で操作や設定が可能
BetterStack 0年1ヶ月 UI上で操作や設定が可能
Notion 3年3ヶ月 UI上で操作や設定が可能
Zoom 3年3ヶ月 UI上で操作や設定が可能
Google Meet 0年3ヶ月 UI上で操作や設定が可能
SequelAce 4年3ヶ月 UI上で操作や設定が可能
SequelPro 4年3ヶ月 UI上で操作や設定が可能
Postman 3年3ヶ月 UI上で操作や設定が可能
Google Chrome 5年3ヶ月 UI上で操作や設定が可能
Microsoft Edge 2年3ヶ月 UI上で操作や設定が可能
Miro 4年3ヶ月 UI上で操作や設定が可能

■自己PR
【ビジネス志向の開発経験】
ベンチャーとスタートアップで、優先度の高い環境下で業務経験あり。CEOと連携し、目標と納期に合わせ開発。

【多様な開発経験と技術スキル】
5年以上の開発経験。フロントエンド、バックエンド、インフラを含む幅広い技術スキルを持つ。新しい言語も素早く習得し開発が可能。

【開発フロー】
ヒアリング → プロトタイプ実装(複雑な場合はFigma使用)→ 実装 → テスト → リファクタリング → レビュー → リリース、プロセス繰り返し。

【幅広い業界での開発経験】
初期段階から保守まで一貫して対応。フレームワーク調査、公式ドキュメント参照。ユーザーフィードバックに基づく改善経験あり。

【効率化ツール活用】
Github Copilot、GPT-4、VSCode、Vim、ripgrep等でコード作成効率化。必要に応じVimやVSCodeでDiff閲覧。開発ツールが無ければ自作(Vimプラグイン、Chrome Extension)。DockerはLinux上で運用し効率化。

■成果物
【自作PCにssh】
概要: MacだとDockerの速度が遅く、WSLだと早く、Linuxはもっと早いらしいと知ったので、LinuxのPCを自作し、TerratermでConoHaのVPSをたて、外部から家のPCにsshできるようにした。
詳細: 以前からMacのDockerが遅いと感じてMacでなんとかしようとしていたがいまいちで、WSL2が出て試したところだいぶ快適だった。しかし、Linuxの方がもっと早いと知ったので自作PCを作ることにした。しかし、経験がなかったので、PC組み立てキットみたいなやつの中身を調べて、そのパーツを全部買って組み立てた。Linuxのインストールから動作確認はだいぶ手間取ったが、完成した。スマホでSwitchBotから電源を入れられるようにして、AWSのec2インスタンスを立てておいたので、そのインスタンスにsshするように設定した。外出先からはAWSにsshすることで家のPCにアクセスできる。現在はAWSではなくConoHaのVPSにsshしている。TerraformでVPSを立てるようにしている。削除まで自動化を検討したが手間だったので、起動している間は30分おきにslackに通知を飛ばしている。気づいたらスマホからConoHaのWebコンソールからVPSを削除している。

【MUIのインポート修正eslintプラグイン】
概要: MUIのインポート記法を修正し、ローカルの開発速度を改善するeslintプラグイン
詳細: リロード速度が約1/10に改善する。MUIのパッケージをインポートする記法は複数あるが、ある記法にすると単体で読み込むのでホットリロードが改善する。リポジトリを見てほしい。意外とスターがついたのでみんな困っていたのかもしれない。
リポジトリ: https://github.com/kajirikajiri/eslint-plugin-mui-path-imports

【職務経歴書・自己PR生成】
概要: 自分の属性を入力しておき、Markdownを生成し、PDFを生成する。
詳細: TypeScriptで記載した自分の属性からMarkdownを生成。Markdownを元に、PDFを生成する。Google spreadsheetやGoogle document、Notionで自分で書くよりも繰り返しの部分や細かいデザインに融通がきく。
リポジトリ: https://github.com/kajirikajiri/cv

【ブログ】
概要: Web Componentでシンプルに作成したブログ
詳細: 既存のウェブ標準に基づいたWeb Componentを使ったシンプルで保守が楽なブログシステム。MarkdownからHTMLへの変換などのscriptを自分で作成し、mainブランチにpushすれば20秒ほどで更新される。Cloudflare Pagesで運用している。
リポジトリ: https://github.com/kajirikajiri/blog

■将来の目標
CEO直下でフロントエンドテックリードとしてミーティング、仕様検討から実装、保守、スケジュール管理を一手に担い、事業競争力の向上を意識しフルスタックに開発を行った。開発者バックグラウンドを活かし、責任範囲拡大で価値向上を続ける。

フロントエンドのスキルをメインにプロダクトエンジニアとして活躍してきた。フロントエンドしかやりませんという動きではない。
メインはプロダクト開発だが、それに限らずプロダクトに関わることを行ってきた。CI/CDや開発環境の改善。
メンバーの時間の管理やタスクの管理も行ったが、基本はお任せして、困った時に一緒に開発したり助言、PRのレビューを行ってきた。なので、人のマネジメントをするようなエンジニアリングマネージャーよりは、技術に特化したIndividual Contributorのような動きをしています。

About

職務経歴書(Curriculum Vitae)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published