Developer Portfolio(仮)

石本 幸士

Location: Kyoto, Japan GitHub: @dowdiness

自分がやりたいこと

Ink&Switch や Future of Programming Lab が取り組んでいるような、開発者体験そのものを進化させるプログラミング環境やツールの研究・実装に関心があります。 「プログラムをどのように表現し、どのように編集・共有できるか」という課題に向き合い、コンパイラや分散システムなどを通して「人とコンピュータのインタラクション」の改善というテーマに取り組んでいます。

目指しているもの

EG-walker

複数人で同時に編集してもデータが壊れない仕組み(CRDT)を用いたライブラリを自作し、その上でラムダ計算をリアルタイムで共同編集できるエディタを開発しています。論文を読み、アルゴリズムを理解した上で、実際に動くソフトウェアとして実装し、UIまで含めて1人で作成しています。

やるべきこと

  • アプリのスクリーンショットを取ってまとめたポートフォリオづくり
  • 職務経歴書と技術経歴書の作成

友達と一緒に話しながらメモを取ってもらい、それを元にChatGptに紹介としてまとめてもらったもの

プログラムの魅力を「ユーザーの入力が変換され、コンピューターから即座にフィードバックが返る“インタラクティブさ”」に見出し、インタラクション設計を軸にエンジニアリングに取り組んできました。大学時代にMax/MSP/Jitterでメディアアート制作に挑戦したことを原点に、より複雑さを扱える思考法として関数型(Haskell)に触れ、宣言的な設計志向を確立。以降はVue.js/Reactへと関心を広げ、ユーザー体験を中心に据えたプロトタイピングと改善を強みとして、目的に向けて「動くものを育てる」開発でプロジェクトに貢献します。

「入力が変換され、すぐ反応が返る」──そのインタラクティブさに惹かれてプログラミングを始めました。Max/MSP/Jitterでの表現制作を原点に、Haskellで宣言的・関数型の考え方を身につけ、Vue/Reactへ。状態や副作用を整理し、意図が読み取れる実装で、体験を素早く形にして磨き込むことに強みがあります。

最初のプログラミング体験は、大学時代のMax/MSP/Jitterによるインタラクティブなメディアアート制作でした。静的な鑑賞ではなく、入力によって振る舞いが変わり、コンピューターからフィードバックが返る——その往復が面白く、「育っていく」ものとしてプログラムを作り続けてきました。複雑さが増えるほど手続き的な実装は見通しを失いやすいと感じ、Haskellで宣言的・関数型の思考に触れて以降は、状態とデータフローを明確にしながらVue/ReactのUI開発へ。プロトタイプから目的の完成形へ近づける推進力で貢献します。

案1(職務要約として一番使いやすい)

プログラムの魅力を「入力が変換され、即座にフィードバックが返るインタラクティブさ」に見出し、体験を中心としたプロダクトづくりに取り組んできました。大学時代のMax/MSP/Jitterでのメディアアート制作を原点に、Haskellで宣言的・関数型の思考を身につけ、Vue.js/Reactへと関心を広げています。近年は、PyCon公式サイトやZINE制作プロジェクト「弱いzine」へのボランティア参加に加え、ラムダ計算エディターや、React Flowを用いたブラウザ上のシンセサイザー「フローサウンド」などの個人開発を継続。ユーザーの操作に対して気持ちよく反応するUI設計と、状態・データフローを見通しよく保つ実装を強みに、フロントエンドエンジニアとして業務でも価値提供していきたいと考えています。

案2(短め・読みやすい)

インタラクティブな体験づくりを軸に、フロントエンド開発へ取り組んできました。Max/MSP/Jitterでの制作を原点に、Haskellで宣言的な設計思想を学び、現在はReactを中心に個人開発・コミュニティ活動を継続しています。PyCon公式サイトや「弱いzine」へのボランティア参加、ラムダ計算エディター、React Flowを用いたブラウザシンセ「フローサウンド」などを通じて、操作感と実装の見通しを両立させるUI開発を強みとして磨いてきました。今後はフロントエンドエンジニアとして、業務でもこの強みを活かしていきます。

案3(ツール志向を強める:リッチなUIに寄せる)

ユーザー操作に対して即時に反応し、触って理解できる“リッチなツール”をWeb上で実現することに関心があります。Max/MSP/Jitterでのインタラクティブ作品制作を原点に、Haskellで宣言的・関数型の考え方を吸収し、現在はReactを中心に開発しています。PyCon公式サイトや「弱いzine」などのボランティア活動に加え、ラムダ計算エディター、React Flowを用いたブラウザシンセ「フローサウンド」などの個人開発を継続。体験設計から状態管理・コンポーネント設計まで一貫して組み立て、目的の完成形へ育てていく推進力を武器に、フロントエンドエンジニアとして業務でも貢献していきたいと考えています。

Githubのデータを元にAIに作らせたプロフィールを改修したもの

価値観

  • コンテキストの共有を重視し、相手が理解しやすい形でコミュニケーションを取ることを心がけています
  • 外国語学習を通じて、日本語圏では出会えない知識や人々と繋がることに価値を感じています
  • 技術の本質的な理解を追求し、基礎から応用まで幅広く学ぶことを大切にしています

スキルセット

興味関心

  • フルスタックなウェブ開発
  • コンパイラ、型システム、Structure editor
  • 自作言語に興味があります
  • 形式手法(formal methods)、特にLeanTLA+のような証明の出来るシステム
  • 日常的に英語の本を読んだりポッドキャストを聞いています TOEIC 840点 中国語も趣味でやっています

プログラミング言語

  • 主に使っている言語: TypeScript, Ruby
  • 一番書いたことのある言語はTypeScriptです。現在は参加していませんが、ECMAScript 仕様輪読会にてECMAScriptの仕様を読んでいました。JavaScriptの仕様には詳しい方だと思います。
  • RubyはRailsでのバックエンドのコードと、簡単なスクリプトや競技プログラミングに参加する際に使っていました。
  • 興味のある言語: ReScript、MoonBit、Haskell、Rust
  • 関数型言語が好みかつ、静的型付言語の方が得意です。コンパイラやプログラミング言語の理論に興味があります。趣味のコンパイラ開発やPoCとしてアイディアを試す際にはHaskellなど関数型言語を使っています。

フロントエンド

  • UI Library: React、 Vue.js、 Alpine.js
  • FrameWork: Next.js、 Nuxt.js、 Astro.js
  • Tools: Vite、typia、tailwindcss、

Reactを使ったフロントエンドの開発が得意です。Reactのコンポーメントのレンダーやエフェクト、状態管理のライフサイクルの仕組みに関する理解、React内部の状態と外部に持っている状態との連携などには自信があります。使い勝手やシンプルさなどを考慮するとフロントエンドの開発にはReactが一番適していると思っています。

デザインやユーザーにとっての使いやすさを考えるのが好きです。待ち時間が発生しない軽いサイトになるように、コード量の削減や遅延ロードなどサイトを重くしない工夫は常に意識しています。コンパイラの勉強をしていることもありバンドラーに仕組みにも詳しいです。

静的サイトやJS側のロジックの少ないサイトの場合は、Astro.jsとAlpine.jsも選択肢に入れています。

バックエンド

  • Node.js、Ruby on Rails、PostgreSQL
  • TypeScriptを使ったフルスタック開発に興味があります。
  • フロントエンドに比べるとバックエンドの知見が少ないので、Jamstack寄りの構成を選びがちです。

取り組んでいるプロジェクト

Lambda Calculus CRDT Editor

https://github.com/dowdiness/til/tree/main/crdt

tapl-rescript

JavaScript/ReScript

  • 「Types and Programming Languages(型システム入門)」の実装をReScriptで行うプロジェクトです
  • 2023年から2024年までTAPL.tsにて、型システム入門の輪読会に参加していました
  • LLVM IRへとコンパイルするλ計算のコンパイラを自分で実装することにより、理論として学んだことの実践をしています
  • まだまだ未完成なところも多いですが NPM Package として公開しています
  • Moonbitを試してみたいと思い書き換えたバージョンを現在作っています

twitter-clone

Nuxt.js, Firebase

  • FirebaseとNuxt.jsを使用した簡易的なSNSアプリです
  • フルスタックWeb開発のスキルを実証
  • 少し内容が古いかもしれません

https://github.com/dowdiness/flow-sound/tree/main

https://github.com/dowdiness/til/tree/main/audiocontext-vite

デザイン

pycon.jp 2020 公式サイト

Vue, Nuxt.js, tailwindcss

  • GitHub
  • Pycon.jp 2020 の公式サイト制作に関わりました。
  • 主に私とpapi-tokeiで作成しました。
  • 私はNuxt.jsのセットアップやサイト全体のラフなデザインをしています。イベントのイメージカラーやサイトのデザインのイメージなどが決まるよりも先に制作を始めており、後に詳細が決まった際に対応できるような枠組み作りをしました。

yowai-zine

TypeScript, Gatsby

  • GitHub
  • 「こころおきなく居られるweb zine」
  • 友人と一緒に趣味として作った同人的なWeb雑誌です

📝学びの蓄積

MainVault

  • Obsidianを使用して学んだことをメモとして後から見直せるように管理しています
  • 必要な場合には、Quartzにより記事として公開する仕組みも作っています

Interests & Learning Focus

Current Focus

  • Compiler Design: コンパイラの設計と実装
  • Type Systems: 型システムの理論と実践
  • Computer Science Fundamentals: CS基礎の深い理解
  • Operating Systems: OSの内部構造の学習