職務経歴書
私について
table:学歴
2016年4月 仙台高等専門学校 情報システム工学科 入学
2017年9月 仙台高等専門学校 退学(1年次修了、2年次中退)
2017年10月 私立N高等学校 ネットコース 2年次 編入学
2019年9月 私立N高等学校 卒業
table:プログラミング経験
2011年ごろ プチコンで BASIC を始める
2012年ごろ なでしこでウェブチャットのクライアントやBotを作る
2013年ごろ PHP で Wiki を作る
2014年ごろ PHP でブログを作る
2016年ごろ PHP で2ちゃんねる互換の掲示板を作る
2016年 高専の授業で Ruby on Rails による簡単なウェブアプリケーションを作る
2017年ごろ Python で簡単なスクリプトを書き始める
2017年11月 株式会社インフィニットループ 仙台支社でアルバイトとして働き始める
2017年12月 アルバイトでYAMAHA RTX1200 でルーティングやフィルター、VPN なとの設定について一通り学習する
2018年前半 アルバイトで Slack API を利用した Bot やツールを作る
2018年7月ごろ アルバイトで Ruby on Rails で書かれた OSS なウェブアプリケーションにコントリビュートを行う
2018年9月より アルバイトで PHP+JavaScript なウェブアプリケーションの開発プロジェクトに参加する
2019年7月末 株式会社インフィニットループ 退職
2020年4月 株式会社NEOPA 正社員 入社
2022年8月 株式会社NEOPA 退職
2022年9月 株式会社はてな 入社
作ったもの
CWSKK - Chrome OS 向け日本語入力ソフトウェア https://scrapbox.io/files/6268cc17aa312a001ea34722.gif
Chrome OS 向けながらも変換エンジンなどは Chrome の機能に依存せず、一般的なブラウザで動くように Web 標準技術のみを使うようにしています
変換周りは一通り対応済み、送りありのスムーズな確定処理・IndexedDB による大きな辞書の対応を検討中です
変換エンジンは TypeScript、テストページなどは React です
https://scrapbox.io/files/62afd8cc228d9900233eb804.gif
Google Drive に保存した画像を検索するツールです
ファイル名やメタデータ以外にも Google による OCR のテキストでも検索可能です
公式の検索ページよりもシンプルでスムーズに使えるのを目指しています
Google Drive の API 申請に動画などを用意する必要があり、一般向け公開は調整中です
構成は TypeScript + React + material-ui の SPA です
Recognizer - TODO リストツール
https://scrapbox.io/files/62afd9b2b12e8b0023fbc9f3.png
チェックリストを主体とした TODO ツールです
航空機の MFD を参考に、シンプルながらも見やすい UI やキーボードによるスムーズな操作を実現しました
チェックリストの項目は入れ子にする事もできます
構成は Laravel + Vue.js の MPA です
https://ikapri.rokoucha.workers.dev/rokoucha#.svg https://stat.ink/@rokoucha
Cloudflare Workers を使ってみたかったので試しに作りました
フォント等を埋め込んでいない SVG による描画なので環境毎に見た目が大きく変わるのが課題です
構成は Cloudflare Workers + TypeScript です
kuroneko-tracker-feed - 宅配便の追跡データをフィード化
https://scrapbox.io/files/62afdd616c79f2001d60a399.png
ヤマト運輸の荷物追跡データを RSS フィードに変換するツールです
厳しい実行時間制限と DOM を使えないという制約のなか、どうにか HTML をパースしてフィードを生成しています
構成は Cloudflare Workers + TypeScript です
ilmestys - GitHub の通知をフィード化
https://scrapbox.io/files/62afdeacfbd395001d85e7db.png
GitHub の Notifications 欄を RSS フィードに変換するツールです
メール通知は使い勝手が悪いのでどうにか別な方法で確認できないかと思い作りました
GitHub のモバイルアプリが来たので御役御免かと思ったもののあまり通知周りの使い勝手がよくないので書き直しそうと検討しています
構成は Vercel + TypeScript です
Scienest - 個人用 CMS
絶賛開発中の個人用 CMS です
Scrapbox を使っていて自分と合わなかった部分や思想を改善しようと実装を進めています
ブログ・Wiki・ホームページ・日記の一元管理を目指し、柔軟な閲覧スコープやシンプルなタグ機能などを実装中です
いつの日かこの Scrapbox と使っていないブログを置き換える予定です
構成は TypeScript + Next.js + Fastify + Prisma です
https://pbs.twimg.com/media/FRBuVc3aQAA4Cr7.jpg
手のひらサイズに各種センサ(温度・湿度・気圧・二酸化炭素)と制御用マイコンを詰め込んだデバイスです
ESP32 の機能をフル活用し、1台でセンサの制御からメトリクスの送信までが完結しています
外部接続は電源のみで、メトリクスの送信も Wi-Fi 経由なので他に PC などを用意する必要もありません
メトリクスは InfluxDB に保存し、Grafana で解析・表示しています
コントリビューションしたもの
コミュニティ向け SNS クライアントのリファクタリング
Parcel の Handlebars プラグインのバグ修正
Togelack の機能追加とバグ修正
書いた記事
自分が開発をする時に考えていること・大切にしていることをまとめました
BBIX 社が提供する、国内唯一の IPv4 over IPv6 トンネリング技術について調査をしました
某 Discord サーバーで日夜続いているしりとりについて解析しました
正しいクエリのはずなのに結果がおかしくなる事があったので何故おかしくなるのか調査しました
Twitter などで定期的に話題になる問題について啓蒙の意を込めて何故駄目なのかについてまとめました
UNIVERGE IX シリーズは RDNSS に対応していますがインターネットでは使えないという古い情報ばかり出てきたので最新の設定について調査しました
TypeScript のデコレータに潜む罠にまんまと嵌ってしまったので、備忘録としてまとめました
SECCON Beginners CTF 2022 に参加したので write up を書きました
アルバイトで一体何をしていたのかについて会社の技術ブログに掲載していただきました
仕事でやったこと
株式会社インフィニットループ (アルバイト)
ブラウザベースの業務システム開発 2018年8月 - 2019年7月
複数の機器や上位システムとの連携が必要になるミッションクリティカルな業務システムの開発をしました。
主に実装を担当しましたが、仕様のレビューなども行いました。
また、機能不全に陥っていたユニットテストの整備や各種リファクタリングなど、持続可能な開発を実現する為の様々な施策を提案・実行しました。
フルスタックエンジニア 2017年11月 - 2018年8月
フルスタックエンジニアとして、チャットボット開発やイントラネットで動いている OSS への貢献、LAN 配線の設計と施工などを行いました。
株式会社NEOPA (正社員)
イベント管理システムの開発 2022年2月 -
既存のイベント管理システムのリプレースをしています。
バックエンドとインフラの一部を担当しています。
ニュースサイトの開発 2022年2月 - 2022年4月
既存のニュースサイトのリプレースとして新しいニュースサイトを開発しました。
AWS のサーバーレスサービスをフル活用し、インフラコストを抑えるとともに開発効率の向上に取り組みました。
バックエンドとインフラを担当しました。
人流解析システムの実証実験アプリケーションの開発 2021年8月 - 2022年2月
公共交通期間の利用数や各地点から主要な施設への移動手段や移動時間・流入流出量などの統計処理をし、グラフやマップへのオーバーレイ表示などをするアプリケーションの開発をしました。
Nest.js と Prisma によるバックエンドの開発と、フロントエンドの開発支援を担当しました。
機械学習による旅行先提案の実証実験アプリケーションの開発 2021年5月 - 2021年8月
各種アンケートを元に機械学習による旅行先の提案をする実証実験に使うアプリケーションを Nuxt.js で開発しました。
基本的な API 周りや、機械学習システムとの連携、Geolocation API 対応などを担当しました。
求人募集サイトの開発 2020年8月 - 2021年4月
求人募集サイトをフルスクラッチで開発しました。
諸事情によりテンプレートエンジンでの開発でしたが、ビルドシステムの工夫や各種 CI の導入で開発効率の向上に努めました。
Express.js と TypeORM によるバックエンドを主に担当しましたが、フロントエンド周りの環境整備や軽微な画面開発も対応しました。
クラウドファンディングサイトの保守 2020年4月 - 2020年10月
Ruby on Rails で構築されたクラウドファンディングの保守をしました。
主に UI デザインの改修やバグ修正など中心に対応しました。
権利管理システムの開発 2020年5月 - 2020年8月
権利者・利用者を結び、権利の処理や権利者への支払いまでが1つのシステムで完結するシステムの開発に従事しました。
複雑な画面遷移や外部の決済システムとの連携などを含む、 Ruby on Rails と Nuxt.js による開発を担当しました。
使ったことのある技術
HTML
個人で10年、仕事で3年
セマンティック HTML とアクセシビリティを心掛けながら書いています
CSS
個人で4年、仕事で3年
JavaScript / TypeScript
個人で4年、仕事で3年
React
個人で3年
Vue
仕事で2年
Python
アルバイトで1年
Flask や Pandas、matplotlib などを使ったことがあります
Ruby
仕事で1年半
Rails
仕事で1年半
Go
個人で少し
C
学校と個人で少し
C++
個人と部活でちょっと(競プロ)
PHP
個人で2年
仕事で1年
Linux
仕事で3年、個人で10年程度
有名なディストリビューションは殆ど使った経験があります
Ubuntu
Debian
Fedora
Fedora CoreOS
CentOS
Amazon Linux
Arch Linux
Gentoo
Docker
仕事で3年、個人で4年
Podman も使っています
Git
仕事で3年、個人で5年
AWS
仕事で1年
Terraform による IaC も少しだけ経験があります
AWS Amplify で苦しめられた経験があります
CI/CD
GitLab CI と GitHub Actions を仕事で2年
アジャイル
スクラムをアルバイト時代のプロジェクトで経験しています
毎週のふりかえりで KPT の確認をしたり、プランニングポーカーで見積りをしたりしていました
テスト
仕事で2年
PHPUnit と Jest の経験があります
よくモックを使って単体テストを書いています
定期的にカバレッジを取って漏れたテストを補充したりしていました
興味があること
ネットワーキング技術
ルーティング
BGP
SRv6
IPv6
コンピュータサイエンス
アルゴリズム
型
コンパイラ
人間工学
デザイン
法律関係
オープンソースライセンス
著作権法
資格
英検3級(2015年)
大事にしていること
プロダクトの価値を高める
価値を高める機能の提案やユーザー目線での使い勝手を常に考えています
レビューやテストを積極的に導入しコード品質の向上を心掛けています
プロダクトが腐っていかないように定期的なリファクタは勿論のこと保守性の向上に取り組んでいます
持続可能な開発環境
たとえ自社での開発を断念しても他社や OSS として開発を続けられるように開発環境を整えています
テストの自動化や CI/CD の導入でコード品質を低下させないようにしています
コードが属人化しないよう積極的にドキュメントを残しています
連絡先等
work (at) rokoucha.net へメール
電話(番号は非公開です)