Portfolio ~お手製HTTPサーバ~
ZEN大学に在籍し、ソフトウェア開発を中心に幅広い技術分野を探求する学生です。特に低レイヤー技術、言語処理系、テキストエディタ、HTTPに強い関心を持ち、スキルを習得してきました。新しい技術への好奇心が強く、思い立ったらすぐに行動に移すことを信条としています。
プログラミングの奥深さに魅了され、日々の学習と開発を通じてスキルアップに励んでいます。特に、コンピュータがどのように動作するのか、言語がどのように処理されるのかといった根本的な原理への探求心が強く、低レイヤー技術や言語処理系の開発に積極的に取り組んきました。
個人での開発に加え、オンラインコミュニティでの交流や友人との共同プロジェクトを通じて、技術的な知見を深めるとともに、コミュニケーションや協調性を培ってきました。常に新しい知識を吸収し、実践的な開発経験を積むことで、将来的に価値あるソフトウェア開発に貢献したいと考えています。
概要: プログラミング言語の仕組みを深く理解するため、C言語を用いて独自のスタックベース・スクリプト言語を設計・開発しました。パーサ、バイトコードVM、基本的な制御構文(if, loop)、関数定義、ラベルジャンプ、プリプロセッサ機能などを実装しました。
取り組み: 構文設計からVM実装まで一貫して開発。デバッグや機能拡張を繰り返し実施。Scratch上でのVM実装やCanvas API連携も試行。開発過程や技術的なポイントをQiita記事で解説し、フィードバックを反映。
使用技術: C言語, (実験的にScratch)
成果・学び: プログラミング言語の設計・実装プロセス、構文解析、VMの動作原理、メモリ管理の重要性について実践的な知識を習得。技術記事執筆による知識の整理と発信力向上。
概要: 低レイヤー技術への理解を深める目的で、C言語を用いたUEFIアプリケーション開発に取り組みました。基本的なファイル操作 (ls, putc)、ファイルシステム機能、データ構造 (ハッシュテーブル) などを実装しました。
取り組み: 限られたドキュメントや資料を元に必要な情報を収集・選択し、ゼロから機能を実装。EDK IIなどの開発環境を利用。
使用技術: C言語, UEFI (EDK II)
成果・学び: コンピュータのブートプロセスやハードウェアに近い層でのプログラミングに関する基礎知識を獲得。低レイヤーデバッグの難しさと問題解決能力の向上。
概要: 実用的なツール開発を通じてプログラミングスキルを向上させるため、C・Go・Rustを用いてテキストエディタの開発を定期的に行っています。基本的な編集機能から始め、自作スクリプト言語の埋め込みなど、段階的な機能拡張を試みました。
取り組み: データ構造の検討(Gap Buffer, Rope等)、画面描画処理、入力ハンドリングを実装。C言語とRustでの実装比較を通じて、各言語の特性やメモリ管理の違いを学習。
使用技術: C言語, Go, Rust
成果・学び: 状態管理、UI設計、データ構造選択の重要性に関する理解。異なるプログラミング言語での実装経験。技術記事を通じたフィードバック活用の経験。
概要: 言語処理系の基礎を学ぶため、Brainfuck言語のインタプリタおよびC言語へのトランスパイラを開発しました。インタプリタ実装では最適化を行い、実行速度を約10倍向上させました。
取り組み: インタプリタの基本実装後、命令の最適化(連続する`+`/`-`や`>`/` <`の結合など)を実装。トランスパイラでは、Brainfuckコードを等価なC言語コードに変換するロジックを実装。開発内容をNote記事で解説。< /p>
使用技術: C言語
成果・学び: インタプリタとコンパイラ(トランスパイラ)の基本的な仕組み、コード最適化の考え方と効果を実践的に習得。言語処理技術への関心を深めた。
概要: 自身の活動記録と情報発信の場として、Webサイトを構築・運用しています。当初Svelteで開発し、その後、学習を兼ねたお手製のHTTPサーバをC言語で作成、移行しました。動的メモリ確保を用いないよう設計することで、非常に安定した運用を実現しています。
取り組み: Svelteを用いたフロントエンド開発。Cloudflare Pages/Workersでのデプロイ、独自ドメイン設定、HTTPS化、DNS管理。学習としてC言語での基本的なHTTP/1.1サーバーを実装。
使用技術: Svelte, HTML, CSS, JavaScript, C言語, Cloudflare, Git/GitHub
成果・学び: フロントエンドフレームワーク (Svelte) の利用経験。Webサーバーの基本的な仕組み、HTTPプロトコルの基礎、DNSやCDNなどのWebインフラに関する知識を習得。
概要: 分散型SNSプロトコルNostrに関心を持ち、関連ツール開発に挑戦しました。Node.jsを用いたbot開発や、Svelteとrx-nostrライブラリを用いたクライアント開発を試みました。
取り組み: Nostrプロトコルの仕様を学習し、WebSocket通信を利用したリアルタイムなイベント処理を実装。外部ライブラリ (rx-nostr) を活用した効率的な開発。自身でNostrリレーサーバーを一時的に運用した経験も含む。
使用技術: JavaScript, Node.js, Svelte, rx-nostr (ライブラリ), WebSocket
成果・学び: 分散型プロトコルの概念理解。WebSocketを用いた非同期通信プログラミングの実践。外部ライブラリの調査・活用能力の向上。
概要: 自宅サーバーやVPSを利用し、様々なサービスの構築・運用経験があります。
取り組み:
使用技術: Linux, Docker, Nginx, SSH, 基本的なネットワーク設定
成果・学び: サーバーインフラの基本的な構築・運用スキル。コンテナ技術の活用経験。トラブルシューティング能力の向上。
知的好奇心に基づき、継続的な学習と自己成長を重視しています。以下のような方法で知識やスキルを深めています。