RailsにReactを導入する

現状: Rails4.x以上でサービスを稼働している。 フロントエンドは.erbで記述している。JSはassets/javascriptという普通の構成

開発リソース: 1人
目的: 既存のUI資産を残しつつ、ECMAScript6 + React + Reduxに置き換える
前提: react-router,react-railsを使う

React(ES6)をbabelでコンパイルする必要があるので、frontend/src/javascript 以下にjsxを書いていく。 gulpfileはこんな感じ

var gulp = require("gulp");
var browserify = require("browserify");
var babelify = require("babelify");
var source = require("vinyl-source-stream");
var concat = require("gulp-concat");


gulp.task('compile-es6',
  function() {
    browserify('./frontend/src/javaxcript/**/*.jsx', { debug: true })
      .transform(babelify)
      .bundle()
      .pipe(source('bundle.js'))
      .pipe(gulp.dest('app/assets/javascripts/components'))
  });

gulp.task('watch',
  function() {
    gulp.watch(__dirname + '/frontend/src/javascript/**/*.{js,jsx}', ['compile-es6'])
  });

コントローラー毎にレイアウトファイルを振り分ける作業があるんだけど、とりあえずHelloReactとか表示する。

// frontend/src/javascript/hello-react.jsx

import React from 'react'
export default class HelloReact extends React.Component{
  render() {
    return(
      <div>
        <h2>Hello React!</h2>
      </div>
    );
  }
}

class HelloReactController < ApplicationController
  def index
  end
end
# app/views/hello_react/index.html.slim
= react_component 'HelloReact'

react_component はreact-railsに用意されているhelperメソッド。複数のComponentを表示すると react_component 'header' react_component 'main' react_component 'footer' みたいになっていく。

適当にrouteを設定し、urlを叩くと、ヘッダーとフッター部分が.erbで、Hello Reactの部分がjsxで書いたviewが混在したものが表示される。

Apple Musicのゲーム音楽アーティストリンク

Anamanaguchi itun.es

Tim Follin itun.es

itun.es

itun.es

itun.es

クロノトリガークロノクロス itun.es

itun.es

itun.es

itun.es

他にあれば知りたい

気になったE3 2015動画まとめ①

METAL GEAR SOLID V: THE PHANTOM PAIN

www.youtube.com

【PS4/PS3/XboxOne/Xbox360/PC】

アンチャーテッド4 A Thief's End

www.youtube.com

【PS4】

安定の

Final Fantasy VII Remake

www.youtube.com 【PS4】 超画質でサイバーパンクの世界を遊べる。キャラには興味ない。

サマーレッスン

www.youtube.com

VRゲームの技術デモで、日本に旅行中の金髪の可愛いミュージシャンに日本語を教えるゲーム。Project Morpheusまでのプロローグ。 最新技術がこの女の子の表情に詰まっている。 こういうの待ってたんだよ。 『サマーレッスン』E3 2015デモの紹介映像が到着! シチュエーションも“ホームステイ中のミュージシャンに日本語を教える”海外出展仕様に【E3 2015】 - ファミ通.com 【Project Morpheus】

Horizon Zero Dawn

www.youtube.com

真のモンハンだと言われてる。機械化した動物を相手に戦うみたい。

Call of Duty: Black Ops III

www.youtube.com

【PS4】

ReCore

www.youtube.com

【PS4】 稲船敬二が関わってる新作というだけ

XboxのE3観たけどなんも覚えてない。

Trelloで参考にしているサイトを管理しながら開発するTips

Chromeで幾つものタブを管理しながら作業するのは効率が悪いCPU食うし、ブラウザは特にメモリ大好き。どのタブを開いているか覚えてくのも良くない。はてぶにぶち込んでおいてもどうせみない。だったらTrelloで管理すればいんじゃね。

http://i.gyazo.com/518e28320c485590eb4b1abfe19225cc.png

http://i.gyazo.com/f08faa379b8a8b7379f35bb22e05ed53.png
[記事のタイトル](URL) という感じでコメント打つとリンクを生成してくれる。が、URLとページタイトルをいちいちコピペするのは面倒。なので同時にコピーできる拡張機能「Copy Title+URL to clipboard」をインストール。
https://chrome.google.com/webstore/detail/copy-title%20url-to-clipboa/hbnaclhngkhpmpgmfakaghgjbblokeeh

http://i.gyazo.com/943dfb2cb91e9475a3ad58125215bc26.png

このボタンを押すとURLとタイトルを同時にコピーできる。だけどさっきの[記事のタイトル](URL) の符号を自分でつけるのもまた面倒。なので拡張機能をカスタマイズする。

~/Library/Application Support/Google/Chrome/Default/Extensions/hbnaclhngkhpmpgmfakaghgjbblokeeh/1.3.3_0

ディレクトリに移動

open .

copy.jsがあるのでこれをゴニョゴニョした。んだけど変更するとファイルが壊れてしまう。

copyToClipboard( tab.title + getSeps() + tab.url );

Product Huntのゲーム版のようなWebサイト作った。

機能的なものはほとんどなくて、投票数に応じて表示される。URLか説明文を書く。コンセプトとしてはインディーズゲームや良ゲーだけど知られていない製品を発掘することかな。

https://monster-hunt.herokuapp.com/

これから追加していくものは、コメントをツリー型にするのと、画像をアイキャッチに設定できるようにしたい。今の段階では必要ないけどコレクションのような機能や、メール配信なども考えてる。
これ作ってherokuに上げるまでの所要時間30分くらいだし、それ以上ユーザーいないのにモチベーションは上がらなかったから取り敢えずpushしといた。

ゲーム好きな人は投稿してほしい。コンセプト云々書いたけど、最初は見つけたゲームを記録していく感じでいいと思う。レトロゲームとか昔のRPGについても知りたいけど、そういうのも一緒にしていいものなのか。RogueとかUOとかDoomとかについて議論できる場みたいなのほしいよね。

今期なにみる

  • 響けユーフォニアム #まだ
  • プラスティック・メモリーズ #一話今日の22時から、ニコ生で観る
  • 血界戦線 #作画いい。
  • 終わりのセラフ #初っ端絶望味わったからこれからは希望しかないと信じて視聴
  • ダンまち #紐がいい感じ
  • アルスラーン戦記 #Gyaoで一話観たけどよかった。ニコ生でやらないのがつらい

視聴スタイルとしては、今はニコニコしかないんだけど、そもそもコメントがないと観るのつらいタイトルある。そのうちPS4購入してtorne導入したい。今期ブログで感想書けたら書く。