万灯 あお

万灯 あお

Portfolio

About Me

万灯あおと申します。現在、通信大学にて経済学を学んでいます。独学でソフトウェア開発やデータ分析を学び、身の回りの課題をプログラミングで解決する個人開発を重ねてきました。「自ら課題を発見し、文献や技術ドキュメントを調査して解決に導く」というこれまでの経験を活かし、今後はプロのエンジニアとして、ユーザーやビジネスの課題を技術で解決していきたいと考えています。

Skills

個人で使った経験あり

Python, GitHub, Astro

学習中

Java

資格

基本情報技術者試験(2024年), ITパスポート(2021年), 簿記3級(2020年)

Projects

「小説家になろう」のAPI入門書『初心者のためのなろう小説API入門 Pythonで作るデータ活用法』

初心者のためのなろう小説API入門は、小説家になろう公式が公開しているAPIをPythonで利用する方法について紹介した商業書籍です。インプレス NextPublishing様より同人誌を種本とした本書籍を発行させていただきました。

使用技術と選定理由

  • [プログラミング言語] Python
    選定理由: 実行環境をGoogle Colaboratoryにすることで、初心者でもソースコードの実行を容易にするため。
  • [執筆ツール] Re:VIEW, VScode
    選定理由: (Re:VIEW)本文とデザインを分離するため。(VScode)拡張機能で校正ツールを導入するため。
  • [バージョン管理] Git / GitHub
    選定理由: ファイルの共有と校正の過程を残すため。

設計・実装の工夫

  • 【すべてのAPIを紹介】小説家になろうの公式APIは全部で5つあります。公式のサンプルコードは1つのAPIを紹介するのみ、かつPHPで書かれています。そこで、すべてのAPIにPyhonのサンプルコードを用意しました。
  • 【初心者への配慮】小説を書いたことはあるけど、プログラミングは初めてという人に向けて、簡単にプログラミング知識をつけてもらう章を用意しました。また、紹介するソースコードも新機能を段階的に増やすことで一度に学習しなければならない要素を減らしました。

自動総ルビソフト『ルビ振りくん』

ルビ振りくんは、自動でテキスト内のすべての漢字にルビを振るソフトウェアです。手間のかかる総ルビを自動化できるようにしました。

使用技術と選定理由

  • [プログラミング言語] Python
    選定理由: 漢字に対応するルビを取得するために、形態素解析ライブラリGiNZAを使うため。
  • [GUI・画面設計] Python (Tkinter / tkinterdnd2)
    選定理由: (Tkinter)軽量でクロスプラットフォームに対応しているため。(tkinterdnd2)ドラッグ&ドロップ(D&D)操作により、フォルダを開いてファイルを選択させるという手間をなくすため。
  • [自然言語処理・ロジック] GiNZA (spaCy) / SudachiPy / jaconv
    選定理由: (GiNZA)日本語形態素解析により漢字の読みを文脈から抽出するため。(jaconv)GiNZAは読みがカタカナで出力されるためひらながに直すため。
  • [システム・データ操作] Python (csv / subprocess / webbrowser)
    選定理由: ユーザー辞書のCSV保存、出力ファイルの自動フォルダオープン、ブラウザでのHTML表示確認など、ユーザーの利便性を高める機能を実現するため。
  • [ビルド] Python(PyInstaller)
    選定理由: Python環境が構築されていない一般的なPCユーザーでも使用できる単体実行ファイル(.exe)として配布するため。

設計・実装の工夫

  • 【漢字と読みの境界判定ロジック】形態素解析で取得した「読み」と「元の文字列」から、漢字部分のみを抽出し、正確な位置にルビ記法(|生《い》き|甲斐《がい》)を挿入するアルゴリズムを自作・実装しました。
  • 【3種類のルビ記法に対応】有名な文章投稿サイトのルビ記法に対応するため、3種類のルビ記法を用意しました。これにより、小説家になろう、カクヨム、ハーメルン、note、青空文庫、pixiv、HTMLなどでルビを振れるようにしています。
  • 【ルビの確認機能】ルビ記法が振られた文章は非常に読みづらいため(例:|取《と》り|入《い》れる)、HTMLのルビ機能を活用しルビのチェックが行いやすいようにしました。

個人サイト

自身の制作物をまとめ、活動に興味を持ってくださった方に分かりやすく伝えるためのWebサイトです。ユーザー目線では、表示速度とアクセシビリティ(見やすさ・使いやすさ)を考慮し、開発者目線では、コストの削減を意識して設計・構築しました。

使用技術と選定理由

  • [フロントエンド] Astro / HTML / CSS
    選定理由: 静的サイト生成(SSG)による高速なページ表示を実現し、コンポーネント単位での効率的な開発を行うため。
  • [デザイン] デジタル庁デザインシステム
    選定理由: あらゆるユーザーが閲覧しやすいよう、アクセシビリティの高いUI/UXのベストプラクティスを取り入れるため。
  • [インフラ・CI/CD] Cloudflare Pages
    選定理由: コンテンツを高速に配信するため。また、他の無料ホスティングサービスと比較して商用利用可能・トラフィック無制限のため。
  • [ドメイン管理] Cloudflare Registrar
    選定理由: 取得済みの独自ドメインとホスティング(Pages)のDNS連携を、同一プラットフォーム上で一元管理するため。

設計・実装の工夫

  • 【アクセシビリティを意識したUI実装】デジタル庁デザインシステムのコンポーネントを利用することでアクセシビリティの高いデザインを実現し、CSSの利用コストを抑えました。
  • 【低コストのサイト運営】Cloudflareエコシステム(Registrar + Pages)を利用することで、サイトの開設・運用コストを削減しました。コストは、年間10ドルのドメイン料金しか掛かっていません。

Contact

お問い合わせはできるだけメールからお願いいたします。