夜の歌

プログラミング、音楽、本について緩く書いていきます。

『世界の辺境とハードボイルド室町時代』 高野 秀行 清水 克行

世界の辺境とハードボイルド室町時代 (集英社文庫)

世界の辺境とハードボイルド室町時代 (集英社文庫)

本書は、世界の辺境のノンフィクション作家である高野秀行氏と、中世日本の歴史学者である清水克行氏の対談。果たして、話は合うのだろうか。

しかし、その思いは杞憂に終わる。

『発酵野郎! 世界一のビールを野生酵母』鈴木成宗

発酵野郎!: 世界一のビールを野生酵母でつくる

発酵野郎!: 世界一のビールを野生酵母でつくる

伊勢角屋麦酒のビールを、最初に飲んだのはいつだったか。飲んだのは、確かペールエール。初めて飲んだ当時、ビールが好きじゃなくて、どうかなと思って飲んだ。これが美味しくて、あれからビールが好きになってしまった。ビール最高。

本書を読むまで、鈴木さんはビールが好きで、事業を始めたんだろうなと思っていた。だけど、本当の目的は酵母と戯れることだったらしい。。どいうこと!酵母と遊びたくて事業を始めるって、すごい勇気。怖くなかったのかな。これで上手くいくの?って思ったけど、やっぱり上手くはいってなかった。90年代末、ビール事業の影響で鈴木さんは無給だったらしい。

結構衝撃だったのは、鈴木さんはある時期まで、お客様が何を求めているかを考えていなかったらしい。マジか。本書に明確な時期は書かれていなかったけど、考え始めたのが2003年の世界大会で金賞を取った後。ということは、1997年にクラフトビール市場に参入後、結構な期間ということになる。そこから、この成功。凄いな。

本書を読んだ後、クラフトビールが飲みたくなった。スマホで良さそうなお店を見つけて、出発。なんと伺ったお店に、伊勢角屋麦酒のヒメホワイトがあったので早速注文。本書にも書かれてるけど、ヒメホワイトは伊勢の酵母で作られたビール。美味しかったなぁ。また、飲もう。

【Laravel】updateメソッドで保存する時にハマった

データの更新をする際に、updateメソッドを使って実行。そして、ハマった。そのコードは、下記。

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Model\Book;

class BookController extends Controller
{
    public function index(Request $request)
    {
        $book = Book::where('page', 100)->get(['page'])->first();
        $book->page = 5;
        $book->update();
    }
}

ログに実行したsqlを出力しているので、確認してみる。

[2019-08-31 15:52:22] local.INFO: Query Time:11.06s] select `page` from `book` where `page` = ?  
[2019-08-31 15:52:22] local.INFO: Query Time:1.53s] update `book` set `page` = ?, `updated_at` = ? where `id` is null

2行目でupdate文のsql。コード上では、「wehre is null」は使っていない。恐らく、updateメソッド内で実装しているのかな。

それで、下記のようにgetの指定カラムにidを追加したら想定通りの動作になった。

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Model\Book;

class BookController extends Controller
{
    public function index(Request $request)
    {
        $book = Book::where('page', 100)->get(['id', 'page'])->first();
        $book->page = 5;
        $book->update();
    }
}

ログも確認

[2019-08-31 16:07:58] local.INFO: Query Time:17.51s] select `page`, `id` from `book` where `page` = ?  
[2019-08-31 16:07:58] local.INFO: Query Time:4.01s] update `book` set `page` = ?, `updated_at` = ? where `id` = ?

where句でidを使って絞り込みをかけるようになっていた。なるほど、面白い。updateメソッドの処理の確認をしてみよう。

Laravelで処理途中でDBの変更をしたい

Laravelで処理途中でDBの変更をしたい。どうすればいいのか。答えは、config/database.phpのconnections.mysql.databaseの値を変更する。下記、コードで変更できる。

\Config::set('database.connections.mysql.database', 'test_db');


ただ、一度DBに対してアクセス後に上記コードを実行しても、connections.mysql.databaseの値自体を変更できるが、アクセス先のDBは変更はできない。うーむ、何故。

恐らく、1度DBにアクセスした後にアクセス先のDBをキャッシュしているのかな。調査する。

【Laravel】任意のルートパラメーターの挙動について

任意のルートパラメーターが設定されている時、されていない時の挙動を確認した。サンプルコードを含め確認した内容を記す。

まずは、wbe.php

// web.php
<?php
Route::get('okinawa/{urasoe?}', 'OkinawaController@index');


続いて、サンプルで作ったOkinawaController。ルーティングに設定した任意のルートパラメーターurasoeを取得する処理が実装されている。

// OkinawaController.php
<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class OkinawaController extends Controller
{
    public function index(Request $request)
    {
        var_dump($request->urasoe);
        exit();
    }
}


任意のルートパラメーターが設定されているパターン
・実行URL

http://localhost/okinawa/urasoe

・結果

string(6) "urasoe"


任意のルートパラメーターが設定されていないパターン
・実行URL

http://localhost/okinawa

・結果

NULL


任意のルートパラメーターの値は$requestオブジェクトのプロパティから取得できる。任意のルートパラメーターが設定されている場合、string型の値が取得できた。また、ルートパラメーターが設定されていない場合にはNULLを取得。

ふと思ったけど、string型の数値をrequestオブジェクトのプロパティから取得した場合には、どのような型になるのか。ちょっと、気になる。

※参考 readouble.com

本屋に行って本を探したが。

今日、『仲野教授の そろそろ大阪の話をしよう』を買いに本屋さんへ。ただ、探しても見つからないので店員さんを探す。しかし、店員さんも見つからない。やっと、見つけて探してもらったけど置いてないとのこと。残念。。

ちょっと思ったけど、スマホで店内の本を探せるサービスがあったらいいな。お客さんにアプリをインストールさせるのは難しいからWebで。そのWebサービスQRコードが表示されている紙を店内に貼れば、お客さんは使ってくれるんじゃないかな。どうだろう。

いや、どうかな。

Laradockのphp.iniの修正について

Laradockのphp.iniを変更する必要があったので調査。php-fpm配下のphp7.2.iniを修正し、下記コマンドを実行したら修正内容が反映された。

// サービスの停止
docker-compose stop

// サービスをバックグランドで起動
docker-compose up -d nginx mysql phpmyadmin redis workspace


恐らくコンテナ起動時に、php.iniの再読み込みが行われているはず。その処理については、Dockerfileに書かれているのか。調べるか。

『1本5000円のレンコンがバカ売れする理由』 野口 憲一

1本5000円のレンコンがバカ売れする理由 (新潮新書)

1本5000円のレンコンがバカ売れする理由 (新潮新書)

honzのレビューを読んで購入。レンコン農家に生まれた著者が、レンコンを1本5000円で売ろうと試行錯誤する姿が書かれた一冊。試行錯誤する姿が面白い。父親に凄く反対されるが折れないし、なかなかレンコンが売れない中イベントに参加したり販路を探す。そんな中、総合食品商社の方から話を持ちかけられ、徐々に光が見えてくる。

意外だったのが、レンコン購入業者の目線で商品を作ることを否定していること。例えば、業者からレンコンを真空パックにできないかとの要望が結構あるらしい。ただ、著者はその申し出を断っている。技術的にレンコンを真空パックにするのは可能らしいが、真空パックにするにしてもコストがかかる。そのコスト分を吸収する利益が出るかといったら、疑問があるらしい。

どんな仕事でも、買う側からの要望は結構あると思う。その中で、やるやらないの判断を下すのは結構難しい。目の前の売り上げって大事だしね。

とりあえず、レンコン買いたいなぁ。

honz.jp

『人工知能はどのようにして 「名人」を超えたのか?―――最強の将棋AIポナンザの開発者が教える機械学習・深層学習・強化学習の本質』 山本 一成

コンピュータ将棋のポナンザを開発した著者が、コンピュータ将棋やAIについて、また知性について語った一冊。

機械学習や深層学習の解説が載っており、しかも分かりやすい。機械学習とは機械に学習をさせて、機械が色々なことができるようになる手法のこと。また、深層学習は機械学習の手法の一つで、ディープランニングとも呼ばれる。

深層学習は、人間の脳を真似して作られている。もっと詳しく知りたい。何か作ってみるか。

ブログを書く

毎週、書いていこうと思っているけど、先週書いておらず。まぁ、いいやw

今週の土曜日に、ほぼ日企画のラグビー観戦会に行く。

www.1101.com

ラグビーは初めてで、ルールもほとんど知らないけど楽しみ。しかし、オフサイドも理解していない。大丈夫かなw今日の最高気温が30度だったので、当日も暑いかもしれない。水分補給には気をつけよう。

そう、Laravelの開発に大分慣れてきた。ただ、Laravel意外にも調べないといけないことがあり、時間がないwまぁ、それが嫌ではない。Web系の技術の移り変わりは激しいけど、やっていこう。あと、音楽レビューサイトの作りかえもやっていきたい。

明日の最高気温は、25度を希望したい。