0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby on Railsで作成したポートフォリオ - 青空図書館

0
Last updated at Posted at 2021-07-05

概要

青空文庫 を元にして、機能追加およびUI改善したポートフォリオを作成。

TOP.png

公開URL

ポートフォリオ

[閉鎖 2021/12/15]
http://52.14.255.136/

GitHub

目的

青空文庫は、数多くの著作権切れの本を無料で公開している。
私は、このサイトで著名な作家(ex: 夏目漱石, 江戸川乱歩)の本を読んでいる。
その事により、面白さおよび教養を得られた。

しかし、利用していて、使いづらさを感じる事がある。
また、こんな機能があったら良いのに、と思う事もある。
上記の問題を解決したいと思い、本ポートフォリオを作成した。

使用技術

  • Ruby on Rails
  • HTML/CSS
  • JavaScript
  • jquery
  • MySQL
  • nginx

実装機能

1. 検索

検索する方法として、以下を実装した。

  1. タブメニューから50音を選択することで、本を検索する。
  2. タブメニューから50音を選択することで、作者を検索する。
  3. タブメニューから本の分野を選択することで、本を検索する。
  4. テキスト入力により、本を検索する。
  5. テキスト入力により、作者を検索する。

タブメニュー (1.2.3.) について

青空文庫は、50音で本および作者を検索する事ができる。
但し、複数回のページ遷移を行う必要があり、煩わしい。

そこで、タブメニューから50音を選択する事により、
1ページで検索が完了するようにした。

タブメニュー.gif

テキスト入力 (4.5.) について

青空文庫は、テキスト入力による検索機能が無い。
そのため、特定の本または作者を検索したくても、50音から選んで検索するしかない。

この問題を解消するため、本機能を実装した。

テキスト入力.gif

データベース

青空文庫で公開されている、本情報のcsvデータを利用し、データベース化した。
https://www.aozora.gr.jp/index_pages/list_person_all_extended_utf8.zip

2. おすすめ人物

データベースからランダムに1人を選択し、
WebAPIを使用して、その人物の写真と概要を取得し、ページに表示している。

青空文庫には、自分の知らない作家または本が数多く存在する。
その中には、自分が面白いと感じるものがあるはずだ。
そういった本または作者と出会うために、本機能を実装した。

おすすめ人物.gif

WebAPIによるエラーの考慮

WebAPIを使用している以上、写真および概要が得られない人物がいる。
その場合、再度データベースから1人を選択してWebAPIを実行する。
但し、連続して情報が得られず、ページ遷移が出来ずユーザを待たせてしまう事を考慮して、リトライは5回まで、としている。
(リトライオーバーした場合は、何も表示しない。)

また、WebAPIから情報を得られなかった人物は、以降データベースから選択されないようにしている。

3. マイ本棚

アカウント機能を実装しており、各アカウントは本棚を持っている。
ユーザは、本棚へ本を追加をしたり、本棚から本を削除する事が可能。

本機能により、お気に入りの本や読みかけの本を、ユーザはストックする事ができる。

マイ本棚.png

ゲストログイン

ゲストログインした場合、予めマイ本棚には複数の本が格納されている。

これは、ゲストがマイ本棚がどういった機能なのか体験するために、そうしている。

4. [追記]新規公開作品 (2021/07/11)

新たに公開された日付順に、5つの作品を表示。

新規公開作品.png

[追記]レスポンシブデザイン (2021/07/09)

スマホ対応のデザインを実装。
portfolio_smartphone.png

[追記]バッチ処理 (2021/07/10)

新規公開された本をデータベースへ追加

毎日定刻に、以下ページにて公開された本を、データベースへ追加。
青空文庫 - 新規公開作品

Open-URIを使用してスクレイピングを行う事で実現している。

最後に

自分が思った事、感じた事を実現できて、達成感が得られました。
また、自分にとって意義を感じるモノを作っている感覚があって、モチベーションを維持し続けられました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?