概要
青空文庫 を元にして、機能追加およびUI改善したポートフォリオを作成。
公開URL
ポートフォリオ
[閉鎖 2021/12/15]
http://52.14.255.136/
GitHub
目的
青空文庫は、数多くの著作権切れの本を無料で公開している。
私は、このサイトで著名な作家(ex: 夏目漱石, 江戸川乱歩)の本を読んでいる。
その事により、面白さおよび教養を得られた。
しかし、利用していて、使いづらさを感じる事がある。
また、こんな機能があったら良いのに、と思う事もある。
上記の問題を解決したいと思い、本ポートフォリオを作成した。
使用技術
- Ruby on Rails
- HTML/CSS
- JavaScript
- jquery
- MySQL
- nginx
実装機能
1. 検索
検索する方法として、以下を実装した。
- タブメニューから50音を選択することで、本を検索する。
- タブメニューから50音を選択することで、作者を検索する。
- タブメニューから本の分野を選択することで、本を検索する。
- テキスト入力により、本を検索する。
- テキスト入力により、作者を検索する。
タブメニュー (1.2.3.) について
青空文庫は、50音で本および作者を検索する事ができる。
但し、複数回のページ遷移を行う必要があり、煩わしい。
そこで、タブメニューから50音を選択する事により、
1ページで検索が完了するようにした。
テキスト入力 (4.5.) について
青空文庫は、テキスト入力による検索機能が無い。
そのため、特定の本または作者を検索したくても、50音から選んで検索するしかない。
この問題を解消するため、本機能を実装した。
データベース
青空文庫で公開されている、本情報のcsvデータを利用し、データベース化した。
https://www.aozora.gr.jp/index_pages/list_person_all_extended_utf8.zip
2. おすすめ人物
データベースからランダムに1人を選択し、
WebAPIを使用して、その人物の写真と概要を取得し、ページに表示している。
青空文庫には、自分の知らない作家または本が数多く存在する。
その中には、自分が面白いと感じるものがあるはずだ。
そういった本または作者と出会うために、本機能を実装した。
WebAPIによるエラーの考慮
WebAPIを使用している以上、写真および概要が得られない人物がいる。
その場合、再度データベースから1人を選択してWebAPIを実行する。
但し、連続して情報が得られず、ページ遷移が出来ずユーザを待たせてしまう事を考慮して、リトライは5回まで、としている。
(リトライオーバーした場合は、何も表示しない。)
また、WebAPIから情報を得られなかった人物は、以降データベースから選択されないようにしている。
3. マイ本棚
アカウント機能を実装しており、各アカウントは本棚を持っている。
ユーザは、本棚へ本を追加をしたり、本棚から本を削除する事が可能。
本機能により、お気に入りの本や読みかけの本を、ユーザはストックする事ができる。
ゲストログイン
ゲストログインした場合、予めマイ本棚には複数の本が格納されている。
これは、ゲストがマイ本棚がどういった機能なのか体験するために、そうしている。
4. [追記]新規公開作品 (2021/07/11)
新たに公開された日付順に、5つの作品を表示。
[追記]レスポンシブデザイン (2021/07/09)
[追記]バッチ処理 (2021/07/10)
新規公開された本をデータベースへ追加
毎日定刻に、以下ページにて公開された本を、データベースへ追加。
青空文庫 - 新規公開作品
Open-URIを使用してスクレイピングを行う事で実現している。
最後に
自分が思った事、感じた事を実現できて、達成感が得られました。
また、自分にとって意義を感じるモノを作っている感覚があって、モチベーションを維持し続けられました。






