0
1

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 1 year has passed since last update.

Monaca × NCMBでマンガビューワーアプリを作る(その2:データの用意と一覧画面の作成)

Last updated at Posted at 2022-05-08

NCMBにはいくつかの機能がありますが、データベースのように使えるデータストアや写真などを保存しておくファイルストアはよく使われる機能になります。

今回はそのデータストアとファイルストアを組み合わせて、マンガビューワーアプリアプリを作ります。前回はアプリの概要とNCMBの初期化を行いましたので、今回はデータの準備と一覧画面の作成を行います。

完成版のコード

作成したデモアプリのコードはNCMBMania/Monaca_Comic: MonacaとNCMBを使ったマンガアプリのサンプルですにアップロードしてあります。実装時の参考にしてください。

データの用意

マンガデータ

今回はCCなどで公開されている以下のマンガデータを利用しました。ありがとうございます。

これらのデータをダウンロードし(一部はPDFから画像にした上で)、ページ毎に連番で保存します。たとえばブラックジャックによろしくであれば、bj_1.jpeg・bj_2.jpeg…といった具合です。

そうしたデータをまとめてNCMBのファイルストアにアップロードします。

FireShot Capture 276 - 20220506155402 ニフクラ mobile backend - console.mbaas.nifcloud.com.jpg

データストア

次にデータストアでComicクラスを作成します。フィールドは次のように作成します。

フィールド名 意味
title 文字列 マンガのタイトル
key 文字列 画像ファイル名のプリフィックス(bj_など)

そしてマンガデータを作成します。

FireShot Capture 277 - 20220506155412 ニフクラ mobile backend - console.mbaas.nifcloud.com.jpg

一覧画面の作成

www/pages/list.html を作成します。HTMLを含めた基本形は次の通りです。

<template>
  <div class="page">
    <div class="navbar">
      <div class="navbar-bg"></div>
      <div class="navbar-inner sliding">
        <div class="title">書籍一覧</div>
      </div>
    </div>
    <div class="page-content">
      <div class="list links-list">
      </div>
    </div>
  </div>
</template>
<script>
  export default (props, { $onMounted, $update }) => {
		// ここにJavaScriptを記述
    return $render;
  };
</script>

書籍データを取得する

JavaScriptで書籍データを取得する処理を記述します。これは $onMounted 関数内で記述します。この関数はDOMのマウントが終わった際に呼ばれます。

let comics = [];
// DOMがマウントされたタイミングで実行
$onMounted(async () => {
	// コミックデータを取得する
	const Comic = ncmb.DataStore('Comic');
	comics = await Comic
		.order('title')
		.fetchAll();
	// 取得したら表示更新
	$update();
});

変数 comics の中にデータが入った段階で $update 関数を呼ぶことで、HTML側に表示を反映できます。 div.list の中に一覧表示を追加します。

<div class="list links-list">
	<!-- ここに追加(ここから) -->
	<ul>
		${ comics.map(comic => $h`
			<li><a href="/comics/${comic.key}?title=${comic.title}">${comic.title}</a></li>
		`)}
	</ul>
	<!-- ここに追加(ここまで) -->
</div>

これでデータの取得と、画面への反映が完了します。

FireShot Capture 282 - 20220506185731 Monaca × Framework7 × NCMB - localhost.jpg

まとめ

マンガビューワーアプリではデータを取得するのみでアプリから更新は行いません(カスタマイズして既読管理機能などを付けても良いでしょう)。そのため、実装はとてもシンプルになります。

次回はマンガを選択した後の表示処理について解説します。

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?