荻野 友登

株式会社ドワンゴ / エンジニア埼玉県

荻野 友登

株式会社ドワンゴ / エンジニア

株式会社ドワンゴで主にバックエンド・フロントエンド周りの開発をしています。

  • コンパイラのスクラッチ実装

    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 に特に興味があります。

株式会社ドワンゴの会社情報

株式会社ドワンゴ4年間

エンジニア現在

- 現在

6 人のエンジニアチームで働き、ニコニコ動画などの自社サイトに広告を表示するための基盤システムを開発・運用しています。

  • レガシーシステムを Kotlin でリプレイス

    老朽化して機能停止しかけていた既存の業務システムを Kotlin でリプレイスしました。 対象のシステムは、長い歴史のある PHP 製モノリスの中の一部でした。 依存する外部 Web API のクライアントライブラリのバージョン更新ができておらず、API バージョンの廃止に伴って機能しなくなることが見込まれました。 そこで以下のような事情から、当該部分をモノリスから切り出して実装し直すことに決まりました。 ・API クライアントのバージョンを上げるには PHP のメジャーバージョンを上げる必要があり、かなりの工数がかかる ・対象のコードは約 3,000 行ほどで、モノリスの他の部分と関係が薄い 言語選定は、API の公式クライアントライブラリが提供されている Java, .NET, PHP, Python, Ruby に限定されたため、主に以下の理由により Kotlin を選定しました。 ・比較的強力な型システムを持ち、尚且つ Java より書きやすい ・既存の Java コードとの相互運用が簡単で、チーム内で部分的に Kotlin の導入が始まっていた 実装の際はクリーンアーキテクチャに近い設計にして純粋関数の部分を増やし、ユニットテストをしやすい形にしました。これによってテストコードがリプレイス前よりも充実し、改修やライブラリのバージョン更新などが短時間で自信を持ってできるようになりました。

    -
  • TypeScript マイグレーション

    約 10,000 行のレガシーな JavaScript コードを TypeScript に完全移行しました。 対象のコードは多数のサービスに跨って利用されており、不具合が生じた場合直接ユーザー体験に影響する恐れがありました。 そこで安全に移行を進めるために、Cypress を新規導入してテストコードを大幅に拡充したり、細かな単位で段階的にリリースしたりするなどの措置を講じました。

    -

慶應義塾大学大学院修士課程

理工学研究科総合デザイン工学専攻

  • Web サービスの開発

    Angular と Firebase を用いて、SPA + サーバーレスバックエンドの構成で Web サービスを開発しました。 YouTube Live の長時間アーカイブから、短いクリップを簡単に作成して Twitter で共有できるサービスです。 https://gitlab.com/P_N_D/splicer

    -
  • Chrome 拡張機能の開発

    YouTube Live のチャットメッセージをユーザー指定の NG ワードでフィルターするための Chrome 拡張機能を開発しました。 この機能は現在 3,000 人以上のユーザーに使用されています。 https://github.com/swen128/youtube-live-chat-filter

  • Python パッケージの開発

    Twitter bot を開発していた際に、ツイートの文字数超過エラーが発生することがありました。 これを解決するためには、API リクエストの前に文字数を数える必要がありますが、ツイートの文字数カウントは独自の複雑な仕様になっていて、単純な方法では正しい値が得られません。 この辺りの事情を説明する記事を書くと同時に、Python でツイートの文字数をカウントできるパッケージを開発しました。 https://qiita.com/PND/items/17e87b8839c9099d2e70 https://github.com/swen128/twitter-text-python

  • Twitter bot の開発

    AWS Lambda, S3, DynamoDB と Serverless Framework を用いてTwitter botを作成しました。VTuberの新着動画を監視し、複数人が参加するコラボだと判定した場合にツイートします。 https://qiita.com/PND/items/1f1c880d3d56d04de61f

LAPRAS株式会社の会社情報

LAPRAS株式会社5ヶ月

機械学習エンジニア(インターン)

-

LAPRASは、SNSをクロールして集めた情報をもとに、エンジニアのダイレクトリクルーティングを支援するサービスです。

理化学研究所1年間

革新知能統合研究センター 数理科学チーム パートタイマー(インターン)

-

下記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)

慶應義塾大学

理工学部電気電子工学科



言語

  • 英語 - ビジネス会話レベル
  • 日本語 - ネイティブレベル

アプリをインストールして、知り合いの最新の活躍をフォローしよう