Rift Core 2.0を触ってみた!
本稿は Oculus Rift Advent Calendar 2017 の9日目の記事です。
前日はnobuhikoさんで、HoloLensでARToolKitを使ってみた でした。
大事ですね。Vuforiaと違ってOSSで使えるので個人で気軽に無料アプリ出してライセンス赤字垂れ流すことはないんですね!
生きよう!
さて今回のアドベントカレンダーの内容ですが、Rift Core 2.0を触ってみた感じなどを書いていきます。
※本当はHoloLensの技術的記事にしようかと思ったけど、あまりにHoloLens勢力が強いので、ちょっとRiftネタを増やしたく、内容を変更しました。。
Sharingについての実装編は、別途書きますね!
Laravelの開発に最適なDockerCompose作ってみた
本記事は Laravel Advent Calender 2017 2日目の記事です。
前日の記事は @nunulk さんで
Undocumented Laravel (1) Routing 編 - Qiita です。
興味深いRouteの話でしたね。Routeなのに道が整備されてなくて迷子になりそうですね。
TL;DR
Laravelで開発するときに環境問わず使える docker-compose のテンプレート作ったのでみんな使ってくれ!
取説が長いのでブックマークして使うときに見るといいよ!
なぜ作ったか
開発用の仮想環境は、Laravelが Laravel Homestead という公式のVirtualBoxイメージがあります。 最近はリソースのオーバーヘッドの大きいOS仮想環境よりも、小さい環境を簡単に作っては壊すコンテナ仮想環境のほうが便利になってきました。 また、WindowsだとVirtualboxの共有ストレージ周りが本当にイケてないなので、Dockerを使いたいです。
また、チーム内で開発OSがバラバラのケース、よくあります。 「それ、MACでないと動きません。」「PHPの案件ですがまずはRuby入れてください」とか担当者をギアナ高地に置いて帰りたくなりますね。
そんなわけで、OSに依存しないLaravel開発用のDocker Composeテンプレートを作りました。 これでみんな幸せになりましょう。
取扱説明書
動作環境
Dockerの動く環境であれば大丈夫です。
セットアップ
1. リポジトリをクローンします。
以下コマンドのようにクローンしても良いですし、GitHubからzipでダウンロードして展開しても良いです。
$ git clone git@github.com:m2wasabi/docker-compose-templates.git myproject
.env
ファイルにて、プロジェクト名(コンテナ名のprefixになる)が設定できます。
好きな名前に書き換えましょう。
PROJECT_NAME=myproject
2. コンテナをビルドします。
$ cd myproject
$ docker-compose build
3. Laravelのプロジェクトをクローン、またはセットアップします
- 既存のプロジェクトからクローンしてくる場合はこちら
./app 以下にLaravelアプリを展開します。コマンドで言えば以下のようになります。
$ git clone git@github.com:<your account>/<your Laravel project>.git app
次にアプリ内の .env
ファイルを編集します。接続パラメータの参考設定は以下
DB_HOST=mysql REDIS_HOST=redis CACHE_DRIVER=redis SESSION_DRIVER=redis QUEUE_DRIVER=redis
これでコンテナを立ち上げます。
$ docker-compose up
コンテナが起動したら、docker-composeとは別に新しいコンソールを立ち上げて、 ./php.sh
か .\php.bat
でコンテナにログインします。
どちらを使うかは使っている環境で判断してください。
PHPコンテナのコンソールに入ったら、中で、以下コマンドを実行します。
/app # composer install /app # php artisan migrate
- 新規プロジェクトを開始する場合はこちら
$ mkdir -p app/public $ docker-compose up
これでとりあえずコンテナが起動するので、コンテナ内で作業します。
コンテナに入るコマンドは、docker-composeとは別に新しいコンソールを立ち上げて、 ./php.sh
か .\php.bat
で起動します。
どちらを使うかは使っている環境で判断してください。
PHPコンテナのコンソールに入ったら、中で、以下コマンドを実行します。
/app # composer global require laravel/installer /app # PATH=$PATH:$HOME/.composer/vendor/bin/ /app # export PATH /app # laravel new /app # composer require predis/predis
以上でLaravelのプロジェクトが作成されたので、exit
コマンドなどでPHPコンテナから出ます。
次にアプリ内の .env
ファイルを編集します。接続パラメータの設定は以下の項目のみ書き換えてください。
DB_HOST=mysql REDIS_HOST=redis CACHE_DRIVER=redis SESSION_DRIVER=redis QUEUE_DRIVER=redis
4. 開発を楽しみましょう!
接続できるURL
- http://localhost:8080/
- https://localhost/ (オレオレ証明書なので警告は出る)
コンテナに入るコマンド
./php.sh
または.\php.bat
./mysql.sh
または.\mysql.bat
カスタマイズ・便利な機能
PHPのカスタマイズ
PHPの構成は ./docker-assets/php-fpm/Dockerfile
に全て記述されています。
PHPの構成を変更したい、追加でライブラリを導入したい。
そんなときにはこのファイルを編集しましょう。
PHPコンテナのOSに、容量の少ない Alpine Linux 使っています。
導入可能なパッケージは公式サイトのパッケージ検索で探してみましょう。
Alpine packages
RUN apk add --no-cache \ zip \ ~中略~ openssl-dev
PHPモジュールのインストールに docker-php-ext-install
を用いています。
インストール可能なモジュールは、コンテナを起動して docker-php-ext-install
をオプションなしで実行すれば、ヘルプが出るので、そこを見るとよいでしょう。
RUN docker-php-ext-install \ pdo_mysql \ ~中略~ zip
composerの導入は、公式のコマンドそのままですがパッケージのダウンロードを高速化するために hirak/prestissimo
を導入しています。
RUN curl -sS https://getcomposer.org/installer | php ;mv composer.phar /usr/local/bin/composer; RUN composer global require hirak/prestissimo RUN composer global require phpunit/phpunit
MySQLのカスタマイズ
./docker-assets/mysql/custom.cnf
には、MySQLの追加の設定項目を記述します。
古いバージョンのLaravelやMySQLを使う場合に、文字コードを'utf8'変更したい場合などに便利です。
また、以下の部分のコメントアウトを外すと、 ./mysql_data/general-query.log
にクエリログを吐きだします。
そのまま運用するのはストレージが危険ですが、レースコンディションの解析などの検証時には便利です。
general_log=1 general_log_file=/var/lib/mysql/general-query.log
PHPのカスタムスクリプト
ディレクトリ ./docker-assets/php-fpm/scripts
は、
PHPコンテナの /scripts/
以下にマウントされます。
ここに実行可能なスクリプトを書いておくと、
コンテナ内から直接実行させるのに便利です。
$ docker exec -it myproject_php-fpm /scripts/db_reset.sh
Laravelのエンドポイントを/api/以下に変更したい
./docker-assets/nginx/conf.d/vhosts-main.conf
の14~22行目を以下の様に変更します。
あとLaravel側でもRouteの変更は必要です。
## use /api/ as php framework location /api/ { try_files $uri $uri/ /index.php?$query_string; } # # use / as php framework # location / { # try_files $uri $uri/ /index.php?$query_string; # }
Swaggerのエンドポイントを追加したい
まず ./swagger/
ディレクトリに静的コンテンツを設置します。
docker-compose.yml
の30行目のコメントを外します。
volumes: - ./swagger:/swagger - ./docker-assets/nginx/conf.d:/etc/nginx/conf.d
続いて ./docker-assets/nginx/conf.d/vhosts-main.conf
の24~27行目を以下の様に変更します。
## use Swagger directory location /swagger/ { alias /swagger/; }
LaravelやめてNode.jsのサーバにしたい
docker-compose.yml
と、./docker-assets/nginx/conf.d/vhosts-main.conf
のそれっぽいコメントアウトを見てください。
FAQ
HoloLensでSharingする前に確認したほうがいいこと
11/25(土),11/26(日)の2日間でXR GameJamに参加してきました。
東京会場は、
25日はXRもくもく会と、
26日はプログラマのためのUnity勉強会と日程被りで、
同ジャンルで喰い合いになったため人数は少なかったですが、
良い体験が得られた会だったと思います。
夜に家で仕込んで完成させたSharingが2日目現場でまったく動かないまま終了になったので、
Sharing の実装に入る前に、どの方法で Sharing したらよいか、
各種Sharing の仕様と判断方法を調べました。
ハッカソンやイベントでSharing を行う前に、必ず現場のネットワーク要件の確認をしましょう!
コケるなら早いほうが良いので、0歩目でコケるのは超大事です。
続きを読む
JaneStyleの4.0.0が出たのでずっと使える広告消し手動パッチの当て方について書く
タイトルの通り。β4 4.0.0 が出たそうです。5ch好きの皆様には朗報かもしれませんね。
5ちゃんねる専用ブラウザ 「Jane Style」 テストバージョン配布ページ
~2017/11/11追記~
4.0.0正式版がリリースされたので、URLは正式版の以下が正しいです。
/~2017/11/11追記~
うちの環境では広告を表示するとアプリがフリーズして何もできないです。
某所に毎回時間差で動かすための書き換えアドレスが出るのですが、 毎回アドレスがアップされるの待ってるのも残念な人なので、 置き換えるべき検索を書いときます。
製作者側で対策されない限り今後も使える見込みです。
これはチート行為ですね。バイナリの書き換えは書き換えた人の責任において行ってください。 バックアップはとりましょう。壊れたって知らんです。
書き換えに使うツールはStirlingとかでいいんじゃないでしょうか。
それではオペの時間です。
続きを読む技術書同人誌初心者が技術書典3で爆死したので戦略を練る
台風の迫る中技術書典3、無事完了しました。
関係者の方々、来場された方々、お疲れさまでした。
僕はというと、結論から言うと
刷りすぎた赤字ひどい助けて
技術書典主宰のひつじ氏のレポートを見ると
当日の頒布部数はサークル平均137部です。完売率は82.6%です。
激甘設定に見えます。
今回自分の出した本のスペックは
- 60P 500円
- 部数 100部
- かかった費用 40kぐらい
- 売れた部数 35部
赤字で焼き肉3回行けるぜ…
何がまずかったのか
印刷形式
調子に乗ってオフセットで刷ったけど、
人々の知らないものを広めたい目的で書く、
ニッチを自認するならオンデマンド一択だ。
部数
上記の印刷形式と関連するのですが、
オフセットの場合50部も100部もあまり変わらない値段になります。
これが罠で、完売するまで帰れま10
- 誰もが知ってるアルファなパーソンが
- 神絵師の描いた表紙で
- 誰もが知ってるテーマの深掘りを扱うなら
部数アクセル踏んでも構わないけど、
そんなサークルになっちゃったら12時に完売御礼ゴールインでいいんだ。
勝ってから増刷すればいいんだし。
わきまえよう、MINOTAKE
昼下がりにさくっと切り抜けて幸せになろうよ
紙の本はリスクが大きいので、多少赤かギリギリでもいいので、確実に完売する部数、30~50ぐらいにしとこう。
電子版は在庫リスク抱えなくて良いのでとりあえず作っとくといいかも。
価格
100部MAXでトントンぐらいの価格設定でやると、いつまでたっても幸せが降りてきません。
働いても働いても楽にならない状態に陥ります。
逆に言うと価格設定は7割捌けでトントンぐらいにもってかないと100部印刷はリスキーです。
- 紙+電書 60P 500円 オフセット
- 電書のみ版 100円
んなぁ~
安かったのかな。
もし同じスペックで刷ってしまったら以下の価格で設定するかな…
- 紙+電書 700円 (もしくはページ数減らす)
- 電書のみ 300円
それよりもそもそもオンデマンドの少部数で原価を抑えるほうが肝要です
表紙
初期の衛藤ヒロユキ先生*1みたいな絵柄で良くもなく悪くもなく でしたが、
表紙だけで爆売れするということはないですが、一定のクオリティの足切りと底上げ効果があるので侮れないです。
最初に手に取ってもらえるというのは大事。
神絵師に依頼すると印刷代ぐらいの費用を報酬として支払うのですが、その原価の捻出方法が分からないので、隣のサークル(nayucolony)さんが
ガチでかわいいイラストで戦っていたので、どうやったのか聞いてみたら、 相方さんの妹さんに描いてもらったそうで、それなんて紗霧ですか。
そういえば前回の技術書典2のときも神田部品さんに聞いたら、妹さんが表紙担当されてたな。
というわけで勝利の鍵は絵のうまい妹です。
売り子
常に2人はブースが狭すぎて辛いですが、
完全ソロプレイだと、目の前においしそうな本がぶら下がってるのに、買いに行けない、
トイレに行けない、
もちろん飯も。
なので、早々に完売御礼する生存戦略でない場合は、
1日付き合ってくれる友達を探して巻き込んだ方が幸せです。
そんな友達募集中です。
初心者におすすめの戦略
- オンデマンドで30~50部
- とりあえず電子版は作ろう
- 価格設定は安すぎず 爆死しない設定にしよう
- 神絵師雇う余裕はないので絵のうまい妹を探そう
- 自分が動くために完売するか、友達を巻き込もう
今回はズタボロです。
余裕が出来たらルーター買い替えようと思ってましたが、これは予定変更です。
納豆とTKGともやしの生活ですが、そろそろ1日1食を検討するかもしれないですね。
じゃあ、技術書書くのはもうやめるか?と聞かれると、
そんなわけないじゃないですか
これだけ情報が得られたなら、次は失敗しないと思います。
続きを読む