2018年6月8日

プログラミング

GitHub PagesでReactアプリケーションを公開!【作りながら覚えるReact】

目次

  1. はじめに
  2. GitHub Pagesとは
  3. Create React AppのGitHub Pages公開
  4. まとめ

はじめに

スマートスピーカーの発音サービスを作りながら、Reactの基礎を学んでいくシリーズの第7弾です。
前回は子コンポーネントの組み立て方とラジオボタンを使っていきました。

Reactでスマートスピーカーのコマンド発音サービスを作ろう(7)【作りながら覚えるReact】

今回はできたページをGitHub Pagesで公開していきます。

GitHub Pagesとは

 2018-06-07 23.26.52.png (239.1 kB)
GitHub Pagesとは、その名の通りGitHub上で管理しているリポジトリについて、静的なページとしてホスティングしてくれるサービスです。
GitHubでPublic(公開)として作成すると、簡単にGitHub Pagesの公開が可能です。

早速試してみましょう。

まずリポジトリをPublicとして作成します。
 2018-06-08 14.40.16.png (88.5 kB)

次にGitHub Pagesに公開したいファイルをPushします。
今回は直下にindex.htmlを設置しました。
 2018-06-08 14.42.38.png (84.6 kB)

そしてリポジトリ内のSettingsから
 2018-06-08 14.43.08.png (51.3 kB)

下のほうにいくとGitHub Pagesの設定箇所があります。
 2018-06-08 14.43.33.png (49.7 kB)

こちらを一旦masterブランチに設定してsaveを押します。
 2018-06-08 14.44.26.png (51.2 kB)

これだけでGitHub Pagesで公開されました!
こちらがURLです。
https://eishisaito.github.io/sample/

もちろん独自ドメインを当てたり、デザインのテンプレートを使ったりすることもできます。

Create React AppのGitHub Pages公開

では、Create React Appで作ったソースはどのように公開していけば良いのか、Smart Speakers Commands Speaker(SSCS)を使って解説していきます。

改めてSSCSのフォルダ構成を見るとこのようになっています。
 2018-06-08 14.51.42.png (44.4 kB)

先程のsampleは直下にindex.htmlを置くことでGitHub Pagseで閲覧することができました。
今回のSSCSは直下にそれらしき公開ファイルもなさそうですし、どうやらこのままmasterブランチをGitHub Pagesで公開しても、うまく公開できなさそうです。

実際、READ.mdの内容が表示され、Reactアプリケーションとしては表示されません

buildを行う

普段ローカル環境でReactアプリケーションを動かす場合、npm start で動かしていました。
これはローカルでWebサーバを立ち上げるためのコマンドでした。

今回はGitHub Pagesとして公開するので、そのためにはリリース用のファイル生成(ビルド)する必要があります。
ビルドはこちらのコマンドです。
npm run build

するとbuildというディレクトリができ、そこの中にリリース用のファイルが生成されています。
JavaScriptやCSS等もパフォーマンスを最適化する為、圧縮されまとめられます。

buildディレクトリ内のファイル

├── asset-manifest.json
├── favicon.ico
├── img
│   └── command_ogp.jpg
├── index.html
├── manifest.json
├── service-worker.js
└── static
    ├── css
    │   ├── main.50fc2243.css
    │   └── main.50fc2243.css.map
    ├── js
    │   ├── main.9b14fd23.js
    │   └── main.9b14fd23.js.map
    └── media
        └── alexa5.a9e393bc.jpg

このbuild配下のファイルをpushしてリモートリポジトリに反映したら良さそうですね!
ですが、masterブランチはあくまでもソースコードのmasterであって欲しいので、buildは反映せず別ブランチをリリース用のブランチにすると良さそうです。

そんなときに役立つのがgh-pagesです。

gh-pagesでデプロイをする

gh-pages はGitHub Pagesへのデプロイ(本番への反映)を行ってくれるnpmパッケージです。

まず、こちらのコマンドでインストールします。
npm install gh-pages --save-dev

そしてpackage.jsonを編集しscript内にdeployを追加します。

{
  "name": "smart-speaker-commands-speaker",
  "version": "0.1.0",
  "homepage": "https://eishis.github.io/smart-speakers-commands-speaker",
// ...
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "deploy": "npm run build && gh-pages -d build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
// ...
}

これはビルドをnpmコマンドで行い、その後にgh-pagesでデプロイをしてね、というコマンドです。
"deploy": "npm run build && gh-pages -d build",

あとはnpm run deploy をすれば、ビルド及びビルドファイルをGitHubのリポジトリのgh-pages{ブランチにpushしてくれます。

あとはここからsourceをgh-pagesブランチとするだけですね!
 2018-06-08 17.29.12.png (43.7 kB)

このようなSmart Speakers Commands SpeakerのサイトがGitHub Pages上にホスティングされます!
 2018-06-08 17.32.27.png (590.2 kB)

公開されたサービスがこちらです。
Smart Speaker’s Commands Speaker (SSCS)

まとめ

今回は今まで作ってきたReactアプリケーションをGitHub Pagesにデプロイする方法をご紹介しました。
GitHub Pagesは便利なことはもちろん、独自ドメインを適用することもできるなど、オープンソースの公開場所としてはとても便利です。
次回は複雑なStateの渡し方などを見ていき、難関のReduxにも挑んでいきます。

0

0

AUTHOR

eishis

Eishi Saito 総務

SIerやスタートアップ、フリーランスを経て2016年11月にeishis, Inc.を設立。 マーケター・ディレクター・エンジニアなど何でも屋。 COBOLからReactまで色んなことやります。

アプリでもっと便利に!気になる記事をチェック!

記事のお気に入り登録やランキングが表示される昨日に対応!毎日の情報収集や調べ物にもっと身近なメディアになりました。

簡単に自分で作れるWebAR

「palanAR」はオンラインで簡単に作れるWebAR作成ツールです。WebARとはアプリを使用せずに、Webサイト上でARを体験できる新しい技術です。

palanARへ
palanar

palanはWebARの開発を
行っています

弊社では企画からサービスの公開終了まで一緒に関わらせていただきます。 企画からシステム開発、3DCG、デザインまで一貫して承ります。

webar_waterpark

palanでは一緒に働く仲間を募集しています

正社員や業務委託、アルバイトやインターンなど雇用形態にこだわらず、
ベテランの方から業界未経験の方まで様々なかたのお力をお借りしたいと考えております。

話を聞いてみたい

運営メンバー

eishis

Eishi Saito 総務

SIerやスタートアップ、フリーランスを経て2016年11月にeishis, Inc.を設立。 マーケター・ディレクター・エンジニアなど何でも屋。 COBOLからReactまで色んなことやります。

sasakki デザイナー

アメリカの大学を卒業後、日本、シンガポールでデザイナーとして活動。

しまだ

しまだ デザイナー

WebAR/VRのデザインと3DCG制作がメインです。 肩書きは「アニメ案件に関わりたいデザイナー」。

Miu マーケター

ドイツでWEBマーケティングしています。

しんのき エンジニア

主に React Native を使ったアプリ開発と AWS や Firebase を使ったサーバーレスアーキテクチャを担当しています。元々はインフラとかPHPをやっていました。

yamakawa

やまかわたかし デザイナー

フロントエンドデザイナー。デザインからHTML / CSS、JSの実装を担当しています。最近はReact NativeやReact360をよく触っています。

furuya エンジニア

サーバーサイド、フロントエンド、Unityと色々手を出してる雑食系エンジニア。ReactNativeが最近のマイブーム。

Sayaka Osanai デザイナー

Sketchだいすきプロダクトデザイナー。シンプルだけどちょっとかわいいデザインが得意。 好きな食べものは生ハムとお寿司とカレーです。

はらた

はらた エンジニア

サーバーサイドエンジニア Ruby on Railsを使った開発を行なっています

うえまつゆい エンジニア

サーバーサイドエンジニアからフロントエンドエンジニアになりました。主にReact Nativeでのアプリ開発をしています。

kobori

こぼり ともろう エンジニア

サーバーサイドエンジニア。SIerを経て2019年7月に入社。日々学習しながらRuby on Railsを使った開発を行っています。

sasai

ささい エンジニア

フロントエンドエンジニア WebGLとReactが強みと言えるように頑張ってます。

damien

Damien

WebAR/VRを中心に企画やディレクションやエンジニアもちょっとやっています。森に住んでいます。

デザイナーゲスト

ゲスト デザイナー

CONTACT PAGE TOP