top

概要

自社開発のソフトウェア会社で、Web、クラウド、IoT 領域のフルスタックエンジニアとして働いています。
仕事における開発言語は TypeScript で、趣味のアプリ開発では TypeScript や C# などを使用しています。

自分で使うアプリを 20 個以上製作してきました。
直近だと、自分専用のYouTubeプレイヤーや、VRで体験できる空間の構築 (Unity上のワールド製作)、クラウド上にホスティングしたミニゲームを遊べるウェブサイトなどを製作しました。
ポートフォリオページに、今までの製作物の掲載をしています。一部は GitHub にコードの公開もしています。

Web や VR、IoT、AI など、様々なソフトウェアの分野に興味を持っています。

よろしくお願いします😊

学歴

  • 東京都内の情報系大学卒業 & 同大学院修士課程修了。
  • 大学入学時はPCほぼ触ったことない & プログラム全く意味不明状態。
    自分でプログラムの課題を作って、その課題をこなす内に、プログラムの楽しさに目覚めて、授業とは別で個人的な勉強を進める。
  • 在学中に個人で簡単なゲームを数点製作。
  • その後も、仕事や趣味を問わずに、ソフトウェア開発に関わり続ける。

職歴 (近いものから順に抜粋して掲載)

Web系自社開発


バックエンド

  1. WebAPI
    WebアプリケーションのバックエンドAPIの実装と一部設計、単体テスト作成を担当しました。
    ソフトウェアアーキテクチャ設計や技術選定には関わってはいませんが、構築されたアーキテクチャの構造を常に意識して、API作成を行いました。
    クライアントアプリのリプレースだったので、C# の既存のソースコードや仕様の調査も担当しました。

    Node.js / TypeScript / Express / MySQL / TypeORM / Jest / Git / Bitbucket /
    OpenAPI (Swagger) / Docker / VirtualBox / C#

  2. PRレビュー
    バックエンドAPI実装者のPRのレビューを担当しました。
    Bitbucket 上のコメントのみだけでなく、直接の会話を通して訂正箇所の指摘などコードレビューを行い、コードの品質向上 & 維持に努めました。

    Git / Bitbucket / Microsoft Teams

  3. 海外オフショア管理
    オフショア側のブリッジSEと連携して、オフショア側が行うバックエンドAPIのチケットの管理や割り振りを行いました。
    また、APIの仕様や実装に関するオフショア側からの質問などにも適宜対応しました。

    JIRA / Bitbucket / Git / Microsoft Teams


フロントエンド

  1. 自動テスト開発
    Webアプリケーションの自動E2Eテスト開発と実施を担当しました。技術選定には関わりませんでした。
    観点項目の洗い出しなど、テストケースの設計に関しては専門のQAエンジニアに設計してもらい、その項目を達成するように、簡単なソフトウェア設計を行いテストケースごとのAPIを実装した形です。
    開発に関して、似たようなコードはツールで自動生成するなど工夫を行いました。

    Azure Functions / Selenium / BrowserStack / Windows / TypeScript / Node.js / Git

ロボット自社 & 受託開発


ロボットアプリケーション

  1. 制御アプリケーション
    カメラや、モータ、IMU、2D、3Dレーザスキャナーなど、各デバイスと通信を行って、データの取得や保存、デバイスの操作を行うアプリの新規開発を数件、リファクタリングを含めた修正を数件、担当しました。
    GUI 部分の開発だけでなく、全体の構成を把握するためにも、必要があれば、各デバイスのライブラリのソースコードも参照して、理解の把握に努めました。

    Windows / .NET / WinForms / RaspberryPi

  2. 制御 & 解析アプリケーション
    ロボット内部のデバイスや、外部の測量機器 (トータルステーション) と通信を行って、データの取得や保存、デバイスの操作を行うアプリを製作しました。
    取得したデータを GUI 上にただ表示したり、ハードディスクに保存したりするだけでなく、取得した3次元座標情報を数学的に解析したり、解析結果を印刷できる機能を有しています。

    Windows / .NET / WinForms / RaspberryPi

  3. 制御ウェブアプリケーション
    遠隔地のロボットと通信を行って、データの取得やブラウザ上への表示、ロボットの操作を行うウェブアプリを製作しました。
    ウェブアプリと通信を行う Arduino 側の開発も同時に担当しています。

    Windows / ASP.NET Core / Blazor / Arduino

  4. 閲覧アプリケーション
    タブレット端末を用いた作業で得られるデータを読み込んで、作業結果を画面に表示、閲覧することができるアプリを製作しました。

    Unity / Windows / .NET / C#


ライブラリ

  1. デバイス制御ライブラリ
    3Dレーザスキャナーや、カメラ、デバイスサーバなどのデバイスを、アプリから利用できるように、C# 用にラッパー化して、さらに使いやすいように汎用ライブラリ化しました。併せて、ライブラリの使い方を教示するためのデモアプリも製作しました。
    3Dレーザスキャナーなど、規模の大きなライブラリは、メタ言語などを使ってコードを自動生成することで、製作期間の大幅な短期化を実現しました。

    Windows / .NET / WinForms / C++/CLI

  2. 3Dライブラリ
    OpenTK (OpenGL の C# 向けラッパーライブラリ) を用いて、3D上のメッシュを簡潔に操作 (平行移動、自転、公転、拡大縮小) したり、メッシュにテクスチャを貼り付けたり、メッシュに当たり判定を付けて、マウスでクリックして選択できるようにしたりと、比較的簡単に扱える汎用3Dライブラリと、GUIコンポーネント (WinForms) を製作しました。
    CPU側 (C#) と GPU側 (GLSL) で変数の連携を取る必要があったり、マウスのクリックで3D上の物体を選択するアルゴリズムの理解と実装など、なかなかに苦労したことを覚えています。

    Windows / .NET / WinForms / OpenTK / OpenGL

  3. フュージョンライブラリ
    IMU から取得した加速度、角速度、地磁気をセンサーフュージョンして姿勢を算出するオープンソースの C 言語ライブラリを、C# と Python に移植しました。
    併せて、精度検証用のデモアプリも製作しました。

    Windows / RaspberryPi / C# / Python


その他

  1. 社内向けツール
    クラウドと連携する簡易ファイル操作ツールや、機械学習用のための画像表示ツールなど、数点の社内向けアプリを製作しました。

    Windows / .NET / WinForms

  2. マニュアル
    製作したロボットアプリケーションなどの、社内、社外用簡易マニュアルを製作しました。

  3. 導入サポート
    ロボットを導入する顧客に対して、ロボットの実演や説明などの導入サポートを行いました。

  4. 展示会
    技術側の説明担当として国際ロボット展などの複数の展示会に参加しました。

スキル

資格

  • 基本情報技術者
  • 応用情報技術者
  • TOEIC 865点
  • 実用フランス語技能検定 3級

プログラミング言語

  1. C、C++
    ロボット制御用の Arduino プログラムをスクラッチで開発して、ステッピングモータ制御やリミットスイッチの状態取得などを行った経験があります。
    開発環境の DevkitPro を使って、ニンテンドーDS (ARM7、ARM9) 上で動作する簡単なアプリを数点、製作したことがあります。

  2. C++/CLI
    C# から扱えるように、ネイティブ C++ のライブラリを C++/CLI でラッパー化した経験があります。

  3. C#
    ロボット制御アプリ (WinForms) をスクラッチからの開発で数点、リファクタリングを含めた修正を数点、行った経験があります。
    アプリ側から使える、2D、3Dレーザースキャナなどの汎用ライブラリをスクラッチで製作した経験があります。
    C# で書かれた大規模なアプリケーションを読み込んで、多言語にリプレースした経験があります。
    私的に、小規模なアプリ (WinForms or WPF、MAUI など) を10個以上製作しています。

  4. HTML、CSS、TypeScript、JavaScript、Node.js
    Webアプリケーションのバックエンド側 WebAPI を、Node.js、TypeScript で開発した経験があります。
    ロボット制御に、Blazor アプリ (ASP.NET Core) をスクラッチで開発した経験があります。
    Azure Functions と Selenium を使った自動E2Eテストプログラムの開発の経験があります。
    私的に、Next.js、Nuxt.js で、本サイトを含む複数のサイトを製作した経験があります。

  5. Python
    ロボット制御用の RaspberryPi プログラムの修正を行ったことがあります。

  6. Dart
    私的に、AndroidOS、iOS アプリケーションを製作した経験があります。

  7. Shell
    Linux 上で操作するコマンドのバッチファイルなど、シェルスクリプトを製作した経験があります。

フレームワークなど

  1. OpenTK (OpenGL)
    汎用的な3Dライブラリの設計と、GUIコンポーネントの製作をした経験があります。

  2. OpenCV
    ウェブカメラのリアルタイム映像を表示するアプリを製作した経験があります。

  3. Unity
    3Dデータを閲覧するための簡単なビューワーアプリを製作した経験があります。
    Windowsアプリの3Dコンポーネントを設計・実装する際などにも、Unityを参考のために調査した経験があります。
    私的に、VR上で体験できるワールド空間を製作した経験があります。ワールドは現在稼働していて、ユーザーの方に活用してもらっています。

  4. React、Vue、Next.js、Nuxt.js、Express、Nest.js
    私的に、本サイトを含む複数のサイトを製作したときに、これらのフレームワークを利用した経験があります。

  5. Tailwind CSS、Bootstrap
    私的に、ウェブサイトの構築などで、これらの CSS フレームワークを利用した経験があります。

  6. Flutter
    私的に、AndroidOS、iOS アプリケーションを製作した経験があります。

  7. その他
    他にも、ポートフォリオで、扱ったフレームワークやライブラリを簡潔に紹介しています。

データーベース

  1. MySQL、PostgreSQL
    バックエンドからサービスのデータにアクセスするために SQL や O/R マッパー経由で取り扱った経験があります。
    私的に、ウェブサイトを構築したときに、データの保存先として利用した経験があります。

  2. NoSQL
    業務で短期間の間ではありますが、Azure Cosmos DB の操作経験があります。

インフラ・環境構築

  1. Docker
    ローカルでの開発環境構築のために、Docker を使った経験があります。
    私的に、複数のコンテナを相互に連携させて、一つのサイトとして構築、運用した経験があります。

  2. WSL
    私的に、クラウドの実環境と同様の環境を実現するために、WSL を普段から使用しています。
    WSL 上に Docker 環境を構築して、様々なテストをしたりしています。

  3. Hyper-V、VirtualBox
    開発したアプリケーションのテストなどで利用した経験があります。
    Docker では Windows の環境構築はできないので、そのようなケースで使用しています。

  4. AWS、Azure、GCP
    業務・私的を含め、ウェブサイト構築でいくつかのサービスを利用したことがあります。

その他

  1. アルゴリズムとデータ構造
    アプリの処理速度を考慮する上で、適切なデータ構造を選択できるように心掛けています。
    私的に、整列アルゴリズム、探索アルゴリズム、文字列探索アルゴリズム、動的計画法などの基本的なアルゴリズムを、C# で実装したことがあります。
    同じく私的に、優先度付き待ち行列やリングバッファなど、 C# で利用できなかったデータ構造を実装したことがあります。

  2. 数学的知識
    コード上で、三角関数やベクトル、クォータニオン、行列などを扱って、ロボットが計測したデータを解析したり、汎用的な3Dコンポーネントを製作したりと、数学的知識を使って目的を達成した経験があります。

  3. アーキテクチャー
    オブジェクト指向の基礎 (クラス、カプセル化、継承、多態性) を、一通り理解して、設計・実装できます。
    一部のデザインパターンを理解し、実装したことがあります。
    リアクティブプログラミングをある程度理解し、実装したことがあります。

作ったもの