慶應義塾大学大学院修士課程 / 理工学研究科総合デザイン工学専攻
Web サービスの開発
Angular と Firebase を用いて、SPA + サーバーレスバックエンドの構成で Web サービスを開発しました。 YouTube Live の長時間アーカイブから、短いクリップを簡単に作成して Twitter で共有できるサービスです。 https://gitlab.com/P_N_D/splicer
400万人が利用する会社訪問アプリ
株式会社ダイニー / SWE (Platform Team)
株式会社ダイニーの Platform Team でエンジニアをしています。
Rust と低レイヤー技術を同時に学ぶことを目標として、コンパイラをゼロから Rust で実装しました。 https://github.com/swen128/compiler-course 一般公開されていた大学の講義ノートを基にして、LISP 系の動的型付け言語である Racket のコンパイラを実装しました。 https://www.cs.umd.edu/class/fall2023/cmsc430/Notes.html このコンパイラは x86-64 をターゲットとしていて、以下のような機能を持っています。 ・int, bool, char, list, box, vector, symbol のデータ型を扱う ・変数定義 ・関数定義 ・ラムダ式、再帰関数、末尾再帰最適化 ・パターンマッチング その後、上記の講義では触れられなかったトピックに興味が湧き、書籍 "Modern Compiler Implementation in ML" を読みながらもう一つのコンパイラの実装を進めました。 https://github.com/swen128/compiler-book 静的型チェックや中間表現、レジスタ割り当てを初めとして、より発展的な内容を数多く学ぶことができました。 また、エラーハンドリングに拘って panic を出さない方針で実装したことが影響し、普段の開発でもより堅牢なコードを書く意識が強まりました。
高い非機能要件が求められるなど、技術的な専門性を磨けるような仕事をしたいと考えています。 Rust や TypeScript に特に興味があります。
老朽化して機能停止しかけていた既存の業務システムを Kotlin でリプレイスしました。 対象のシステムは、長い歴史のある PHP 製モノリスの中の一部でした。 依存する外部 Web API のクライアントライブラリのバージョン更新ができておらず、API バージョンの廃止に伴って機能しなくなることが見込まれました。 そこで以下のような事情から、当該部分をモノリスから切り出して実装し直すことに決まりました。 ・API クライアントのバージョンを上げるには PHP のメジャーバージョンを上げる必要があり、かなりの工数がかかる ・対象のコードは約 3,000 行ほどで、モノリスの他の部分と関係が薄い 言語選定は、API の公式クライアントライブラリが提供されている Java, .NET, PHP, Python, Ruby に限定されたため、主に以下の理由により Kotlin を選定しました。 ・比較的強力な型システムを持ち、尚且つ Java より書きやすい ・既存の Java コードとの相互運用が簡単で、チーム内で部分的に Kotlin の導入が始まっていた 実装の際はクリーンアーキテクチャに近い設計にして純粋関数の部分を増やし、ユニットテストをしやすい形にしました。これによってテストコードがリプレイス前よりも充実し、改修やライブラリのバージョン更新などが短時間で自信を持ってできるようになりました。
約 10,000 行のレガシーな JavaScript コードを TypeScript に完全移行しました。 対象のコードは多数のサービスに跨って利用されており、不具合が生じた場合直接ユーザー体験に影響する恐れがありました。 そこで安全に移行を進めるために、Cypress を新規導入してテストコードを大幅に拡充したり、細かな単位で段階的にリリースしたりするなどの措置を講じました。
Angular と Firebase を用いて、SPA + サーバーレスバックエンドの構成で Web サービスを開発しました。 YouTube Live の長時間アーカイブから、短いクリップを簡単に作成して Twitter で共有できるサービスです。 https://gitlab.com/P_N_D/splicer
YouTube Live のチャットメッセージをユーザー指定の NG ワードでフィルターするための Chrome 拡張機能を開発しました。 この機能は現在 3,000 人以上のユーザーに使用されています。 https://github.com/swen128/youtube-live-chat-filter
Twitter bot を開発していた際に、ツイートの文字数超過エラーが発生することがありました。 これを解決するためには、API リクエストの前に文字数を数える必要がありますが、ツイートの文字数カウントは独自の複雑な仕様になっていて、単純な方法では正しい値が得られません。 この辺りの事情を説明する記事を書くと同時に、Python でツイートの文字数をカウントできるパッケージを開発しました。 https://qiita.com/PND/items/17e87b8839c9099d2e70 https://github.com/swen128/twitter-text-python
AWS Lambda, S3, DynamoDB と Serverless Framework を用いてTwitter botを作成しました。VTuberの新着動画を監視し、複数人が参加するコラボだと判定した場合にツイートします。 https://qiita.com/PND/items/1f1c880d3d56d04de61f
下記2件の研究ワークショップでポスター発表を行いました。 * NUS SoC – RIKEN AIP Workshop on Artificial Intelligence (http://aip.riken.jp/news/nussoc_jointws/) * The First Japan-Israel Machine Learning Workshop (https://polarified.wixsite.com/jiml2018)
慶應義塾大学大学院修士課程 / 理工学研究科総合デザイン工学専攻
Angular と Firebase を用いて、SPA + サーバーレスバックエンドの構成で Web サービスを開発しました。 YouTube Live の長時間アーカイブから、短いクリップを簡単に作成して Twitter で共有できるサービスです。 https://gitlab.com/P_N_D/splicer