Skip to content

20181027オープン化にあたりAsIs、ToBe解説

Yusuke Kawabata edited this page Oct 27, 2018 · 2 revisions

何をするサービス?

  • markdownで薄い本(技術書)が作りたい。を支援するサービスを立ち上げる。
  • https://github.com/ku-suke/flightbooks-front/wiki
  • ここでは実際に価値を体験できるMVPまでの作成を行う
  • 事前に「Makdownで技術同人誌を書こう!」を読もう

開発始め

  • 今の所、開発環境と本番(というか確認用URL)でDBは共通
  • 最初に.envファイルを貰ってルートディレクトリに置いて下さい
  • .envはslackのpinにあります
# インストール
$ yarn install

# サーバー立てる
$ yarn run serve

技術

  • TypeScript
  • Vue
  • Vuex
  • Firebase/firestore

設計資料

ページ構成

  • /src/router.ts を見ればだいたいrouteはわかる

/ Home

  • 自分の所持しているプロジェクトが並ぶ
  • BookListContainer
  • 罠: 現在はプロジェクトの表紙を設定できないので、適当な画像が出ている

/projects/:id Project

  • 一つのプロジェクトに関する画面
  • サイドメニューからいろいろできる
  • route割り振られてないけど各ページの編集もこのURL
  • エディターは別途wikiを読むと良いのかも
  • 罠: 「チャプター管理」のメニュー右側にhoverしないと見えないメニューがある
  • 罠: 設定/プロジェクト設定/出版設定は今はないので無効なメニュー

/projects/:id/buildSetting BuildSetting

  • ビルド時の設定とかをして、実際にビルドキューを作成するとこまでできる
  • @matsurai が作ったので聞くと良いかもしれない

/about About

  • あるけど使われてない
  • fbに関する話を置く場所になる(?)

/jobs Jobs

  • ビルド一覧を作ろうとした形跡がある
  • その人の全てのプロジェクトのビルド一覧になる(?)
  • なんか今エラーになってますね

Entity

Book

  • 書籍を管理するエンティティです。
  • Bookのプロパティとしては、書籍名や著者といった情報が格納されます。
  • ゆくゆくはサブコレクションとしてChapterを含めたいなと思っています。

BuildJob

  • MarkdownからHTML、PDFを生成するのが、だいたい30秒-1分くらいかかるので、そのキューと、成果物のURLを管理します

Chapter

  • 章、現状はフォルダのようなかんじでPageリストを内包している
  • ただし、今後はここに本文を直接プロパティとして持ってよいと思っている。

Page

  • ページ、本文が格納される。
  • ただし、Vivliostyleみたいにレンダリングのページ分割を再現できるわけではないので、もう廃止でいいかなって思ってる。

PageContents

  • ページ本文?

ProjectTree

  • エディタ画面の左側サイドバーの構造を管理?

Repositry

  • firebaseとstoreを繋ぎつつ、fetchやsaveなどの操作を管理します
  • 基本的にEntityがそのまま突っ込まれているので、各型を見るとわかる

Book

  • firestore/test-projects
identifier
owner
genre
name
projectTreeRef
updatedAt
createdAt

BuildJob

  • firestore/build-job
identifier
owner
bookId
pageIds
status

BuildSetting

  • firestore/build-setting
identifier
createdAt
email
environment
printingOffice
version

PageContent

  • firestore/pages
identifier
owner
content

ProjectTree

  • firestore/projectTree
identifier
owner
chapters
pages

User

  • firestore/users

使ってみて分かったデータ構造のこと

ページとチャプターを別構造にするかで悩んだ→紙を想定したページの分割とユースケースって難しい→できるだけシンプルに、1章1レコードでPageをやめてChapterのみで行こうと思った。僕の場合はそれを「章」として考えるけど、300P書くような人にはフィットしないかもしれない。でもよしとする。100P前後を書く人にとって最も心地よくする。データの名称は、chapterでOK。chapterのなかに1万文字くらい書くと、挿絵の量にもよるけどB5で8ページくらいになるイメージ。このchapterの単位で、レンダリング時は強制改ページを行う。

では章タイトルを、別の入力フォームとして用意するか?→NO 薄い本としてはできるだけシンプルに、1行目は#から始まってくれってのを規約にして、その章内では、#はほかで使用しない、##以降を使ってくださいというルールにする。

You can’t perform that action at this time.