• Vue.jsとVuexを使って、TODOアプリを作ってみよう。
    No Comments on Vue.jsとVuexを使って、TODOアプリを作ってみよう。

    前回のカウンターアプリに引き続き、今回はTODOアプリを作ってみようと思います。 基本は、前回お話ししたので、今回は、前回説明してこなかった部分に注力を置いて説明します。 まだVue.jsの初心者をちょっと超えたぐらいですが・・・ まずVue.jsとVuexでアプリを組むには、アプリの全体像をイメージし、 どんな画面で、どんなイベントがあって、どんな値を保持しなければならないかをしっかりと把握する。 画面の絵なんか描くといいかもですね。 で、今回の出来上がりイメージはこんな感じ。 ページ上部に、新しいTODOを入力する場所があって、追加すると、下に新たなTODOとして表示される。 表示されたTODOの文字をクリックすると、処理済みになり、削除をクリックすると、リストから削除される。 これだけです。 では、Vuexのstore作成いってみましょう!! 値を保持しなければならないものは以下の2つ ・TODOのアイテム全て ・新しいTODOの入力途中の文字 ユーザーの操作でアクションが起こる場所 ・追加ボタンで新しいTODOが追加 ・TODOの文字列クリックで、処理済み ・削除ボタンで、リストから削除 storeから取得したいもの ・TODOのアイテム全て ・新しいTODOの入力途中の文字 ではまず、mutation-type.jsに定義すべき変数です。 src/store/mutation-type.js [bash] export const ADD_TODO = ‘ADD_TODO’ export const DONE_TODO = ‘DONE_TODO’ export const REMOVE_TODO = ‘REMOVE_TODO’ export const GET_TODOS = ‘GET_TODOS’ export const CHANGE_MYSTRING = ‘CHANGE_MYSTRING’ [/bash] 次、storeを定義しましょう。 src/store/todo.js [bash] import { ADD_TODO, DONE_TODO, REMOVE_TODO, CHANGE_MYSTRING, GET_TODOS } from ‘./mutation-type’ const todo = { namespaced: true, state: { items: [], mystring: ” }, actions: { [ADD_TODO] ({commit, state, rootState}, newValue) { let newItem = { todo: newValue, is_done: false } commit(ADD_TODO, {data: newItem}) commit(CHANGE_MYSTRING, {data: ”}) }, [DONE_TODO] ({commit, state, rootState}, selItem) { commit(DONE_TODO, {data: selItem}) }, [REMOVE_TODO] ({commit, state, rootState}, selItem) { commit(REMOVE_TODO, {data: selItem}) } }, mutations: { [ADD_TODO] (state, payload) { state.items.push(payload.data) }, [DONE_TODO] (state, payload) { state.items.map(it => { if (it.todo == payload.data.todo){ it.is_done = !it.is_done } }) }, [REMOVE_TODO] (state, payload) { for (let i = 0; i < state.items.length; i++){ if (state.items[i].todo == payload.data.todo){ state.items.splice(i, 1) break } } }, [CHANGE_MYSTRING] (state, payload) { state.mystring = payload.data } }, getters: { [GET_TODOS] (state, getters, rootState) { return state.items } } } export default todo [/bash] storeのルートファイル、 modulesに todo も追加しましょう。 [bash] import Vue from 'vue' import Vuex from 'vuex' import counter from './counter' import todo from './todo' Vue.use(Vuex) const store = new Vuex.Store({ modules :{ 'counter': counter, 'todo': todo, } }) export default store [/bash] 次にフロントエンドです。 ちょっとここは説明を加えておきます。 Todoの1つを表すのは Leafコンポーネントです。 mapGettersで取得した todos を v-forでループさせます。 LeafコンポーネントのプロパティにTotoアイテムの1つのデータを引き渡します。 新しいTodoの文字は入力途中のものも全て管理します。 つまり IN/OUT双方向管理です(v-model)。 その場合は computedに xxxx を用意して、そこに get/set を作ります。 ネストしたストアですが、取得は素直に this.$store.state.todo.mystring コミットの方はちょっと工夫します。 this.$store.commit('todo/' + CHANGE_MYSTRING, {data: value}) 1つ1つのTODOを表す Leafコンポーネントは componentsで定義しておきます。 src/components/Todo.vue [bash] This is Todo App 追加 [/bash] Leafコンポーネントについて 親から引き渡された プロパティを propsで受けます。 あとは特殊なところといえば、v-bind:class で クラスのオンオフを制御しているところでしょうか。 [bash] {{item.todo}} 削除 [/bash] 最後にルートファイルの編集です。 [bash] import Vue from ‘vue’ import Router from ‘vue-router’ import HelloWorld from ‘@/components/HelloWorld’ import Counter from ‘@/components/Counter’ import Todo from ‘@/components/Todo’ Vue.use(Router) export default...

    Read more
  • Vue.jsとVuexを使って、カウンターアプリを作ってみよう。
    No Comments on Vue.jsとVuexを使って、カウンターアプリを作ってみよう。

    Vue.js始めました。さっぱりわからなかったのですが、ようやく「いろは」は 掴めてきたので、vuexを使ってカウンターアプリを作ってみました。 storeをmoduleで分割して、中規模くらいのアプリなら対応できるような感じに仕上げてみました。 とにかく Vuexがややこしいというか、どういう構造で、どう利用するのかが難しい。 これに慣れるのが一番のキモです。 出来上がりのイメージ メチャメチャシンプルですが、こんな感じ。 +++をクリックで、インクリメント、ーーーでデクリメント。 現在のカウンターが「5」 Vue.jsインストール [bash] $ npm install -g vue-cli [/bash] sudo をつけた方がいいかもしれません。 プロジェクト作成 [bash] $ cd ~/Document $ vue init webpack vue1st [/bash] 質問形式で これはインストールしますか?など聞かれるので eslintを除いては、すべて Enterキー連打でOKだと思う。 eslint入れると、構文チェックがやたらうるさくなるので、これは「n」で外すのがオススメ。 Vuexインストール [bash] $ cd vue1st $ npm install –Save vuex [/bash] Storeの作成と main.jsへの登録 [bash] $ mkdir src/store $ nano src/store/index.js [/bash] 最初は訳がわからんと思いますので、軽く説明。 Vuexは Vue.jsで作るSPA(シングルページアプリケーション)の 全ステートを一括してstoreとして、管理します。 まず、Vue.jsとVuexをインポートして使えるようにして、次に Vue.jsからVuexを利用しますよとする。 で、アプリで唯一のstoreを作って、そのstoreで利用するmodulesを宣言していきます。 ここでは ’counter’: counter の部分です。 同一ファイルにしても良いのですが、アプリケーションの規模が大きくなると見通しが悪くなるので、 ファイルを分割しておきます。 で、最後に storeをデフォルト値としてexport。 src/store/index.js [bash] import Vue from ‘vue’ import Vuex from ‘vuex’ import counter from ‘./counter’ Vue.use(Vuex) const store = new Vuex.Store({ modules :{ ‘counter’: counter, } }) export default store [/bash] main.jsへの登録 「+」となっている行を追記します。 [bash] import Vue from ‘vue’ import App from ‘./App’ import router from ‘./router’ + import store from ‘./store’ Vue.config.productionTip = false /* eslint-disable no-new */ new Vue({ el: ‘#app’, + store, router, components: { App }, template: ‘‘ }) [/bash] カウンターのストアを作成 ここが多分一番難しい。 カウンターアプリの要件は、 1.現在のカウンター値を取得できる 2.カウンターをインクリメントできる 3.カウンターをデクリメントできる ストアに保持するべき値は、 カウンター値1つのみ。 この条件が揃ったところで、 src/store/mutation-type.jsを作りましょう。 mutationとは変化するという意味。 カウンターアプリで、Vuexでいうと、 カウンターを増減させることが mutation これを定数定義します。 で、変化ではありませんが、現在のカウンターの値を取得する部分も 定数定義してしまいましょう。(厳密にはmutationではないが、ファイルが分かれるとややこしいので まとめます。) src/store/mutation-type.js [bash] export const INCREMENT_COUNTER = ‘INCREMENT_COUNTER’ export const DECREMENT_COUNTER = ‘DECREMENT_COUNTER’ export const GET_COUNTER = ‘GET_COUNTER’ [/bash] では、この定数を使って、カウンターのStoreを作っていきましょう。 これが非常に慣れるまで難しい。。。 最初のconst宣言と、namespacedはお決まりなので、こんな感じなんだなと覚える。 次のstate/actions/mutations/getters ここが難しい!! その中でもstateはシンプル。 このストアで保持したい変数を定義する場所。カウンターアプリなので 保持するのはカウンターの値一個。それを定義して、初期値をセットします。 actionsは これからstateの値を変更するんだけど、その前処理をする場所、ぐらいに捉えておくと良い。 基本、画面上からのユーザー操作と結びつく場所だと考えてください。 で、actionで何らかの前処理をして、mutationをコミットします。 mutationで実際のストアの値を書き換えます。mutationを呼び出すときに、必要なデータなども セットしてやります。(今回の場合、カウンターなので必要なデータはない) あ、で、変な書き方なのが、actionsの関数宣言。 定数を[定数] としてやると関数名として利用できるので、それを利用してます。 加えて加えて、Vueファイルから、 mapActionsとして、呼び出し可能になります。 mutationは純粋に引数の stateと、payloadを使って、実際のstateで保持されている値を書き換える処理をします。 mutation自体は直接呼び出されることはなく、action経由などで、commitされて呼び出されます。 最後、getters これは、storeの値を読み出すための場所。 これを定義しておくと、Vueファイルから mapGettersで ストア情報を読み出せます。 [bash] import {INCREMENT_COUNTER, DECREMENT_COUNTER, GET_COUNTER} from ‘./mutation-type’ const counter = { namespaced: true, state: { counter_value: 0 }, actions: { [INCREMENT_COUNTER] ({commit, state, rootState}) { commit(INCREMENT_COUNTER, {}) }, [DECREMENT_COUNTER] ({commit, state, rootState}) { commit(DECREMENT_COUNTER, {}) } }, mutations:{ [INCREMENT_COUNTER] (state, payload) { state.counter_value += 1 }, [DECREMENT_COUNTER] (state, payload) { state.counter_value -= 1 } }, getters:{ [GET_COUNTER] (state, getters, rootState) { return state.counter_value } } } export default counter [/bash] フロントエンドの作成 拡張子vueファイルは3つの部分で構成されます。 ・レンダリングされる html ・実行するスクリプト ・CSS CSSは普通のHTMLと同じなので、最初の2つについて説明していきます。 [bash] This is Counter App {{counter}} +++ — [/bash] テンプレート 何らかの変数値を表示したいところは {{変数名}} と2重括弧でくくってとします。 @clickなどはイベント処理を記述する場所で、 不思議な構文なのですが ダブルコーテーションで methodsの中に定義された関数名を文字として定義します。 関数に引数がある場合も、全部文字として記述しちゃう感じです。 (ちょっと変わってますね・・・・…

    Read more
  • Ubuntu 18.04 に nginx mysql php phpmyadmin環境を整える
    Ubuntu 18.04 に nginx mysql php phpmyadmin環境を整える
    No Comments on Ubuntu 18.04 に nginx mysql php phpmyadmin環境を整える

    Ubuntu 18.04にnginx mysql php phpmyadminの環境を整えます。 mysqlのパスワード設定に若干苦労しましたのでその時のメモです。 nginx、mysqlインストール [bash] $ sudo apt-get install nginx mysql-server [/bash] nginxの起動確認 [bash] $ sudo systemctl start nginx [/bash] ブラウザーで http://localhost としてnginxのトップページが表示されることを確認してください。 php、php-fpmなどなどをインストール [bash] $ sudo apt-get install php php-fpm php-mysql php-gettext php-common php-mbstring php-mbstring [/bash] このタイミングでnginxのindex.html がapacheライクなものに書き換えられるっぽいが、気にしない(笑) php.ini調整 [bash] $ sudo nano /etc/php/7.2/fpm/php.ini [/bash] 以下の部分を調整します。 [diff] + cgi.fix_pathinfo=0 [/diff] nginx php連携 設定ファイルの調整 [bash] $ sudo nano /etc/nginx/sites-available/default [/bash] 以下を追記します。 [bash] location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } [/bash] テストファイルを作成 [bash] $ sudo nano /var/www/html/test.php [/bash] 以下の1行を記述してください。 [bash] [/bash] nginx再起動 [bash] $ sudo systemctl restart nginx [/bash] ブラウザーで動作確認 http://localhost/test.php へアクセスして、以下のような表示がされればOK phpmyadminのインストール https://www.phpmyadmin.net/より最新版を入手。 解凍して /usr/shareへコピー [bash] $ unzip phpMyAdmin-4.8.0-all-languages.zip $ mv phpMyAdmin-4.8.0-all-languages phpmyadmin $ sudo mv phpmyadmin/ /usr/share/ [/bash] 設定ファイルの調整 [bash] $ sudo nano /etc/nginx/sites-available/default [/bash] 以下を追記 [bash] location /phpmyadmin { root /usr/share; index index.php; location ~ ^/phpmyadmin.+\.php$ { fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } [/bash] nginx再起動 [bash] $ sudo systemctl stop nginx $ sudo systemctl start nginx [/bash] 動作確認 http://localhost/phpmyadmin にアクセスして、以下のような表示になれば成功 Mysql rootパスワードの設定 以前のディストリビューションだと mysqlのインストール時に、rootのパスワードを尋ねるダイアログが出てきて、そこでrootのパスワードを設定できたのですが、18.04ではなぜかできないので、以下で調整。 [bash] $ sudo mysql -u root mysql> USE mysql mysql> UPDATE user SET plugin=’mysql_native_password’ WHERE User=’root’; mysql> FLUSH PRIVILEGES; mysql> exit; [/bash] [bash] $ mysql -u root mysql> SET PASSWORD FOR root@’localhost’ = PASSWORD(‘xxxxxxxx’); mysql> exit; [/bash]

    Read more
  • Ubuntu 18.04に Rails開発環境(mysql+git)を構築する
    Ubuntu 18.04に Rails開発環境(mysql+git)を構築する
    No Comments on Ubuntu 18.04に Rails開発環境(mysql+git)を構築する

    Ubuntu 18.04に Rails 5.xの開発環境を構築してみます。同時に必要となるであろう、mysql+gitもインストールしていきます。何箇所か躓きそうな場所があるので、そのあたり参照ください。 前準備 あれこれ必要そうなパッケージをインストール。結構ダウンロードされると思いますが、気にせずに・・・ [bash] $ sudo apt-get install curl git build-essential libgtk2.0-dev libmysqlclient-dev mysql-server libmysql++-dev [/bash] RVMインストール 従来通りのrvm のインストールでは 「この鍵は信用できる署名で証明されていません! この署名が所有者のものかどうかの検証手段がありません。」 と言うようなエラーが出るので、gpgの鍵のインポートを3ステップほど踏みます。 [bash] gpg2 –keyserver hkp://keys.gnupg.net –recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 gpg2 –refresh-keys echo 409B6B1796C275462A1703113804BB82D39DC0E3:6: | gpg2 –import-ownertrust [/bash] GPGキーがインポートされた後、RVMインストール [bash] $ curl -L https://get.rvm.io | bash -s stable [/bash] [bash] #環境変数反映(一旦ログアウトしてもOKです。) $ source ~/.rvm/scripts/rvm #バージョン確認 $ rvm -v こんな感じで表示されればOKです。 rvm 1.29.0 (latest) by Wayne E. Seguin , Michal Papis [https://rvm.io/] [/bash] RVMに必要なパッケージをインストール [bash] $ rvm requirements [/bash] Rubyインストール [bash] # バージョンはお任せします。インストールは数分かかります。 $ rvm install 2.4 #バージョン確認 $ ruby -v ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux] #RVMのデフォルト確認 $ rvm list rvm rubies =* ruby-2.4.1 [ x86_64 ] # => – current # =* – current && default # * – default [/bash] gemrc作成 [bash] $ nano ~/.gemrc [/bash] gem インストール時にドキュメントインストールなどを省略します。 [diff] install: –no-document update: –no-document [/diff] Railsインストール、ついでにMysql2のgemもインストール [bash] $ gem install rails mysql2 [/bash] Railsプロジェクト作成 [bash] $ mkdir ~/dev $ cd ~/dev $ rails new testproj [/bash] bundle install でエラーが出る場合 理由はよくわかりませんが黄色い文字でエラーが出てしまう場合、 何度も bundle install を、以下のような completeメッセージが出るまで しつこく繰り返してください。 [bash] Bundle complete! 15 Gemfile dependencies, 63 gems now installed. [/bash] Gemfileを調整 JavaScript Runtimeのエラーが出るので前もって Gemfileを調整 (therubyracerをインストール) [diff] $ nano Gemfile – # gem ‘mini_racer’, platforms: :ruby + gem ‘mini_racer’, platforms: :ruby [/diff] 改めて bundle install [bash] $ bundle install [/bash] Rails サーバー起動 [bash] $ rails s [/bash] 動作確認 http://localhost:3000 へアクセスして以下のように表示されればOK。     Mysql rootパスワードの設定 以前のディストリビューションだと mysqlのインストール時に、rootのパスワードを尋ねるダイアログが出てきて、そこでrootのパスワードを設定できたのですが、18.04ではなぜかできないので、以下で調整。 [bash] $ sudo mysql -u root mysql> USE mysql mysql> UPDATE user SET plugin=’mysql_native_password’ WHERE User=’root’; mysql> FLUSH PRIVILEGES; mysql> exit; [/bash] [bash] $ mysql -u root mysql> SET PASSWORD FOR root@’localhost’ = PASSWORD(‘xxxxxxxx’); mysql> exit; [/bash] Rails開発環境、完成です。 以上です。

    Read more
  • Webpack4 で React環境を整える(sassも)
    Webpack4 で React環境を整える(sassも)
    No Comments on Webpack4 で React環境を整える(sassも)

    Webpack3で、開発するのに慣れていたんだが、知らぬ間にVer4のwebpackが出ている。 webpack4からは、コンフィグレスを目指しているみたいだけど、コンフィグも多少いるし、Ver3とは書き方がずいぶん替わっているので、軽くまとめておく。 開発フォルダ作成 [bash] cd ~/ mkdir workspace mkdir wp4react cd workspace/wp4react npm init -y mkdir dist src mkdir src/components [/bash] 開発用パッケージの導入 [bash] npm i -D babel-core babel-loader babel-preset-env babel-preset-react npm i -D webpack webpack-cli webpack-dev-server [/bash] 必要パッケージの導入 [bash] npm i -S react react-dom [/bash] package.jsonの調整 testだけになっているところに、buildとstart を追加。 これで、 npm run build/ npm run start が使えるようになる。 [bash] “scripts”: { “test”: “echo \”Error: no test specified\” && exit 1″, “build”: “webpack”, “start”: “webpack-dev-server –history-api-fallback” }, [/bash] webpack.config.jsの調整 ルートフォルダにwebpack.config.jsファイルを作成します。 ここで、reactが動作するための最低限の設定を書きます。 (結局、設定ファイルいるじゃん、、、というのはさておき。) CSSやSCSSを読みこんだり、画像ファイルを読み込むところはまだ、調べていないのであしからず。 [bash] module.exports = { mode: ‘development’, entry: ‘./src/main.js’, output: { path: `${__dirname}/dist`, filename: ‘main.js’ }, module: { rules: [ { test: /\.js$/, use: [ { loader: ‘babel-loader’, options: { presets: [ [‘env’, {‘modules’: false}], ‘react’ ] } } ], exclude: /node_modules/, } ] }, devServer: { contentBase: “dist”, open: true } }; [/bash] Reactの極小アプリを作る wp4react/src/main.js [bash] import React from “react” import ReactDOM from “react-dom” import HelloComp from “./components/HelloComp” document.write(“ “) ReactDOM.render ( , document.getElementById(“root”) ) [/bash] wp4react/src/components/HelloComp.js [bash] import React from “react” class HelloComp extends React.Component { render () { return ( Hello world!! ) } } export default HelloComp [/bash] wp4react/dist/index.html [bash] react wp4 test [/bash] 動作検証 http://localhost:8080がブラウザーで起動します。 [bash] npm run start [/bash] Sassファイルもインクルード sassも一緒に開発するのが普通なので、そのために必要な処理を列記しておきます。 開発用パッケージの導入 [bash] npm i -D sass-loader node-sass style-loader css-loader [/bash] [bash] cd ~/workspace/wp4react/src mkdir sass [/bash] Sassのサンプルコード挿入 wp4react/src/sass/common.scss [bash] @import ‘./modules/first.scss’; [/bash] wp4react/src/sass/modules/first.scss [bash] .hello_sass { font-size: 20px; color: #8372ff; } [/bash] webpack.config.jsで sassを読み込めるように [bash] const MODE = ‘development’ const enableSourceMap = (MODE === ‘development’) module.exports = { mode: MODE, entry: ‘./src/main.js’, output: { path: `${__dirname}/dist`, filename: ‘main.js’ }, module: { rules: [ { test: /\.js$/, use: [ { loader: ‘babel-loader’, options: { presets: [ [‘env’, {‘modules’: false}], ‘react’ ] } } ], exclude: /node_modules/, }, { test: /\.scss/, use: [ ‘style-loader’, { loader: ‘css-loader’, options: { url: false, sourceMap: enableSourceMap, importLoaders: 2 }…

    Read more
  • WindowsとUbuntu(Linux)の共存 ブートローダーが壊れた時に
    WindowsとUbuntu(Linux)の共存 ブートローダーが壊れた時に
    No Comments on WindowsとUbuntu(Linux)の共存 ブートローダーが壊れた時に

    WindowsとUbuntuを共存させていて・・・ Windowsがぶっ壊れた時、Windowsを再インストールしますよね。 WindowsはLinuxの存在無視しまくって、BootローダーをWindows専用にします。 これだと、今まで使っていたUbuntuが起動しなくて困ります。 (こんな使い方してる人は稀なのかもですが・・・) で、どうするか。 UbuntuのBootableUSBメモリを作成 別PCで、Ubuntuのインストール用のISOをダウンロードしてきて、 unetbootin/extlinuxが入っている状態で、unetbootinを使って OSインストール用のUSBメモリを作ります。 USBメモリでブートして、Boot repairでブートローダーを修復 USBメモリを刺したままでPCを再起動し、BIOSの起動順序などを適切に設定して USBメモリからブートするようにしてください。 Ubuntuのインストール環境が起動するので、ここでBoot repairをインストールして ブートローダーを復活させてやります。 [bash] sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt-get update sudo apt-get install -y boot-repair boot-repair [/bash] 下のような画面が出るので、オススメの修復 でブートローダーを復活させましょう。 数分かかります。 動作確認 電源をプチッと切って、Linux系のブートローダーが表示されることを確認します。 Ubuntuが起動するか確認してみてください。 ここにWindowsも候補に入っていたら、そっちも正しく起動するか確認。 Windowsが見つからない場合 Ubuntuは立ち上がるようになったが、Linux系のブートローダーに Windows用のものが見当たらないケースがあります。 こういう場合どうするか。 Ubuntuを普通に立ち上げます。 コンソールで [bash] update-grub [/bash] これで、再起動することで、たぶんブートローダーでWindowsも選択できるように なると思います。 以上

    Read more
  • Ubuntu 16.04 Mint 18で DVDをmp4化する
    Ubuntu 16.04 Mint 18で DVDをmp4化する
    1 Comment on Ubuntu 16.04 Mint 18で DVDをmp4化する

    Ubuntu16.04でLive DVDをリッピングして、タブレットで観たくなったので 調べてみました。 handbrakeというのを使えば簡単にできることがわかりましたので、 手順を書いておきます。 必要ファイル群インストール sudo apt-get install libdvdcss2 dvdbackup handbrakeインストール sudo add-apt-repository ppa:stebbins/handbrake-releases sudo apt-get update sudo apt-get install handbrake-gtk handbrake-cli 起動 スタートボタンから、handbrakeを起動します。 左上の、ソースボタンをクリックして、DVDデバイスを選択します。 あとは右上のプリセットリストで、解像度などを設定して、「開始ボタン」をクリックするだけ。 超簡単でびっくりします。

    Read more
  • AMD Ryzen で Genymotionを使ったReact Nativeのデバッグ環境作成
    AMD Ryzen で Genymotionを使ったReact Nativeのデバッグ環境作成
    No Comments on AMD Ryzen で Genymotionを使ったReact Nativeのデバッグ環境作成

    こんにちは。いやいや、まるまる一日使ってしまいましたよ。 React Nativeの開発を行いたくって、GenymotionでAndroidのエミュレーターを動かして デバッグする環境を作るのに四苦八苦してなんとか解決した顛末をざっくり書いておきます。 GenymotionもRyzen CPUを動かすにはLinuxしかダメみたいな 記述があったので、開発はUbuntuでしましょうね。 Ryzenがあまりに暴れ馬で、もうCore i5 Skylakeを泣く泣く使おうかと思いましたよ。 ハイスペックマシンが利用用途無しとなるところでした。 ※追記 Ubuntu16.04.3で動かすことを前提としてましたが・・・ 諸事情で、Linux Mint18.1で動かさなきゃいけない状況が発生。 Mint18.1+Genymotion+Androidエミュレーター環境も、苦労の末動くように出来たので、 末尾に説明をつけておきます。 Genymotionを入れる これはあちこちにいい記事があるので、 「Ubuntu Genymotion」とかでググってください。 Android Studioを入れる これ、不要かもしれないですが、一応入れておいてください。 インストールを「カスタム」にして、バーチャルデバイスをインストールしたほうがいいかも? (いらない可能性も大ですが、大は小を兼ねる。) JDKを入れる Oracle のページから最新のJDKを取ってきて、インストール。 環境変数をととのえる .bash_profileを調整して、Javaのクラスパスを通したり、PATHを通したりします。 [bash] $ nano ~/.bash_profile [/bash] [bash] CLASSPATH=/opt/jdk1.8.0_144/jre/lib/rt.jar PATH=$PATH:/opt/jdk1.8.0_144/bin JAVA_HOME=/opt/jdk1.8.0_144 ANDROID_HOME=/home/hiro/Android/Sdk PATH=$PATH:$ANDROID_HOME/platform-tools PATH=$PATH:$ANDROID_HOME/tools export CLASSPATH PATH JAVA_HOME ANDROID_HOME [/bash] 調整を反映 [bash] $ source ~/.bash_profile [/bash] OPEN GLを入れる [bash] sudo apt-get install freeglut3-dev libglew-dev mesa-utils [/bash] プロプライエタリなドライバーを突っ込む これはシステムの詳細設定から、「ソフトウェアとアップデート」を選び ドライバーを追加するだけ。 だけ、と書いてますが、これに気づくまでにとっても時間がかかった。 Kernelをアップデートする これは不要かもしれないけれど、kernelをとにかく最新にします。 http://kernel.ubuntu.com/~kernel-ppa/mainline/ このページに行って 4.12系とかの最新のdebパッケージを取ってきて、インストール [bash] sudo dpkg -i linux-headers-4.12.0-041200_4.12.0-041200.201707022031_all.deb sudo dpkg -i linux-headers-4.12.0-041200-generic_4.12.0-041200.201707022031_amd64.deb sudo dpkg -i linux-image-4.12.0-041200-generic_4.12.0-041200.201707022031_amd64.deb [/bash] nodejs npm をインストール 以下を参考にnodejsとnpmの最新版を入れる Ubuntuに最新のNode.jsを難なくインストールする http://qiita.com/seibe/items/36cef7df85fe2cefa3ea react native は npmのversion4を欲しがるので、ダウングレード [bash] sudo npm install -g npm@4 [/bash] React Nativeの環境を整える 本家のGetting Startedを真似するだけ。 [bash] $ sudo npm install -g create-react-native-app $ create-react-native-app TestProject $ cd TestProject $ npm start [/bash] こんな感じのコンソールになるので、しばしこのまま放置 GenymotionにAndroidの仮想マシンを追加する Android 6か7の仮想マシンをひとつ追加して、起動してください。 こんな感じで起動したらOK。 (これがめちゃくちゃ大変だった。半日以上、この画面が出るまで 試行錯誤した・・・) React Nativeのコンソールで「a」キーを押してデバッグする 先ほど止まっていた画面で「a」キーを押すと、Androidのエミュレーターに React Nativeのアプリが起動します。 一発ではうまく行かない可能性が高いです。 Android側の設定とかでネットワークの設定とかを調整しないといけないかもですが・・ そのへんは努力してください。 とにかく、React Nativeのアプリが動いたら、万歳三唱で!!(笑) Linux Mint 18.1で、Ryzen Genymotion の組み合わせでAndroidエミュレーターを起動する 諸事情でUbuntu16.04.3では、ダメで、Linux MintでReactNativeの環境を作らなきゃいけなくなって これまた半日以上かけて、試行錯誤した結果、Mint18.1で Androidエミュレーターを 起動させReactNativeの開発環境を構築できたのでメモ。 まずはこの記事の頭からの作業をする そのまんまです。この記事の頭からの作業は必要ですので、やってください。 その後に、これから書くことを追加で、作業です。 NVIDIAからドライバーをダウンロード NVIDIAから最新ドライバーをゲット! http://www.nvidia.co.jp/Download/index.aspx?lang=jp 自分のグラボの型番を選んで、 オペレーティングシステムで、「すべてのOSを表示」を選んで Linux 64Bit を選択 で、「検索」ボタンを押すと Linux X64用の最新のドライバーのダウンロードページになるので ドライバーをダウンロード。 X Windowを落として、コマンドラインで操作。 Ctrl+Alt+ F1〜F8 あたりのどれかのキーを押して、CUIモードに切り替える。 [bash] sudo service mdm stop sudo init 3 [/bash] インストール実行 [bash] cd Downloads chmod 755 NVIDIA-Linux-x86_64-384.69.run sudo ./NVIDIA-Linux-x86_64-384.69.run [/bash] でインストールが始まる。何個か Yes/No で質問されるので適当に応える。 で、インストールが始まり、最後にコケる(笑) メッセージは [bash] libglvnd EGL vender library config files,うんたらかんたら・・・・ [/bash] これ、失敗したのかと思ったが、実は成功して後処理に失敗してるっぽい。 再起動して、Genymotionを起動し、Androidエミュレーターが動けばめでたしめでたし。

    Read more
  • Linux Mint(Ubuntu) で イマドキの開発しよう! 2017年夏版
    Linux Mint(Ubuntu) で イマドキの開発しよう! 2017年夏版
    No Comments on Linux Mint(Ubuntu) で イマドキの開発しよう! 2017年夏版

    フロントReactJS、バックエンドRailsという構成でサービス立ち上げに関わってた。 思うんだけど、Macを開発に使うのはわかるんだけど、なぜWindows使う人がいるんだろ? どうせリリースするのLinuxベースのOSなんだし、フロントはiPhoneのSafariか AndroidのChrome、まぁあとはWindowsのChrome,Firefox,IE,Edge Macはほとんど使わないんでわからないんだけど、Windowsはほんともっさり動作だよね。 これだけマシンのスペックがどんどん上がっているにもかかわらず、嫌がらせのように 動きがトロい。 コンソールでコマンドライン叩くのがほぼ最近の開発では必須なので、 Windowsのコマンドプロンプトは却下だよね。 で、なんでみんなUbuntuとかに流れてこないのかが不思議。 LinuxMintは知らない人も多いだろうけど、Ubuntuなら誰でも知ってる。 Ubuntuで開発すりゃいいのにね。 エディタはAtomかSublimeがありゃそれでいいし、 どうしてもIDEが欲しい人はEclipse入れりゃいい。 MysqlなんてLinuxのおまけみたいなもんだし、ApacheにしてもNginxにしても Linuxのおまけ同然。 Ubuntu17.10のベータ版入れてみたが、あのUIは醜悪だね。 ありゃ避けたほうがいい(笑) UbuntuのLTS版である 16.04系とかすっきりしてるけどね。 もちろん私は LinuxMint18系をその代わりに使うのですが・・・ 開発に必要なのって コンソール エディタ(Atom or Sublime) git nodejs npm ブラウザー(Chrome) DB(Mysql) Rails docker ハードコピー加工用に画像エディタ(Gimp) ぐらいなもんでしょ。 Webサービスで必要なのは github slack chatwork skype 全部Linuxでさくさく動く。 でも、Linuxで開発してる人少ないんだよなぁ・・・ 5年前ぐらいから、Linuxで開発はとても便利でいいよ!! ってちょこちょこ書いてるんだけど、あまり実践してる人は見かけない。 高いMacをオシャレ気分で扱うのもいいが、 そこら辺に転がってる古いWindowsPCのHDDを50GBほど開けてあげたら Ubuntuの開発環境が 綺麗に収まって、快適に開発できるんだけどね。 何度も言います。 Linux Mint もしくは Ubuntuで開発しようよ!!

    Read more

Back to Top