自己紹介
医療系自社開発企業(MedTech)のWebエンジニアをやっていて現在2年目になります!
僕自身も完全未経験からWeb系のエンジニアに転職して様々な苦労をしてきたので、現在エンジニアを目指して転職されている方のお力になれたらと思いメンターをさせて頂いてます。(完全未経験からエンジニア転職した際の経歴に関しては以下の記事参照)
https://qiita.com/yuuu1654/items/0fb29cce47e4a44d2acc
エンジニア転職は難しい上に、働きながら「いつ解決できるか分からないエラー」や「何を作ってどう転職するのか」などの不安と闘っていかなければならないので、メンタル的にも辛い部分もあるかと思うので、そういった部分でもサポートできたらと思いますのでよろしくお願い致します。
主に業務で、PHP/Symfony, JavaScript, TypeScript, Vue.js, Nuxt.js, Docker, AWSを使っています
あと、元々独学で勉強していた時と現在エンジニアの業務とは別で個人開発でRailsを触っているので、Railsに関してはサポートできるかと思います。
経歴・実績
2022
年
4月
〜 2023
年
2月
e-casebook
プロジェクトの概要:
- 医師向け学会・研究会プラットフォーム
- 学会・研究会などの発表をライブ配信し、地方にいて中々学会に参加できない若手医師向けに知識や学びを共有するサービス
- 開発チームはスクラム6人体制
使用技術:
- PHP, Symfony, Knockout.js, Vue.js, TypeScript, Nuxt.js, Docker, Nginx, Ansible
役割:
- Webフロントエンド/バックエンドエンジニア
担当した業務:
- 新規実装
- 有償企業アカウント化
- 製薬会社などの企業アカウントに向けた有償教育コンテンツをライセンスキーを購入することで対象となるコンテンツを見れるようにした
- 企業や製薬会社の特集動画コンテンツを掲載する単一ページや企業LPを実装
- リプレイス
- フロントエンドのKnockout.js/JavaScriptで実装されている箇所を、Nuxt.js/TypeScriptで実装しなおす
- APIの速度改善
- 管理画面のユーザー作成機能追加・修正
- コードレビュー、仕様の相談
- 運用・保守
- 学会などのライブ配信時のサーバーメンテナンス (EC2やRDSのスケール等)
プロジェクトの概要:
- 医師向け学会・研究会プラットフォーム
- 学会・研究会などの発表をライブ配信し、地方にいて中々学会に参加できない若手医師向けに知識や学びを共有するサービス
- 開発チームはスクラム6人体制
使用技術:
- PHP, Symfony, Knockout.js, Vue.js, TypeScript, Nuxt.js, Docker, Nginx, Ansible
役割:
- Webフロントエンド/バックエンドエンジニア
担当した業務:
- 新規実装
- 有償企業アカウント化
- 製薬会社などの企業アカウントに向けた有償教育コンテンツをライセンスキーを購入することで対象となるコンテンツを見れるようにした
- 企業や製薬会社の特集動画コンテンツを掲載する単一ページや企業LPを実装
- リプレイス
- フロントエンドのKnockout.js/JavaScriptで実装されている箇所を、Nuxt.js/TypeScriptで実装しなおす
- APIの速度改善
- 管理画面のユーザー作成機能追加・修正
- コードレビュー、仕様の相談
- 運用・保守
- 学会などのライブ配信時のサーバーメンテナンス (EC2やRDSのスケール等)
2023
年
2月
〜 2023
年
8月
Caselineユーザーアカウント管理画面
プロジェクトの概要:
- 以下参画したモバイルアプリ開発プロジェクト (Caseline) の顧客向けユーザー管理画面
- 導入していただいた病院単位の管理担当者や当社スタッフが使用することを想定
- 元々はDynamoDBなどのデータソースを直接触ってユーザーの作成や設定をしており、ミスが起こることを防ぐため開発に至った
- 開発チームはスクラム4人、PM1人
使用技術:
- Nuxt.js, TypeScript, AWS Lambda, AWS AppSync, CDK, Docker
役割:
- Webフロントエンド/バックエンドエンジニア
担当した業務:
- 新規開発立ち上げ時より参画し、新規ページ実装
- 管理者用の登録アカウント一覧ページ
- アカウント追加ページ
- 所属組織詳細ページ
- 汎用コンポーネントを切り出して共通化
- AppSync(GraphQL)を使用したquery, mutation実装
- Cognito, DynamoDB, AppSyncを利用したAPI実装 (取得・追加・更新)
- Lambdaを用いてフロントエンド側からAPI呼び出しする処理を実装
- ユーザー登録処理、登録失敗時のトランザクションの実装
- VeeValidateを用いたバリデーションの実装
Caselineユーザーアカウント管理画面
プロジェクトの概要:
以下に記しているCaselineというモバイルアプリ開発プロジェクトに参画し、顧客向けのユーザー管理画面を開発しました。導入された病院の管理担当者や当社スタッフが使用することを想定。もともとはDynamoDBなどのデータソースを直接操作してユーザーの作成や設定を行っていましたが、操作ミスを防ぐためにこのプロジェクトが立ち上がりました。開発チームはスクラムを採用し、4人の開発者と1人のプロジェクトマネージャーという構成です。
使用技術:
Nuxt.js, TypeScript, AWS Lambda, AWS AppSync, CDK, Docker
役割:
Webフロントエンド/バックエンドエンジニア
担当した業務:
- 新規開発の初期段階から参画し、新規ページを実装しました。
- 管理者用の登録アカウント一覧ページ
- アカウント追加ページ
- 所属組織詳細ページ
- 汎用コンポーネントを作成し共通化しました。
- AppSync(GraphQL)を使用したクエリとミューテーションの実装
- Cognito, DynamoDB, AppSyncを活用したAPIの実装(取得、追加、更新)
- Lambdaを使用してフロントエンドからAPIを呼び出す処理を実装
- ユーザー登録処理と登録失敗時のトランザクション処理
- VeeValidateを用いたフォームのバリデーション処理
発揮したバリュー:
- リファインメント時に積極的に質問し、解決策や調査結果をesaなどにまとめ、デイリースクラムで共有するよう努めました。
- 環境構築会や実装方針の相談、勉強会の動画を撮影し、自身で復習するとともに他の開発メンバーへの理解のサポートを行いました。
- 直前のプロジェクトでKnockout.jsからNuxt.js/TypeScriptへのリプレイス業務に携わっており、その経験を生かしました。
- 業務外で必要な技術の学習を行い、開発部内の定例LTやデイリースクラムで知識を共有しました。
プロジェクトの概要:
- 以下参画したモバイルアプリ開発プロジェクト (Caseline) の顧客向けユーザー管理画面
- 導入していただいた病院単位の管理担当者や当社スタッフが使用することを想定
- 元々はDynamoDBなどのデータソースを直接触ってユーザーの作成や設定をしており、ミスが起こることを防ぐため開発に至った
- 開発チームはスクラム4人、PM1人
使用技術:
- Nuxt.js, TypeScript, AWS Lambda, AWS AppSync, CDK, Docker
役割:
- Webフロントエンド/バックエンドエンジニア
担当した業務:
- 新規開発立ち上げ時より参画し、新規ページ実装
- 管理者用の登録アカウント一覧ページ
- アカウント追加ページ
- 所属組織詳細ページ
- 汎用コンポーネントを切り出して共通化
- AppSync(GraphQL)を使用したquery, mutation実装
- Cognito, DynamoDB, AppSyncを利用したAPI実装 (取得・追加・更新)
- Lambdaを用いてフロントエンド側からAPI呼び出しする処理を実装
- ユーザー登録処理、登録失敗時のトランザクションの実装
- VeeValidateを用いたバリデーションの実装
Caselineユーザーアカウント管理画面
プロジェクトの概要:
以下に記しているCaselineというモバイルアプリ開発プロジェクトに参画し、顧客向けのユーザー管理画面を開発しました。導入された病院の管理担当者や当社スタッフが使用することを想定。もともとはDynamoDBなどのデータソースを直接操作してユーザーの作成や設定を行っていましたが、操作ミスを防ぐためにこのプロジェクトが立ち上がりました。開発チームはスクラムを採用し、4人の開発者と1人のプロジェクトマネージャーという構成です。
使用技術:
Nuxt.js, TypeScript, AWS Lambda, AWS AppSync, CDK, Docker
役割:
Webフロントエンド/バックエンドエンジニア
担当した業務:
- 新規開発の初期段階から参画し、新規ページを実装しました。
- 管理者用の登録アカウント一覧ページ
- アカウント追加ページ
- 所属組織詳細ページ
- 汎用コンポーネントを作成し共通化しました。
- AppSync(GraphQL)を使用したクエリとミューテーションの実装
- Cognito, DynamoDB, AppSyncを活用したAPIの実装(取得、追加、更新)
- Lambdaを使用してフロントエンドからAPIを呼び出す処理を実装
- ユーザー登録処理と登録失敗時のトランザクション処理
- VeeValidateを用いたフォームのバリデーション処理
発揮したバリュー:
- リファインメント時に積極的に質問し、解決策や調査結果をesaなどにまとめ、デイリースクラムで共有するよう努めました。
- 環境構築会や実装方針の相談、勉強会の動画を撮影し、自身で復習するとともに他の開発メンバーへの理解のサポートを行いました。
- 直前のプロジェクトでKnockout.jsからNuxt.js/TypeScriptへのリプレイス業務に携わっており、その経験を生かしました。
- 業務外で必要な技術の学習を行い、開発部内の定例LTやデイリースクラムで知識を共有しました。
2023
年
9月
# Caseline
# プロジェクトの概要
+ 救急車での搬送などの緊急時に専門医が遠隔から治療/検査をサポートできる
+ 通話しながらリアルタイムで、電子カルテ・心電図・エコーなどの情報を共有できる
+ サーバーを介さないので、サーバーやデバイスにもデータが残らずセキュリティが担保されている
+ 医療機器ガイドラインを準拠(経済産業省、厚生労働省、総務省)
+ 北大病院や名寄市立総合病院などの大学病院などで順次導入されている
+ 当社CTOが開発したサービス
+ 開発チームはスクラム5人、PM1人
+ 開発環境はAmplifyで構築
+ アプリ側はSwiftを用いて、iOSフレームワークにUIKitを使用
+ バックエンド側はAmplify、Boto3、Lambdaを使用
+ データ管理はCognitoとDynamoDBを使用
+ 音声管理はTwilioを使用し、映像管理はSkyWayを使用
+ WebRTC (P2P) を採用し、端末同士が直接通信できるようになっている
# 役割
+ iOSアプリエンジニア
+ バックエンドエンジニア
# 担当した業務
+ UIの自動テストコード追加
+ テストコードのリファクタリング
+ 既存APIの追加修正
+ Boto3のコード修正、Cognito/DynamoDBの属性追加など
+ APIの修正に伴うアプリ側の表示データの修正
+ 通話をかけて「接続中」になってからバツボタンタップ時のグルグルフリーズ問題の修正
+ peerの破棄タイミングを修正
+ 映像接続問題の不具合修正
+ マルチスレッドで実行されていた関数の実行タイミングを修正
+ データ接続の責務を担っているクラスの一部リファクタリング
+ Cognitoのカスタム属性を追加・修正するMakefileターゲットの追加
# 課題
+ 開発当初は以下のような課題点があった
+ 開発メンバーが予測できていないバグや不具合が残っていたので、開発と並行してチームメンバーと相談しながら仮説を立て、不具合解消に取り組んだ
+ 具体的には、大学病院など導入テストをした際に、特定の条件下だと映像が読み込めなかったり、映像共有した際にアノテーション描画が反映されなかったりなどの現象が起こっていた
+ 不具合の再現条件の特定が困難で、総当たりだとキリがなかったので、開発メンバーで定期的にリファインメントを実施し、仮説を立ててテスト条件の絞り込みを行った
+ iOS開発の知見があるメンバーがCTOだけだったので、iOS開発の勉強会を実施したり、Swiftの学習会を実施して知識の補填に取り組んだ
# 発揮したバリュー
+ iOSアプリ開発はこちらのプロジェクト参画時が初めてだったのと、プロジェクト参画メンバーで過去にiOSアプリ開発の経験があったのがCTOのみだった為、積極的に疑問点や調べた内容、どのようにタスクを進めたかをesaにまとめ随時チームに情報共有をした
+ また、チームで行った環境構築会や実装方針の相談、勉強会の動画を撮り、自身で見返して復習したり、他の開発メンバーに提供してチームの理解のサポートをした
# プロジェクトの概要
+ 救急車での搬送などの緊急時に専門医が遠隔から治療/検査をサポートできる
+ 通話しながらリアルタイムで、電子カルテ・心電図・エコーなどの情報を共有できる
+ サーバーを介さないので、サーバーやデバイスにもデータが残らずセキュリティが担保されている
+ 医療機器ガイドラインを準拠(経済産業省、厚生労働省、総務省)
+ 北大病院や名寄市立総合病院などの大学病院などで順次導入されている
+ 当社CTOが開発したサービス
+ 開発チームはスクラム5人、PM1人
+ 開発環境はAmplifyで構築
+ アプリ側はSwiftを用いて、iOSフレームワークにUIKitを使用
+ バックエンド側はAmplify、Boto3、Lambdaを使用
+ データ管理はCognitoとDynamoDBを使用
+ 音声管理はTwilioを使用し、映像管理はSkyWayを使用
+ WebRTC (P2P) を採用し、端末同士が直接通信できるようになっている
# 役割
+ iOSアプリエンジニア
+ バックエンドエンジニア
# 担当した業務
+ UIの自動テストコード追加
+ テストコードのリファクタリング
+ 既存APIの追加修正
+ Boto3のコード修正、Cognito/DynamoDBの属性追加など
+ APIの修正に伴うアプリ側の表示データの修正
+ 通話をかけて「接続中」になってからバツボタンタップ時のグルグルフリーズ問題の修正
+ peerの破棄タイミングを修正
+ 映像接続問題の不具合修正
+ マルチスレッドで実行されていた関数の実行タイミングを修正
+ データ接続の責務を担っているクラスの一部リファクタリング
+ Cognitoのカスタム属性を追加・修正するMakefileターゲットの追加
# 課題
+ 開発当初は以下のような課題点があった
+ 開発メンバーが予測できていないバグや不具合が残っていたので、開発と並行してチームメンバーと相談しながら仮説を立て、不具合解消に取り組んだ
+ 具体的には、大学病院など導入テストをした際に、特定の条件下だと映像が読み込めなかったり、映像共有した際にアノテーション描画が反映されなかったりなどの現象が起こっていた
+ 不具合の再現条件の特定が困難で、総当たりだとキリがなかったので、開発メンバーで定期的にリファインメントを実施し、仮説を立ててテスト条件の絞り込みを行った
+ iOS開発の知見があるメンバーがCTOだけだったので、iOS開発の勉強会を実施したり、Swiftの学習会を実施して知識の補填に取り組んだ
# 発揮したバリュー
+ iOSアプリ開発はこちらのプロジェクト参画時が初めてだったのと、プロジェクト参画メンバーで過去にiOSアプリ開発の経験があったのがCTOのみだった為、積極的に疑問点や調べた内容、どのようにタスクを進めたかをesaにまとめ随時チームに情報共有をした
+ また、チームで行った環境構築会や実装方針の相談、勉強会の動画を撮り、自身で見返して復習したり、他の開発メンバーに提供してチームの理解のサポートをした
対応可能な時間帯
平日朝
平日夜
土曜日
日曜日
返信スピード
24時間以内
備考
平日の朝と夜、土日の朝と夜は対応可能です。土日の夜に関しては急遽予定等が入る可能性がございます。
