だ。ログ。

開発とかスノボとかやきうとか。

Laravelのartisanを利用してディレクトリ/コントローラーを作る

いつも忘れるのでコピペ出来るように。
Laravelでcontrollerを生成する際にartisanで作成するが例えばapi用のディレクトリを作ってコントローラーを生成するって時は以下

$ php artisan make:controller Api/HogeController
||>

viでvimを使う

vagrantで様々な環境をローカルに構築する機会が多い。
その度に毎回忘れてしまっているのでメモとして。

$ yum install vim-enhanced
$ cp /etc/profile /etc/profile.default
$ vi /etc/profile

#最下部に記述
alias vi='vim'

$ source /etc/profile

これでviがvimとして利用出来るようになった。
いっつも探してしまうのでコピペできるようにストックしておく。

実は行ってた京セラドーム

ZOZOマリン二連戦は実は水曜日のみと決めていたが悔しい負けを喫した事と、帰りの電車でサイトを見ると外野自由に○が付いていたのでついウッカリポチってしまった。
木曜日は延長の末、大和選手が値千金のセンター返しで勝負あり。だったのだが、横浜までの電車が23時には終電となってしまう関係上、ZOZOマリンを出たのは22:30
幕張本郷行きのバスの中で青いユニフォームの人たちが一斉に拳を握り、白のユニフォームの人たちが「あぁ…」とため息を漏らす。
帰宅したのは24時を過ぎてからのこと。再放送のプロ野球ニュースを見て寝たのは1時を過ぎてから。

翌日、雪山で使う20リットルに満たないリュックに下着とユニフォームとシャツを詰めて向かった東京駅。
11:00発のぞみ225号新大阪行きでいざ大阪へ。
この週は水曜、木曜と千葉、そして金曜土曜日と大阪ドームと言うビジター参戦ツアーと言う事を決めていた。
仕事に関しては前の仕事と次の仕事の合間でちょうどスケジュールが空いていた。貧乏暇なしだが、雪山と野球だけは外したくなかった。

新大阪から宿へ

大阪の地理感は殆ど無い。昔仕事で梅田のマルビルで宿泊して数日間中之島で仕事した位で後は新世界と道頓堀、あとは飛田新地と松島新地を歩いたくらいだ。
京セラドームは臨海地区にある。電車を見ると色んな線で行ける物の地名の分からない所は避けあびこ筋沿いのホテルをチョイス。
あべのハルカスが目の前、自分の止まった裏手には関西本線天王寺駅が見えるので迷子にはならない目印にはなる。
13時過ぎに新大阪に付き天王寺へと移動、チェックインが15時からなのであべのハルカス界隈を見て回る。
ショッピングモールが充実し、ユニクロ等が揃っているので荷物を軽量化するために現地購入でも良いのかも。

京セラドームへ

生で見る阪堺線に感動し、たこ焼きや粉物を少し食べてから荷物を置きユニフォームとタオルだけ持って阪神なんば線九条駅へ。
直接京セラドームへ行かなかったのは、若き頃に良い思いをさせてもらった松島新地へ。
写真はご法度、それも昔はもう少し夕暮れで人人人なイメージだったが16時過ぎの新地は人がおらずオバちゃんがええ娘おるでーと引く手あまた。
今回お世話になったのは大阪ヤンキーって感じの子、ノリ良く東京から来たん?何しに?と楽しい30分だった(゚∀゚)

と、言う訳で帰りに料亭でアメを貰いいざ京セラドーム。九条駅から歩こうと思うがこれが意外と遠い。
それも大きな通りから外れ大阪の工場の道をぬって歩く、京セラドームが見えてきたのは20分ほど。
いきなりビルの合間から巨大な銀色の物体が姿を現す。この時点で17:15プレイボールには間に合った。

京セラドーム内

来る前にドリンクをと言う事で、毎回ハマスタに持っていっている炭酸水を3本ほどリュックに入れていた。
入場時にペットボトルは全て不可と言う事が発覚し、カップ3つにペットボトルの炭酸水を全て移した。すなわち炭酸水としての命は死を意味する。。
3階席ビジターレフトのゲートをくぐると東京ドームよりも若干暗めな照明だが天井は高くUFOが乗っているような空と青を基調としたフェンスそして視点の高さに驚かされる。
広々とした印象で座席も神宮の外野とまではいかないがゆったり座る事が出来る。ただし後ろにより掛かれない。それと足元が若干狭い印象。
さて、まずは買い物とばかりにオフィシャルショップへと移動をしようとする。しかしオフィシャルショップへは外野席から内部を通って移動する事ができない。
必ず一回外に出てコンコースを歩いて正面入口まで出る必要がある。
それと気をつけないといけないのは外野レフトは3階席であること、警備員からオフィシャルショップは2階ですと聞いたが2階は「下」なのだ。
正面入口まで出て階段を下った所にショップがある。上の階を探し時間を潰してしまった。
ショップは広い。横浜スタジアムや東京ドーム、神宮とは比べ物にならないくらい広々としている。圧倒的だ。
しかもビジターチームだけではなく、タイガースやカープ、ホークスのグッズまでコーナーがある。
個人的な趣味のバファローベルグッズと、阪急、近鉄のシャツを購入。

フード

これに関して言えば持ち込みが厳しく内部が充実しているかと言うと一見の外野ビジターだと何を食べれば良いかが分からない。
通路に出ると、フレッシュネスバーガーやケンタッキー、スナックフード販売はあるがどこでも食べれるモノが多い。
唯一、ネットの情報で仕入れていたモノでいてまえドッグがライト側で販売しているのでフードコーナーに並ぶ。
バファローズファン、ベイスターズファンが入り混じってもカオスな感じはない。金曜ナイターって言う事もあるだろうが比較的ゆるい雰囲気だった。

いてまえドッグは座っている外野席の座席1つ分はある長さのホットドッグ。そこにケチャップやマスタードサルサソースを勝手にぶっかけて食え!と言うモノ。
席に戻ってこれすげえwwwとバファローベルのマスコットを置いて写真を撮っていると上の段の家族連れの方が「写真撮っていいですか?」と声を掛けられる。
どうやら横浜からいらした家族らしく、地元の話で盛り上がり昨日も千葉に行ってましたとか色々お話をさせていただく。
数人から「食べれないと思うけど写真だけは撮りたい」と来ては写真を撮られていた。

その間、ドッグはしなびていくのだが。。。

さて、いてまえドッグだがボリュームはいわずもがな。
お昼をたこ焼き程度の軽めにしといて良かったとつくづく思うレベル。しかし水がないと食べていられてない。
途中、ビールを2杯飲んでなんとか食べ終える。その間3回ベイスターズの守備が終わってしまった。
このドッグの難点は一人で食べるモノではないと言う所だ。
途中で食べきれないまま攻撃に移り立って応援し、また食べ始めてを繰り返す。正直お腹にかなり負担が来る。

この後、宿に戻りワールドカップの開幕戦が始まる前に天王寺でラーメンを食べ、ドンキでお菓子を買い込みたらふく食った。。

試合

千葉での延長戦の果てに筒香選手が離脱、ハムストリングスをやってしまっているロペス選手もまだ時間がかかる。
この中で孤軍奮闘をしたのが宮﨑選手、この大阪シリーズの後の振替試合のライオンズ戦(参戦した)では宮﨑個人軍と言われるレベルで一人で打点を上げる奮闘。
裏を返せば、楠本選手等の若手を出さざるを得ない状況が続く苦しい状況。金曜日は東投手が踏ん張れず。
土曜日は11回表まで2安打、やっとの思いで出た神里選手のセンターオーバータイムリー3ベースで勝ち越し。京セラでの観戦で1勝出来た。

行き帰り

土曜日はホテルを9時にチェックアウトし、大阪城へ。
のんびりと散歩、どうやらラブライブのライブが大阪城ホールであるらしく凄い行列。
大阪城天守閣に登った後に離脱、そのまま大阪駅を経由して大正駅へ。到着は11時30分。
前日の帰りに大正駅から京セラドームへの道なりにたこ焼き屋があるのをチェックしていたのでたこ焼きを食べる。
近くの川の横の公園で頬張ってると、気の良さそうなおっちゃんから話しかけられる。
大きめのバックパックに青いユニフォームから大阪遊びきたんか?とかあれこれマシンガントークされるも
「あ、開門なんでー」と笑顔で挨拶してそそくさと離脱。

入り口に着くとバファローブル、ベルのショーがはじまっている。またB'sガールズのライブステージは黒山の人だかり。
このショーの運営の手際の良さと写真撮影の注意喚起、そしてガールズのトークと本当に軽妙で手慣れている。
ちびっこ席、大きなお友だち席、そして観客参加型のイベントと見事な仕切りに感嘆する。

レフト外野3階席

気をつけなければならないのは京セラドームの外野は二層構造になっている。応援団が居るのは下のフロアで上はもっとゆっくり野球を観たいと言うエリアだ。
ドームのスタンドで上に天井があり少し薄暗く独特の雰囲気がある。
そして、センタービジョンが見えない。
ストライク、ボールは辛うじてバックネット側は1塁側の上にあるビジョンで確認出来るが選手のステータスやピッチャーの情報、打者の情報がない。
結構な人がスマホ片手に情報をチェックしているので、インフォメーションが少ないのは難点。

どれくらい掛かったのさ

旅行会社の1泊プランを利用して新幹線+宿代含めて23000円
京セラドームのチケットが2000円 * 2枚
大阪での移動費が2000円、食費が5000円なので3万円でお釣りが返ってきた。

今回は金曜日を使っての旅行だったのでかなり人や時間に左右されずのんびりと大阪を観光しつつ野球観戦ができた。
はじめての大阪ビジターだったがハマスタで見る常連さんも結構いて、熱狂的なファンであれば大阪名古屋あたりは射程距離なんだな。と言う事を改て感じる事ができた。
来シーズンは京セラでの試合はないが、甲子園がその先にはあるので来年も大阪シリーズは行きたいな。と。

curlのデフォルト表示

apijsonデータを送信してレスポンスコードを取る。と言う部分でcurlで~なんて言うだったので軽い気持ちで

$curl = curl_init("apiのurl");
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
$output = curl_exec($curl);

ってな具合で書くと

{Responcecode: hoge}
と言うレスポンスコードが出てしまう。
これを明示的に消すためには、setoptに

curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);

上記を明示しないとだめ。
明示してレスポンスコードを表示する なら納得出来るんだけど、明示して表示しないにする。と言うPHPの意図はなんだろう。。

PHPでS3のデータ取得

IAMの設定とかS3のバケットの設定とかはが終わっている前提で、aws-sdk-phpを突っ込んで開発準備を行う。
公開ディレクトリトップにて実行

$ composer require aws/aws-sdk-php
$ curl -sS https://getcomposer.org/intaller | php
$ php -d memory_limit=1 composer.phar require aws/aws-sdk-php

上記でaws-sdkを利用できるようにする。
このコンポーネント一覧を利用してS3と通信する。後述するuseするだけなのでそんなに難しい事はない。

一覧を取得する

require '../vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$key = "S3に設定したIAMのキー";
$secret = "上記のキーのsecret";
# リージョンは利用しているリージョン名を記述。自分は東京なので以下
$region = "ap-northeast-1";
$bucket = "S3バケット名";
# prefixは閲覧したいディレクトリ(概念)のデータ一覧を取得する。
# なければ上から全部取得してくる
# サンプルは /hoge/fuga/ 以下のファイル全てを取得してくるようになる。
$prefix = "hoge/fuga/";

      $S3 = S3Client::factory([
        'credentials' => [
            'key' => $key,
            'secret' => $secret
          ],
          'region' => $region,
          'version' => 'latest'
      ]);

      $list = $S3->listObjects([
          'Bucket' => $bucket,
          'Prefix' => $prefix,
          'Delimiter' => "/"
      ]);

      foreach ($list['Contents'] as $img) {
            if($i > 0){
		echo "画像:<img width=\"300\" src=\"https://s3-ap-northeast-1.amazonaws.com/".$bucket."/".$img['key']."\" /><br />";
            }
            $i++;
      }

単純にデータを取得する場合はこんな感じで取れる。
概念の違いでディレクトリと言う物はコンソールからは確認できるが、いわばタグのような物なので厳密にはディレクトリ分けにはなっていない。
第一弾として取る事に関してはコレでいけたので、次回はアップロードを作ってみる。

丸投げる限界点

丸投げる限界点

わからないんで~
ちょっと技術的に難しいんで~

と言う言葉から色々と頼まれる事が多い。
まあ、おっさんだからしゃーない。出来る事と言うよりは、やった事がある。そのナレッジがあるから相談される。
依頼の仕方もそうだし、作業させる人間が居て依頼をする訳だから、まず何をしたけど出来ない。と言う事がないままに丸投げられる。

例えば全く知らないツール導入の仕方がわからない。
この一文だけ送られてきてお願いします。と言われる。

俺もわからない。

それは同じスタートラインだが「○○日までに使えるようにならないと困ります」と返される。
困るのは勝手だ、何をどうしたが出来ない。この部分が使えるようになりたい。
だったらこちらも対処のしようがあるが、まず操作すらロクにしていない。
設定が難しいから丸投げる。

そこまででもストレスになるが、今度は他の不具合が出ると自分が一番理解出来ているからと調査を依頼される。

いや知らんがな。

結局属人化する、それも誰も調べようとも知ろうともしない。
ただ吊るしで使えれば良いだけで、それ以上の事を考えない。
それが他社の金を貰ってる依頼ならまだしも社内の違う部署。質問内容を辟易として眺める午後の昼下がり。

LambdaでGoogleHangoutsChatにメッセージを送る

https://dev.classmethod.jp/cloud/aws/google-hangouts-chat-integration-with-aws-lambda/dev.classmethod.jp

ここにあるソースコードの通りで動く。
なのでソースコード部分に関しては上記のリンクを観た方が早い。

ただLambdaド素人の自分はソースコードだけでは動かず右往左往。
要点としては

・自分で環境を整えて利用するライブラリをソースコードに包括しておく
・ファイルをzip形式で圧縮してLambdaにアップロードする

この2点が理解出来ればLambdaでの自動化の部分が身近になってくると思う。

自分で環境を整える

何が言いたいかと言うと、上記のリンクだとrequestsで必要なファイルを実際に送信するソースコードと一緒にアップする必要があると言うところ。

	$pip3.6 install requests -t.

requestsの後ろの -t.が必要で、現在のディレクトリにライブラリ実体をファイルとして利用できるようにする。と。

zipで上げる

整えた環境のディレクトリをPCに一旦保存した後にzipに圧縮する際の注意として、ダウンロードしてきたディレクトリを圧縮すると
lambdaにアップロード後、ディレクトリが親ディレクトリとなってしまう。

[ プロジェクト名 ]
└[圧縮したディレクトリ]
├ファイル1
├ファイル2
├ファイル3

と言う事になってしまう。圧縮したディレクトリが邪魔。
なので、ファイル全体を選択して圧縮をすること。

あとはソースコードが正しく書けていれば動作確認が取れる。
ChatWorkにも送信事態は出来たが、GSuiteを使っているのでどちらにするか迷い中。
個人的にはWebhookが簡単につくれるhangoutChatの方が手間が掛からないなと。