さんさろ

さんさろ

プロダクトエンジニアの雑記&技術、たまにドイツ

Laravel5.5でVue.jsを使うまで

Laravel5.5 で Vue.js を使う

Laravel には Vue.js が標準で入っていると聞いていたので使ってみたいなーと思ってました。デフォルトで入ってると言っても、使うまでにちょびっと準備が必要ですので、その手順をメモします。

ちなみに、本家はこちら。

JavaScriptとCSSスカフォールド 5.5 Laravel


環境

  • Laravel5.5 (Vue.js 2.1)
  • CentOS 6.9


JS の依存解決はNPMを使っている

PHP の依存解決はご存知の通り composer ですが、JS の依存解決は npm を使っているらしい。

開発時点の元としてほとんどのアプリケーションで役立つだろうBootstrapとVueを提供しています。これらのフロントエンドパッケージをインストールするため、LaravelはNPMを使用しています。

composer で言うところの composer.json は、プロジェクトルートに package.json というのがあって、

JavaScriptアプリケーションを構築開始するために役立つよう、vueやaxiosのようなパッケージがデフォルトでLaravelのpackage.jsonファイルに含まれています。自身のアプリケーションの要求に合わせ、package.jsonファイルへ自由に追加、削除してください。

とのこと。

んで、Laravel5.5 のプロジェクト作った時点で Vue.js はすでにpackage.json に含まれていますので、プロジェクトルートで

$ npm install

を叩いてあげればいいんですけど、もちろん npm が入ってないと動きません。

なので、先に npm を入れます。


npm を入れる

そもそも、npm とは Node.js のパッケージを管理するツールのこと。

参考 便利なパッケージ管理ツール!npmとは【初心者向け】 | TechAcademyマガジン

CentOS6.9 に yum で入れます。

参考 node.jsをyumでインストールする(centos6.5) - Qiita

リポジトリは epel を使うとするところが多かったんですが、epel を使って入れると

$ node --version
v0.10.48
$ npm --version
1.3.6

「なんかバージョンがいやに低い……??(´・ω・`)」となって、とりあえず $ npm install 叩いてみてたら、見事にエラー出まくりで2時間くらいハマりました。

んで、多分これはそもそも npm のバージョンが低いな?と思って、nodejs と npm の入れ方を変えました。

参考 CentOSに新しめのnodeをインストールする | ハックノート

$ curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash -

で、epel が入ってて途中でトランザクションのコンフリクトが起きたので、そうならないために、

$ pwd
/etc/yum.repos.d

こいつの中にいる、epel リポジトリを使わないように

enabled=0

リポジトリ設定ファイル中のenable をすべて 0 にして、

# yum install nodejs npm

したら、新しめのがインストール出来たようです。

$ node --version
v10.2.1
$ npm --version
5.6.0


npm を使って vue.js を入れる

んで、いざ。

プロジェクトルートで、以下を叩きます。

$ npm install
.
.
.
⚠ The `/home/vagrant/common/project-name/node_modules/pngquant-bin/vendor/pngquant` binary doesn't seem to work correctly
  ⚠ pngquant pre-build test failed
  ℹ compiling from source
  ✔ pngquant pre-build test passed successfully
  ✖ Error: pngquant failed to build, make sure that libpng-dev is installed
    at Promise.all.then.arr (/home/vagrant/common/project-name/node_modules/pngquant-bin/node_modules/bin-build/node_modules/execa/index.js:231:11)
    at process._tickCallback (internal/process/next_tick.js:68:7)
npm WARN ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! pngquant-bin@4.0.0 postinstall: `node lib/install.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the pngquant-bin@4.0.0 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vagrant/.npm/_logs/2018-05-26T09_14_31_922Z-debug.log

あるぇ、またエラってる\(^o^)/

✖ Error: pngquant failed to build, make sure that libpng-dev is installed

とりあえずなんか足りないみたいなので、入れてあげる。

# yum install libpng-devel

これ入れてから再度チャレンジ。

$ npm install
npm WARN deprecated gulp-util@3.0.8: gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5

> pngquant-bin@4.0.0 postinstall /home/vagrant/common/project-name/node_modules/pngquant-bin
> node lib/install.js

  ⚠ The `/home/vagrant/common/project-name/node_modules/pngquant-bin/vendor/pngquant` binary doesn't seem to work correctly
  ⚠ pngquant pre-build test failed
  ℹ compiling from source
  ✔ pngquant pre-build test passed successfully
  ✔ pngquant built successfully
npm WARN ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: minimist@1.2.0 (node_modules/fsevents/node_modules/rc/node_modules/minimist):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, open '/home/vagrant/common/project-name/node_modules/fsevents/node_modules/rc/node_modules/minimist/package.json.3224473585'

added 120 packages in 64.377s

WARN は出てるけど、とりあえず行ったっぽい。

あともう一息。

$ npm dev run
.
.
.
 95% emitting

 DONE  Compiled successfully in 14075ms                                                         09:22:57
.
.

おお、なんとか終わったっぽい。

$ cd /home/vagrant/common/project-name/node_modules
$ ls
.
.
vue
.
.

ファイルがいっぱい出来てます。こっちにも。

$ cd /home/vagrant/common/project-name/public/js
$ ls
app.js

ふむ。

使い方はよくわかりませんが、それはこれから勉強していくということで。

これで一応、vue.js を使う準備が出来た、のかな…。多分。


参考

Laravel5.5でVue.jsを使ってみた - あ、しんのきです


Lumen5.5で自分で作ったClassを使う

composer 管理でない、自分で作った Class を使う

やりたかったのは、

app/Hoge.php

にある自作の Class を、

app/Http/Controllers/FugaController.php

で使いたかっただけ。

やり方

1. 自作クラスに namespace を設定してあげる。これ抜けてたので少し考えてしまった。

<?php

namespace App;

class Hoge {
.
.

2. あとは普通にcontroller 内で使うだけ

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Hoge;

class FugaController extends Controller
{

ままなりませんなぁ。

Lumen5.2からsessionは入ってないらしい\(^o^)/

Lumen5.5 で session 使おうとしたんですけど

自分が趣味で作ってるサイトで、スクラッチで書くのは嫌だけど、重たいフレームワーク使うのもヤダ。なので Lumen5.5 を使おう!

ということで軽量と噂の Lumen でもりもり組み込んでいたんですけれども。

Laravelでやっているように、

HTTPレスポンス 5.5 Laravel

return redirect('/path')->with('flashMsg', '成功!');

って感じでリダイレクトにフラッシュメッセージを持たせようとしました。

そうしたら……

Call to a member function flash() on null

こんなエラーが!

なんだろ……?null から flash() を呼び出してる?そら出来ませんわな。でもなんで null ?と思って色々調べていたら、本家に書いてありました。

本家:Release Notes - Lumen - PHP Micro-Framework By Laravel

As such, sessions and views are no longer included with the framework. If you need access to these features, you should use the full Laravel framework.

「Lumen5.2 から sessions と views はフレームワークに入ってないよ。これ使いたかったらフルスタックなLaravelの方使うべきですね」って………

マジで??(´・ω・`)

フルスタックな必要無いからLumenで〜とか思ったけど、フルスタックな必要あった感じなんですかね。いや、session さえあればいいんですけどね……?

そうか、しかし、session 無いと困ったな。

Laravel でも、いいけど……好きだし。でも、そんな、フルスタックな必要は無いんですって……session はいるけど!


一応回避方法もあるにはあるようですが

lumen 5.2 でもSession使う - Qiita

うーん、公式さんの言う通り、Laravel ………使うか……??

Bitbucket で障害がありました

いえ、それだけです。

これがリリース前日とか当日じゃなくて良かったです。

 「プリリクエスト」になってます。急いでたのかな。

エラー内容、もうちょっと具体的だと嬉しかったんですけど……。最初、私が何かしたのかと思ってちょっと焦りました。

 

Bitbucket さんの障害のようで。

 

 もうこうしたい気分であります……

Butbucket さん、がんばってーー!!

CakePHPでリファクタリングする際にとりあえず見る所

やっぱりDB周りです

今引き継いでやっているプロジェクトがCakePHP2系で、そろそろ△年経つシステムですのでちょこちょこリファクタリングすることもあるのですが。

以前、「別サーバから API を叩きに来るタイミングでLAが凄い上がるのでリファクタリングしましょう」という課題があって以下の事をした時に、LAが10分の1だか15分の1だかになった事があって、「リファクタリング……だいじ………!!」としみじみと思った経験から、CakePHP に限らず DB とのやり取りには気を使うようになったのでした……。

影響範囲が少ない時には、結構他の課題と一緒にやってしまいますが、「処理重くね……?」と思った時にまず見る点を備忘録的にちょっとまとめてみます。

多分、CakePHPer さんにしたら、「え……今更……?」という内容だと思いますががが。

1.データ取得時の recursive 設定

これ超大事。だと思う。

https://book.cakephp.org/2.0/ja/models/model-attributes.html#recursive

そもそものお話ですけど、CakePHPの公式的には、AppModel で recursive を -1 に設定しておきましょうとなってます。

recursive レベルは -1 にしておいたほうがよいでしょう。 こうしておくと、不要な関連データを取得してしまうのを回避できます。 これは、おそらく find() を呼び出すほとんどの場合に望ましい結果になります。 必要な場合にのみ recursive レベルを設定して関連データを取得させるか、もしくは Containable ビヘイビアを使いましょう。

AppModel に次のような設定を追加します。:

public $recursive = -1;

まあね、最初からそうなってればいいんですけどね。なってないんだからしょうがないですよね。

リファクタリングでこれするには、流石に怖すぎて出来ないかなぁ……(;´∀`)

(数えたらモデル94個あった……)

なので、まあ、こういう対応が必要になってくるわけなんですが……。

recursive 設定されていない場合のデフォルトはレベル1です。つまり基本全部の find で recursive がレベル1なわけです。困った。

例えば、10個近いテーブルとリレーション(CakePHPだとアソシエーション)張られてるのに recursive 設定されてなかったりとか、たまに

$array = $this->ModelName->find('all', array(
    'recursive' = 2,
    ...
));

とかなってると「……………\(^o^)/」ってなります。いや、あのね。それね、全部………ぜーーんぶ取ってきてますけど、それホントにいります?ってなります。

いくつもテーブルがぶらさがってて、しかもそれが結構な量だと洒落になりません、マジで。

現に、これで凄まじい重さのことがたまに(結構?)ありました。

特にアクションログのような物まで一緒に取って来てると、天を仰ぎたくなります。

あまり情報要らないのであれば、私は大人しく

$array = $this->ModelName->find('all', array(
    'recursive' = -2,
    ...
));

を設定します。 あるいは、

$this->ModelName->recursive = -2;

ただ、これだと肝心の欲しいデータが取れない時があるんですよねぇ。確かに、便利だからリレーション張ってるのに、それ意図的にちょん切るわけですからね。必要な時に取れないのでは困ります。

そこで出てくるのが、これ。

2.ContainableBehavior

そう、データ取得の際にリレーションが深い所の値が欲しい時は確かにあります。けど、recursive が 2 で深い所のを全部取ってくるのは多すぎる。

という時に、recursive は 2 だけど、その中のこれとこれだけ取ってくる、ということをやります。

$this->User->Behaviors->load('Containable');
$users = $this->User->find('all', array(
    'contain' => array(
        'Post' => array(
            'title',
            'modified',
        ),
        'Profile' => array(
            'age',
            'postcode',
        ),
    ),
));

要は、本当に「必要なものだけ」取ってくるわけですよね。理に適ってます。

でもこれ注意する必要があるのは、リファクタリングの際だと特に「本当は Profile の address も必要だったのに!」って怒られたりすることがあることです。

本当に必要なものがちゃんと取れてるのかは、debug などしてデータをしっかりと確認する必要があるということですかね。

「最初からやってくれれば後から数多あるキーを虱潰しに確認する手間も省けたのになぁ〜!(・∀・)」とかは言ってはいけないのです……。

長く使うつもりで、それでも少しずつ、コードを綺麗に、少しでも早い処理になるように、日々リファクタリングしていかねばなぁ、と思った今日この頃。

PHPカンファレンス福岡に申し込みました

2018年6月16日(土)!

PHPカンファレンス福岡が今年も行われるそうです!ドンドンパフパフ!

phpcon.fukuoka.jpカンファレンスや勉強会がもう、ホント、好きで。去年初めて行ったのですが、去年もすごく楽しかったです。去年はブログを持っていなくて、「ブログに書くまでがカンファレンスです」って言われていたのに、「なん……だと……(・・;)」となったのも記憶に新しい。

もう1年経つそうです。速い。

カンファレンスの何が楽しいって、まだPHPer 3年目のぺーぺーにとって、同じ戦場で戦う人たちがこんなに居るんだなって思ってなんだか妙にわくわくしたし、ララベラーに会えて嬉しかったし、色んな人達の、この業界が熱いとかあのジャンルが今度絶対流行るとか、面白い話を身近で聞けて、疑問に思った事をその場で聞けて、凄いモチベーションアップにも繋がりました。

もちろんセッション聞いて勉強するのがメインの目的ですが、でも私の中ではそれは目的の内の50%くらいの割合で(スミマセン)、もう半分はやっぱり前夜祭とか懇親会とか後夜祭でわいわい皆さんとお話出来るのがもう、楽しくて。

PHPカンファレンス福岡2018の実行委員長さんなんかもおっしゃってますけど、まさに「大人の文化祭」みたいで、ようはお祭りなんですよね。

tech.innovator.jp.net

てな事で、もう申込みが出来るようだったので早速申し込みました。もちろん同日同会場で行われる懇親会も!

前夜祭や後夜祭も今の所2つ確認しているので、どちらかには必ず行きたい。どっちも行ってみたいけど、体力が持つかなー……。

 

今年は東京は12月15日(!)みたいですし、こっちもまた行きたい(餃子食べに)。

qiita.com今年は福岡移住する計画もあるし、ドイツにも行ってきたいし、楽しい1年にしたいなー(もう4月ですが)。

両子寺に行って来ました

いい天気すぎて

この土日があまりに良い天気だったので、どこかに行きたいな……ということで、のんびり神社とお寺を巡って来ました。

本当は河津桜を県南の方に見に行きたかったんですが、時期が微妙だったようで、今回は見送りです……また来年。

 

春日神

土曜日は映画を見たり買い物したりしていたんですが、ずっと屋内だったので、折角のいい天気なのに勿体無い……と思い立ち、今住んでいる所のすぐ近くにある神社に行きました。

だーーいぶ遅い、初詣です(笑

http://www.kasuganomori.jp/

有名な神社さんがあるのは知っていて行こう行こうと思っていたのですが、結局今頃になりました。

土曜の昼間ですが、特にイベントがあるわけでもない境内は人もほとんどおらず、のんびりと境内を散歩することが出来ました。

と言っても、境内は歩けば10分もかからずに廻れるくらいの大きさなのですが、亀の居る池を眺めてぼーっとしてみたり、梅の木の上でひよひよ鳴いている2羽のうぐいすを梅と一緒に見上げてみたり、特に大したことはしてません。

していませんが、さわさわと風に吹かれて木が立てる音とか、たまに参拝者の声とか、たまに宮司さんの詔の声とかを聞きながら、ぼーっとするだけなんですけれども、なんとも言えず、癒やされました。

帰りに今年初のおみくじを引いたら末吉でつい笑ってしまいましたが(笑

 

両子寺、明礬のプリン、そして足湯

日曜日は、昼頃から国東へ出かけました。

大学の頃に一度国東の両子寺(ふたごじ)には来たことがあって、その時は留学生と一緒の団体行動だったのであまりのんびりとは見られず、いつかまたゆっくりと来たいと思っていたのでした。

車で1時間半くらいなので、ちょっとした遠出になりました。

拝観料は大人一人300円。参拝客の方もちらほら見えました。

これは護摩堂です。ホントにいい天気だった……。

多分お坊さんではないと思うんですが、護摩堂の中で経を上げている方がいて、私は浄土真宗なので、天台宗のお経?は耳馴染みが無く新鮮でした。

いつまでも聞いていられるなぁ……。どの宗派にしても、お経って好きです。聞いててどこかほっとするというか。何でですかね。

そういえば、リベンジとばかりにまたおみくじを引いたら、今度は大吉でした。やった…!!

両子寺はパンフレットを見てみると、境内は結構上の方まである様子で、まるで登山……という趣でしたが、ブーツで来ていたこともあって、中腹?くらいにある「奥の院本殿」までにしておきました。

今度来る時はスニーカーで来よう。

そして本殿の写真撮るの忘れました。あんまり素敵過ぎて…。

両子寺の境内はとても広くて、川なんかも流れていて、水のせせらぎを聞いてぼんやりしてました。癒やされます…。

 

帰りは明礬の岡本屋に寄ってプリンを食べ(ついでに2個持ち帰り)、鉄輪の市営の足湯でぼんやり湯けむりを眺め。

リフレッシュ出来た週末でした。

  

3.11 と言えば

最後になりましたが、今日は東日本大震災から7年となる日でした。

7年前のこの日、東京の会社で働いていた私は、皆で仲良く帰宅難民をしていたのを思い出します。16時ごろに会社を出て、新子安にある家に帰り着いたのは夜中の12時を回った頃でしたっけ。

金曜日だったのが幸いだったとは言え、月曜日は駅が入場制限かかっていて会社に辿り着いたのが昼過ぎていたり、輪番停電(のちに計画停電と言い換えられた)で結局早退して「何しに会社行った…?」って感じだったり、駅の自販機の照明が落とされていて、当時導入されて話題になっていた全面液晶の自販機が沈黙しているのを見て、なんとも言えない気持ちになったり……色々ありました。

ツイッターを初めたのも確かこの時でした。

兄が岩手の沿岸に住んでいましたので、震災直後にメールが一通母にあったそうですが、その後は全く連絡がつかず。2日経っても全然連絡がつかないので、父は「覚悟しておいた方が…」と言い出す始末で。

結局3日ほど経って、兄の友人の母親から我が家に、兄が無事であるとの連絡がありました。どうやら、兄の友人がかろうじて彼の母親と連絡が取れたようで、その際に兄が無事であることを家族に伝えて欲しいと言伝してくれたそうです。

兄の車は流されておじゃんになったそうですが、兄は丘の上の小学校に避難していて無事でした。流石に生きた心地がしませんでした。

そういえばこの時に、兄は奥さん(当時青森に居たので無事だった)とも連絡が付いていなかったらしいのですが、Google が当時やっていたパーソンファインダーという安否確認を登録出来るサービスに、私が「兄は無事、丘の上の小学校に避難中」であることを登録していて、それを兄の奥さんは見て、兄の無事を確認したということでした。

どこで何がつながるか分かりませんね。

インターネットの可能性について、全く違う視点から見ることにもなりました。

また、後に兄から避難生活の話などを聞いて、日頃からの備えの重要性を思い知りました。今でも、揺れて避難する際には持って出られるように、バッグに避難用具を入れたものを用意しています。

 

この日が来る度に思い出しますが、災害の多いこの国で生きている限り、他人事だと思わずに、災害に対する備えをするのが、とりあえず個人で出来ることなのかなあ、と感じる今日この頃です。

避難用リュックの中身、久しぶりに更新しようかな…。

 

ゆふいん源流太鼓見てきました

何気に濃い1日になりました

今日は生憎の雨でしたが、私が楽しみにしていたイベントが2つあって、それらを堪能することが出来て何気に濃い楽しい1日でした。

 

大友宗麟鉄砲隊

竹町で昼から開催されていた豊後FUNAI芸術祭のステージイベントに、大友宗麟鉄砲隊が出演するというので見に行きました。

sorin-hinawa.lolipop.jp大友宗麟鉄砲隊は、去年のきつきお城祭りの際に演武?の披露があって、それで「面白いな〜」と思って印象に残っていたのですが、この度、すぐそこでまた舞台をするというので見に行ったのです。

何をするのかと言うと、名前の通り、鉄砲(火縄銃?)を撃つのです。

もちろん弾は入っておらず空砲なのですが、それ自体が興味深いのも去ることながら、甲冑を着込んだおじさま方が、古い感じの喋り方を混ぜながら口上を述べたり、号令を掛けたり、観衆を巻き込んでエイエイオーの勝どき(なのかな…?)を上げたりするのが楽しかったのです。

去年のお城まつりではいろんな銃の紹介とか、たくさんの銃の一斉射撃?もあったんですが、今日は10分足らずの短い時間でしたので、それぞれの武将の紹介(武将になりきったおじさま方の名乗り上げ?)と、号砲の2つでした。

最初の号砲の際、音がまあすごいので会場に居た人たちはそれはもう驚いてすごいザワザワしてましたね。

屋根もあって半屋内だからなぁ。素晴らしく響いてましたし。

鉄砲隊の次の舞台が幼稚園児の遊戯か何かだったようで、舞台袖に居た園児達が大きな音に驚いて泣き出したりして。

それまで「大友宗麟公に命ぜられ、遥々400年の時を経て、我ら鉄砲隊が馳せ参じ候」(こんな感じだったような……)みたいな古めかしい言葉でしゃべってたおじさまが、舞台袖で泣いてる子達を見つけて「驚いたかなぁ、ごめんね?」って急に好々爺然とした喋り方になって、会場が爆笑の渦になったり。

「では次なる号令は、〜〜殿にお任せ致す」「承知仕った!」みたいなやりとりした後にマイク持った武将の方が、「みなさん、こんにちは。盛り上がってますか〜!?」って急に現代風に喋り出してめっちゃ笑ったり。

いや、今回も楽しませてもらいました。

好きだなぁ、なんかいいよなぁ、こういうの。

舞台やトークが単純に楽しいのもそうなんですが、地域の幅広い年齢層の人たちが、長いスパンで歴史を研究して語り継いだり、土着の文化を守る取り組みをしたり、町おこしみたいなことやってたり、そういうのを垣間見ることが出来て、なんか好きです。

 

余談ですが、この後に仮装行列が予定されていて、レイヤーの皆さんがわんさか揃っていて一部ちょっと異様な雰囲気でした。レイヤーさんてそんな間近で見たことなかったので結構びっくり。眼福眼福、いいもの見させてもらった。

駐車場から歩いて会場に向かってる時に一番最初に見つけたのが鶴丸で地味にテンション上がった\(^o^)/ でもやっぱりFGOが多かった気がします。

 

ゆふいん源流太鼓!

夕方からは第25回の大野町どんど焼を見に行ってきました。

第25回大野町どんど焼 | 豊後大野市

どんど焼のお祭りですが、私の目的はゆふいん源流太鼓です。いえ、もちろんどんど焼もちゃんと見て来ましたけども!

 

昼間はしっかりと雨が降っていたものですから、昼前に一回実行委員会さんに電話で問い合わせると、「どんど焼自体はしますが、イベントステージはその時の天候によって決まるので、なんとも言えない」という回答でした。雨だったらイベントステージは中止になるそうで。

(これも余談ですが、実行委員さんは忙しくて電話にすら出られないのではとか思っていたら、電話にもちゃんど出てくれて、「天候次第でなんとも言えないので…すみません」ととても申し訳無さそうにおっしゃってくださって、対応も丁寧ですごい好感が持てました)

 

雨雲予報見るとなんとか行けるんじゃない…?と思ったので、とりあえず行ってみようということにしてました。

イベント自体は16時半から始まっているのですが、私が会場についたのは18時ちょっと過ぎ。会場に着いた頃には雨も何とか上がってたのでホントに良かったです。

会場は土のグランドだったみたいですごいぬかるんでましたが…。

 

会場に着いてまずは腹ごしらえということで、カレーを買ってもそもそ食べてました。焼き鳥とかうどんとかカレーとか肉まんとか、色々ありました。あとで司会の方がうどんがおいしい椎茸が大きくてうどんがうどんが、って言ってたのでうどん食べればよかったなと少し後悔。

そういえば世のカレーは普通辛いんだという事をカレーを食べながら思い出しました(辛いの大の苦手なのです……)。余計にうどんにしとけばよかった。

飲み物がコーンスープとコーヒーと甘酒しか無くて、何か持ってくれば良かったと後悔。コーヒーは飲めないし甘酒は好きじゃない(そもそも車だ)し、カレーにコーンスープ…?だしで、ちょっと失敗でした。

 

そんなこんなで、19時少し過ぎからは、いよいよ、ゆふいん源流太鼓です!

 

舞台が始まる前からわくわくしながら席に陣取って、準備の様子から眺めてました。わくわく。

源流太鼓の舞台は、笛の音から始まり、大きな太鼓や小さな太鼓とか、肩に掛けて両方の面を叩いて音を出したり、「そんなに叩いてて握力なくなって太鼓バチがすっぽ抜けたりしないのかな」って思うくらい叩いていたり、多彩な技術が盛り込まれていて飽きることがありません。

しかも完成度がとにかく高い。レベル高杉(誤字)……。

これ、こんな片田舎のお祭りに出るような人たちじゃないような(祭りに失礼)。

拍手したいのにする暇もないくらい、代わる代わる色んな演目があって、本っっ当にあっと言う間の40分でした。

もうね、心臓が震えた(物理)。

太鼓に横笛?も入ってきて、途中は二人で吹いたりして。とても綺麗な音色だし、絶妙なハーモニーで、なんて言うんですか、もう……たまらん(*´ω`*)

おじさまやお兄さん方の迫力ある太鼓の演奏と、そしてやっぱりあの掛け声!

あれ好き過ぎる……あの「いよっ!」ってやつ……かっこ良すぎません?

大音量で聞いて、間近で惜しみなく余すことなく観ることが出来て、控え目に言って最高でした……本当にありがとうございました。

 

ゆふいん源流太鼓の皆さんは、なんていうか、舞台ももちろん凄いんですけど、準備や片付け、その後の主催者の方と挨拶してるシーンなどを見ても、とても礼儀正しく、隙がない。無駄もない。

いや、マジなんなのこの人達……凄すぎくないですか……見習わねば………。

 

でもそう言えば、大分駅前でやってたプレイベントの時はご年配のお父さんがいたと思ったんですが、今日は欠席されてたそうで。残念……この方の掛け声がまた渋くて好きだったんですけど。

 

次回はどこでするのかな……見に行きたい……。

 

 

どんど焼

で、このお祭りのメインは本当はこっちです。

↓の写真は火を付ける前のどんど。天辺には、白飛びしてますが「家内安全」とか「五穀豊穣」とか書かれてて、お守りとかと一緒に焚き上げることで今年一年の家内安全などを願うということのようです。

源流太鼓の後に5分程打ち上げ花火があって、その後、火男と呼ばれる役の方が松明の火を持って、それを役員さんとかに分けて、複数人の持った松明からどんどに火が入りました。

 ↓右側のふんどしの方が火男さん。独身独身って司会の方に連呼されてた(笑

どんどは細い竹が束ねられてるみたいで、火が付くとパチパチと凄い音がしてました。

途中で束ねていた紐が燃えて、束ねられていた竹が花みたいにパッと開いて綺麗でした。司会の方も「今年は特に素晴らしいですね!」とか何度も言っていたので、いつもはこんなに綺麗には行かないんでしょうか。

それにしても、そこそこ離れてても、結構熱が伝わってくる(・・;)

いや、結構大きな火でしたね。こんなに大きな火は滅多に見ることが無いってくらいには。途中でじりじりと後退しながら見てました。

ぼんやり火を眺めて、火が小さくなった後は竹に吊るした餅を焼いて食べるまでが、一連の流れのようです。

あー面白かった。いい1日になりました。

 

 

rubyを入れ直したら変なエラーが出て怒られました

rubyを入れ直しました

以前、rbenv を /usr/local の下に入れたんですが、権限でたまにコケることがあったので、 /home/vagrant/.rbenv てな感じで入れ直しました。

ついでに、前回の記事で書いた通り

binthec.hatenablog.com

gem をプロジェクトの下の vendor に入れるようにしました。

いざアプリを立ち上げようとすると、なんとまあ見慣れないエラーが登場。passenger のエラー?ようです。

Error: Web application could not be started

と書いてある。

うーむ……なぜかな。Details には「時間内にスタート出来なかった」と書かれてある。ううん……?ruby の場所入れ替えたから怒ってんのかな。

と思ったんですけど、ただ単に本当にタイムアウト時間設定内にスタート出来なかっただけっぽい。

Apache の設定ファイル(私は conf.d/passenger.conf を作ってその中に)

PassengerStartTimeout 120

を追記して Apache 再起動。

そしたら、無事にアプリが起動して、画面に表示出来ました。

それにしたってなんでこんなに起動に時間かかるんですかね。


参考

passengerエラーメモ - Qiita

bundle installでプロジェクトのvendor以下にgemを入れる

やっぱvendor下に入れたいなぁ

以前記事で、 http://binthec.hatenablog.com/entry/2018/01/27/230500binthec.hatenablog.com

spina というgemになってる?CMSを入れたのですが、vendor 下にあると思ったら無くて、色々探してみたらどうやら rbenv 配下に入っているらしくて。

/user/local/rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems

なんでそんな所に……?と思ってTwitterでぼやいていたら、親切な方がプロジェクトの vendor 下に入れる方法があるんだよーと教えてくれたので、そっちの方法で入れてみることにしました。

ついでに、rbenv は /user/local の下にあったんですが、結局ホームディレクトリの /home/vagrant 以下に入れ直しました。


vendor 下に入れてみる

--path vendor/bundle を指定し、railsアプリケーション用のディレクトリ配下のvendor/bundleディレクトリにgemをインストール

これにより、gemをrailsプロジェクト毎に管理できる!!

--jobs=4 を指定するとbundle installを並列処理で実行できる

参考 rails newの先輩オススメ手順 - まえとうしろ

とのことなので、

$ bundle install --path vendor/bundle --jobs=4

を Gemfile がある所で叩いてみます。

$ pwd
/home/vagrant/common/hoge_project/vendor

$ ls -la
合計 0
...
-rw-r--r--. 1 vagrant vagrant   0  1月  6 21:34 2018 .keep

空っぽだった中身が……

$ ls -al
合計 0
...
-rw-r--r--. 1 vagrant vagrant   0  1月  6 21:34 2018 .keep
drwxr-xr-x. 1 vagrant vagrant  96  2月  7 22:07 2018 bundle

あ、なんか出来てる。

もりもり下の方まで下っていくと……

$ pwd
/home/vagrant/common/introduction/vendor/bundle/ruby/2.4.0/gems

$ ls -la
合計 0
drwxr-xr-x. 1 vagrant vagrant 2432  2月  7 22:13 2018 .
drwxr-xr-x. 1 vagrant vagrant  288  2月  7 22:13 2018 ..
drwxr-xr-x. 1 vagrant vagrant  192  2月  7 22:12 2018 actioncable-5.1.4
drwxr-xr-x. 1 vagrant vagrant  192  2月  7 22:12 2018 actionmailer-5.1.4
drwxr-xr-x. 1 vagrant vagrant  192  2月  7 22:12 2018 actionpack-5.1.4
drwxr-xr-x. 1 vagrant vagrant  192  2月  7 22:12 2018 actionview-5.1.4
.
.

おーめっちゃ増えた。階層はやっぱ深いけど、でもプロジェクト内にある方がなんか馴染みがある。それに合理的だと思う。

この辺はもう、Rails やってる人達にしてみたら「何を当たり前の事を今更…」レベルなんだろうな……先は長い。


余談

gem というのが composer のようなものと思っていたら、どうやら若干ハズレていて、bundler というのが互換性などを見ながら gem を管理してくれているものみたい。

bundler本体以外のgemは基本的にbundler経由でインストールを行うのがおすすめです

とのこと。

ふーん、なるほど。了解です。

参考: Bundlerの使い方 - Qiita