reveal.js & Google Spread Sheets からスライド形式ウェブサイトを簡単に作る方法

（現在とりま投稿状態）
元々の題名「reveal.js & Google Spread Sheets でサーベイを簡単にかっこよくまとめる方法」
はじめはこんな題名だったのですが，サーベイ以外にもいろいろなスプレッドシートデータに適応できると思ったので，改題しました．

Github pagesを使って無料でネットに公開するところまで書いているので，最後まで読んでくれるとありがたいです．

:fire::fire:[↓先にモノを見せてくれよって人向け↓](https://atomscott.github.io/reveal-spreadsheets/#/):fire::fire:
:fire::fire::fire:[こういうサイトが作れるようになります](https://atomscott.github.io/reveal-spreadsheets/#/):fire::fire::fire:
## スプレッドシートにまとめた論文サーベイをかっこよくまとめてたい！

これから研究論文をもっと読むことになって，いまスプレッドシートにまとめているものをどうせならかっこよくまとめられたらなと思っていたところ，Reveal.jsに出会いました．

簡単にReveal.jsとGoogle Spread Sheetsをつなげて，簡単に格好良くまとめる方法を見つけたので紹介します．

## なにを目標にするか

![Screenshot from 2020-02-09 15-57-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295666/fa723c92-dbe5-3fce-85b7-f67a229acdeb.png)

<iframe src="//www.slideshare.net/slideshow/embed_code/key/2HlTo21lsJ2N18?startSlide=45" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/Ochyai/1-ftma15" title="先端技術とメディア表現1 #FTMA15" target="_blank">先端技術とメディア表現1 #FTMA15</a> </strong> from <strong><a href="//www.slideshare.net/Ochyai" target="_blank">Yoichi Ochiai</a></strong> </div>

分野によって，どういう風に論文を読むかは全く異なるかと思います．僕も研究内容に合わせてポイントを絞って読みます．

例えば，Face Detection系の研究をしていて，それにまつわる論文を読んでたら，Average Precision, 使用したデータセット，手法・工夫などがポイントになります．

ML応用系で例えば，スポーツの怪我予防だったら，まず何になぜ着目したのかから気になります．

まぁ，なので，誰もが一度は試してみる，我が筑波大の落合先生方式でまとめることを目標としましょう．

**Points**

- 先行研究と比べてどこがすごい？ 
- キモはどこ？
- どんなもの？ 
- どうやって有効だと検証した？  
- 議論はある？
- 次に読むべき論文は？

## Reveal.js

[Reveal.js](https://revealjs.com/#/)とはHTMLでスライドが作れちゃうパッケージです．

![](https://camo.githubusercontent.com/d4f2ae698b4492e866944e3618a90fcbc4a78241/68747470733a2f2f7374617469632e736c69642e65732f737570706f72742f72657665616c2e6a732d766572746963616c2d736c696465732e676966)

### Reveal.js の使い方

参考にできるqiita記事

- [reveal.jsでスライド作り。](https://qiita.com/t-kusakabe/items/725e7438892bba395062)

こちらが優しそうですね．インストールの参考にしてください．一応，手順こちらです．


**ステップ 1.** Node.jsをインストールする (9.0.0以降)．

**ステップ 2.** reveal.jsリポジトリをクローンする．

```bash:cmd
$ git clone https://github.com/hakimel/reveal.js.git
```

**ステップ 3.** reveal.jsディレクトリに移動する．

```bash:cmd
$ cd reveal.js
```

**ステップ 4.**　Dependenciesをインストールする．

```bash:cmd
$ npm install
```

**ステップ 4.** サーバーを起動させ，ファイルの変化をモニタリングする．

```bash:cmd
$ npm start
```
**ステップ 5.** http://localhost:8000 を開いてプレゼンを見る

## Tabletop.js
[Tabletop.js](https://github.com/jsoma/tabletop)とは簡単にGoogle Spread Sheetsからjsonデータを作成してくれます．

> Tabletop.js easily integrates Google Spreadsheets with templating systems and anything else that is hip and cool. It will also help you make new friends and play jazz piano.

あまり有名ではないのでしょうか？githubでは3.4kのスターがついていますが，Qiitaでは"TableTop.js"で検索しても関係ありそうな記事はありませんでした．

### Tabletop.jsの使い方
公式リポジトリのreadme.mdそのままですが，

**ステップ１.** Google Spread Sheetsでスプレッドシートを作り，ウェブに公開する．

1. [Google Spread Sheets](https://docs.google.com/spreadsheets/u/0/?tgif=d)に行って新しいスプレッドシートを作る．１行目に列名，２行目以降はデータを適当に記入していく．

2. 「ファイル」＞「ウェブに公開」を押して，ウェブに公開する．

3. URLを取得する．下記画像のURL(https://docs.google.com/spreadsheets/d/1MdaTjLmT4ZAb1WtbLEIHoXof8Tn37x8Q7rCSYEGjNB4/edit#gid=0) でOK！

![Screenshot from 2020-02-09 16-46-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295666/6f76156b-6033-e993-f277-41dd2ab6a1c8.png)

**ステップ２．**コードエディタを開いてコードを書き込む．

index.htmlに以下のスクリプトをコピペする．

```html:index.html
<script src='https://cdnjs.cloudflare.com/ajax/libs/tabletop.js/1.5.1/tabletop.min.js'></script>
<script type='text/javascript'>    
  var publicSpreadsheetUrl = 'https://docs.google.com/spreadsheets/d/1sbyMINQHPsJctjAtMW0lCfLrcpMqoGMOJj6AN-sNQrc/pubhtml';

  function init() {
    Tabletop.init( { key: publicSpreadsheetUrl,
                     callback: showInfo,
                     simpleSheet: true } )
  }

  function showInfo(data, tabletop) {
    alert('Successfully processed!')
    console.log(data);
  }

  window.addEventListener('DOMContentLoaded', init)
</script>
```

ページをロードして

- アラートが表示される
- consoleにデータがログされている

ことを確認して，大丈夫そうだったら設定完了．

## Reveal.js & Tabletop.jsを組み合わせる

クローンしたReveal.jsのリポジトリのindex.htmlに正しくTabletop.jsをコピペできていたら，とりあえずこんな画面がでてくるかと思います．

![Screenshot from 2020-02-09 17-28-58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295666/2c2f4b41-6a81-3a5f-12c1-cca9442e393c.png)

コンソールをみるかぎり，正しくGoogle SpreadSheets からデータを読み込めているようですね．

### スライドにデータをぶち込む！

一番簡単な方法は下記の画像のように，先程コピペしたTabletop.jsのコードをいじって，行ごとにスライドを作ることじゃないですかね．
（ウェブ系強くないので，もっと良いやり方はたくさんあると思います．）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295666/4098dd7c-8fcf-20c1-a8b9-43e35a186472.png)

おっとー，ミスが見つかったので，修正したコードを[AtomScott/reveal-spreadsheets](https://github.com/AtomScott/reveal-spreadsheets/tree/level-one)から拾ってください．

![chrome-capture.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295666/d138bdf7-14b3-2c2f-08bd-6fcff5ee8cb5.gif)

スプレッドシートの列名を日本語にしてしまったので，コードに日本語が入って気持ちが悪いですが，これで簡単に論文の題名を表示することができました．このコードを参考に`str+=""`の中身を増やして，著者名や画像などを加えて行きたい人はどうぞ開発をしてみてください！


## Github Repos

- [Master branch](https://github.com/AtomScott/reveal-spreadsheets) - スタイリングなどを加えたリポになります．こちらは[このウェブページ](https://atomscott.github.io/reveal-spreadsheets/#/)に出ているものと同じはずです．
- [Level-one branch](https://github.com/AtomScott/reveal-spreadsheets/tree/level-one) - 題名だけ出るようにしたシンプルなリポ．

クローンして，npmの設定などして`npm start`で走るはず！

## refs

こちらの記事にインスピを受けました．
https://hackernoon.com/data-driven-presentations-b97a16caadf4