Rust言語で遊んでみた

こんにちは。kaztoです。ご無沙汰しています。

エンジニアの世界は、いつの間にかパラダイムシフトが起きてたりしますよね。

いつ今使っている言語、フレームワークが他の新しい技術に取って代わられるのかは、誰にも予測できません。

また、新しいプロダクトを立ち上げる際にも、技術選定では幅広い選択肢を持っておくべきでしょう。

というわけで、最近話題のRust言語で遊んで、ゲフンゲフン、簡単なツールを作ってみました。

https://github.com/kazto/cstv

いわゆる「CSVファイルに色を付けるだけの簡単な」ツールです。

雑感

  • アノテーションで、テストコードを本番コードに混ぜられるのがとてもよい。
  • やっぱり最初はメモリの所有権よくわからなかった。コンパイラに怒られてるうちに、なんとなくこんな感じかな?というのが分かってきたけど、うまく言語化はできていない。
  • だいたいデータなんてもんは整数と文字列と配列とハッシュがあればなんとかなるもんだ(暴論
  • OptionやResultなどのEnum、Haskelのモナドに似ている感じがした。けど、Rustの方がまだ使いやすい。

慣れればWebアプリなども作れそうですし、WASMにも可能性を感じています。
Go言語と比べるとGCが無い分速度が速いなんて話も聞きますし、Rust言語、これは来ますよ。

技術を教わって、焼肉をごちそうする会、第一回。

Photo by Joseph Barrientos on Unsplash

2か月ぶりのブログ。

最近、Kubernetesが気になっています。今さら。

ですが、記事をいろいろ読み漁っていても、イマイチピンと来ないというか、どうやったら弊社環境に当てはめることができるんだろう、というのが課題でした。

そこで、ふと見たTLに焼肉をごちそうすることで有名なすえなみさんが流れてきて、思いました。

「二番煎じ、イケる・・・!(邪悪な笑み」

そこで、つぶやきました。

これに手を挙げてくださったのが、やっしーさん

昨今会食は控えようということになり、ご教授いただく部はリモートでの開催となりました。焼き肉をご馳走する部は後日。

結論、以下のような所感。

  • ローカルで使うものでは、全くない。
  • AWSに載せることを考えたら、開発環境や本番環境をひとまとめに管理できて良さそう。
  • やっぱ気軽にスケールアップダウンしたいよね。
  • ダッシュボードいいね。
  • セキュリティはちょっと考えないといかんね。
  • ストレージのことは知らなかった。勉強になりました。

すえなみチャンスをパクってみて(笑)、対価とともに知識を得るって実はとてもWin-Winなのではないか、と思えてきました。すえなみチャンス、とてもいいものですね。皆さんも気軽に教わってみてはいかがでしょうか。

カテゴリ7ケーブルの謎

Qiitaに書こうとしましたが、結論、Wikipediaにすべてが書かれていたので、自分のブログにひっそり残すことにしました。

TL;DR

  • 世の中に広く出回っているカテゴリ7のLANケーブルは、カテゴリ7の規格に適合していない謎の製品である。
  • 一般家庭で本当のカテゴリ7ネットワークを組むには、ハブ・ルータが対応していないので、(ほぼ)不可能である。
  • 要するに、カテゴリ7のケーブルは買うべきではない

はじめに

2020年6月現在、10Gbpsという速度を提供するプロバイダが少しずつではありますが、出てきました。

そこで、その速度を十分に活かすように家庭内のネットワークを組むにはどういう機器をそろえたらいいのか、調べてみました。

今回触れない内容

データセンタや大規模計算機で使用するようなネットワークについては、触れません。あくまで、一般家庭レベルでの話です。

LANケーブルのカテゴリ

一覧表は、Wikipediaをご参照ください。

おおよそ、現在一般的に販売されているケーブルは、カテゴリ5からカテゴリ7の間に該当すると思います。

問題は、カテゴリ7

そこで、問題となってくるのが、カテゴリ7ケーブルです。

カテゴリ7の規格の特徴としては、以下になります。

  • STP (Shielded Twisted Pair) ケーブル
  • 終端はGG45コネクタないしはTERAコネクタ

細かい周波数の定義などもありますが、上記2点が特徴かと思います。

GG45?TERA?

さて、イーサネットケーブルと言えば、「RJ-45(8極8芯)」ケーブルが一般的、というか私は恥ずかしながらこれ以外見たことがありません。

GG45やTERAという規格は今回初めて知りました。
.
一方、カテゴリ7の規格では、RJ-45は対応していません。

にもかかわらず、世間一般で販売されているカテゴリ7ケーブルは、RJ-45のものばかりです。

GG45やTERAのものは検索には全くひっかかりません。

STPとUTPの違い

また、要出展ではありますが、STPはシールドされているとは言え、アースが必要であり、アースしない場合には逆にノイズを拾うという記事もありました。

結論

一体世間で売られているカテゴリ7ケーブルは何なんだ、という謎が深まりました。

今年やりたい100のこと

pablo-heimplatz-EAvS-4KnGrk-unsplash.jpg

unsplash-logoPablo Heimplatz

近藤佑子さんおやかたさんがなさっていたのを パクり リスペクトしまして、今年やりたい100のことを挙げてみようと思います。

  1. 【個の力】技術書同人誌を書き、頒布する
  2. 【健康】やせる。直近マイナス5㎏
  3. 【健康】やせる。最終的にはマイナス15㎏
  4. 【健康】週一回ジムに通う
  5. 【仕事】採用活動と開発業務の両立
  6. 【仕事】提案を行う
  7. 【家庭】旅行に行く。妻からではなく、自分から提案する
  8. 【家庭】勉強会参加頻度をセーブする
  9. 【家庭】Nintendo Switchを買う
  10. 【私事】カメラのフラッシュ装備を買う
  11. 【家庭】仕事と家庭の両立
  12. 【家庭】貯金する
  13. 【個の力】本を読む。月一冊。
  14. 【個の力】Mintlangでクソアプリをつくる。遠藤ヒズミさんの寿司クソアプリをMintでクローンする
  15. 【個の力】友人とのテック系ユーチューバー企画を進める。ベストは年内に第一回を配信する
  16. 【個の力】友人とのテック系ユーチューバー企画を進める。必要な作業をリストアップする
  17. 【個の力】記録を残す。PDCAを回す下地を作る
  18. 【仕事】CTOと対等に話をする。今後の計画や、お金の話などに食らいつく
  19. 【仕事】採用ノウハウについて、現時点で理解したことを文章に起こす
  20. 【私事】酒に溺れない。節度をもって楽しむ
  21. 【私事】唎酒師を目指す。成れないにしても、造詣を深める
  22. 【個の力】弱きを助ける活動をする
  23. 【個の力】たまもくを継続する
  24. 【仕事】社内へ発信する
  25. 【仕事】社外へ発信する
  26. 【家庭】妻への感謝を行動で示す
  27. 【家庭】両親への感謝を行動で示す
  28. 【個の力】EMの職責を勉強する
  29. 【個の力】登壇技術の向上
  30. 【個の力】ポジティブなフィードバックを心がける

100個もやりたいことが出てこないんですけど…

あきらめて30個で投下します…

今年もお世話になりました

greg-rakozy-oMpAz-DN-9I-unsplash.jpg

今年はブログを20本書いたようです。

・・・アドベントカレンダー書ききれていない・・・

今年は転職があったり、環境が激変した一年でした。

来年も成長していきたいと思います。

では、よいお年をー

もくもく会を主催してみて

本記事は、「エンジニアの登壇を応援する会 Advent Calendar 2019」19日目の記事になります。

当初の宣言では、「来年に向けての計画を」とあります。・・・あれー?そんなつもりだったっけかなー?

tobias-mrzyk-iuqmGmst5Po-unsplash.jpg

Photo by Tobias Mrzyk on Unsplash

というわけでさくっと方針転換して、今年の3月からもくもく会を主催してみた振り返りをしたいと思います。

もくもく会ができた経緯については、https://www.kazto.net/diary/060にまとめています。

https://tamamoku.connpass.com/を見るとわかるように、第4回まではスムーズに毎月開催していましたが、そこから10月まで4カ月、間があいてしまいました。

ちょうど7月に転職したのと、当月の予定が埋まってしまっていたのとで一カ月スキップかなーと思っていたら、あれよあれよと月日が経ってしまった、という単純な理由でした。

ようやく落ち着いてきて10月に再開できたのですが、「これは自分がSPOFになっている」と感じました。その時の懇親会でその旨を吐露しましたところ、ぐーどらさんに運営に入っていただける流れとなりました。

ここでも、皆さんに支えられて成り立っているんだなぁ、と感謝を禁じえません。

会を主催するにあたって背中を押してくださったありあきさん、シードプレイスを紹介してくださったBMFさん、いろいろご迷惑をおかけしつつも快く会場を提供していただいているシードプレイスの田村社長はじめ皆さん、快く管理人に名乗りを上げてくださったぐーどらさん、いつもいらっしゃってくださる常連の皆さん、ゆるいもくもく会を見つけてくださったご新規の皆さん、一日うちを空けることをなんだかんだ許してくれてる嫁さん、全ての方に感謝を。

ありがとうございます。

たまもくはまだまだ続けていって、吉祥寺.pmみたいなでかい規模にはならないにしても、ほそぼそと息長くやっていけたらと思っています。

今後ともよろしくお願いします。

あ、あさってまだまだお席に余裕がございます。よろしくお願いしますー!(唐突な宣伝)
https://tamamoku.connpass.com/event/159197/

今年のアウトプットを振り返る

この記事は「LAPRAS Fans Advent Calendar 2019」18日目になります。

まずは、今年のアウトプットを振り返ります。

LT登壇

  • 2019/12/17(火) #しがないラジオmeetup 4
  • 2019/08/02(金) 吉祥寺.pm19

社外では2回、また社内イベントで3回、LTしました。

挫折したアウトプット

技術書典7(委託でしたが)に向けて、技術同人誌を書こうとして、全然書き進めることができず、なおざりになっています。

決して諦めたわけではなく、せめて来年夏くらいまでには書ききりたいと思っています。

もくもく会主催

ご縁がありまして、もくもく会「たまもく」を主催し始めました。

転職時期はお休みしてしまったのですが、おかげさまで一緒に運営していただける方も名乗りを上げてくださいまして、11月から新体制を敷いています。

これは本当にご縁のあった皆さんに支えられてやらせていただいてる感が強いです。詳しくは、明日別のアドベントカレンダーで書こうと思っています。

振り返ると

今年は転職があったり、採用の勉強会に顔を出すようになったり、インプットが多めだったにもかかわらず、それをうまく咀嚼してアウトプットできていなかったなあと反省しています。

一方で、採用勉強会に参加すると、人事界隈の皆さんは自社へのご報告は書かれているようですが、反面あまり公開はなさっていない感触を受けています。多少なりともアウトプット慣れしている身としては、この辺でプレゼンスを発揮できるのではないかと考えています。

そもそもの話

LAPRAS Fanを自認するきっかけも、現職のCTOからLAPRASでオファーをいただいて、選考を受けた結果ですし、また入社後にエンジニア採用に関わることになって、LAPRAS SCOUTのUI/UXに感銘を受けたというのもあります。

また、LAPRAS社さん自体もホラクラシー組織を実践していらっしゃったり、先進的な会社でいらっしゃって、うらやましい反面、なかなか真似できるレベルの話じゃないなぁと指をくわえて見ています。

今後のこと

現在、エンジニア採用に関わらせていただいていて、実務レベルではぼちぼち回せるようになったかという実感は得ていますが、そこからPDCAを回して改善していく、というフェーズはこれからになっており、CTOからもはよせぇとツッコミを受けています。

まずは社員のインタビュー記事を上げようと準備中です。これによって自社の風土、文化が明文化できるかなと考えています。

PDCAは回転速度が物を言うと思っています。これからどんどんスピードを上げていくことに慣れねばと気を引き締めて行きたいです。

AWS Lambda 用php7.4.zipをつくる

PHP7.4がリリースされましたね。

そうなったら、当然AWS Lambdaで使いたいじゃないですか(短絡的思考

早速、やってみました。

クラメソさんの以下の記事が参考になりました。

https://dev.classmethod.jp/cloud/aws/create-lambda-custom-runtime-php72/

7.3 のPHPイメージを作成する環境は、以下にあります。

https://github.com/stackery/php-lambda-layer

まずは、cloneします。

$ git clone https://github.com/stackery/php-lambda-layer.git

残念ながら 2019/12/2時点ではPHP7.4には対応していませんが、一部有用ですので活用していきます。

Makefileを見ますと、どんな感じでイメージを作成しているかが分かります。

php73.zip:
docker run --rm -e http_proxy=${http_proxy} -v $(ROOT_DIR):/opt/layer lambci/lambda:build-provided /opt/layer/build-php-remi.sh 3

当方の環境がWindowsであるのと、プロキシとかは不要であることから、直接Dockerコマンドをたたくことにします。

> docker.exe --rm -v C:\path\to\php-lambda-layer:/opt/layer lambci/lambda:build-provided /opt/layer/build-php-remi.sh 4

。。。失敗しました。

cp: cannot stat ‘/usr/lib64/libonig.so.5’: No such file or directory

鬼車がPHP本体にバンドルされなくなったアレですね。

build-php-remi.sh を修正します。

yum install -y httpd
yum install -y postgresql-devel
yum install -y libargon2-devel
# 以下を追加
yum install -y oniguruma5

先ほどのdockerコマンドをやり直します。今度は成功しました。
php74.zip が作成されています。

これをどうごにょごにょするのかは、調べ途中。。。

AWS IAMこねくりまわし

昨日の投稿のつづき。

やっぱりAWSを触るからには、AWS CLIですべてを操作したいじゃないですか。

昨日の段階ではルートアカウントで操作したったらええやん思ってましたが、AWSに「ルートアカウントのアクセスキーを消せ!」と怒られたので、ひとまずIAMだけこねくりまわせるだけのグループ・ユーザを作成します。

グループ、ユーザの作成

新規グループを作成します。

01_create-group.png

グループ名を入力します。

02_create-group-name.png

IAMFullAccessポリシーを割り当てます。

03_create-group-attach-policy.png

確認して、グループ作成します。

04_create-group-velify.png

新規ユーザを作成します。

05_create-user.png

ユーザ名を入力します。

06_create-user-name.png

ユーザにグループを割り当てます。

07_create-user-add-group.png

確認して、ユーザを作成します。

08_create-user-verify.png

アクセスキーを取得します。

09_create-user-get-key.png

これで、AWS CLIからIAMを更新する準備が整いました。

で、今日は時間切れ。

#たまもく 2019/11/23 成果

たまもくも少し間をあけましたが、再開してトータル第6回を数えています。

やるからにはちゃんと成果を記録に残さねば、と思いまして、作業記録を残します。

今回は、来月のアドベントカレンダーのネタであるところの、「AWS LambdaでPHPでスクレイピングする環境を整える」件の調査を進めました。

AWS Lambda に Serverless CLI をつかってデプロイする

インストールとかは、以下の手順。sudoとかは適宜つけてください。

$ pip install awscli aws-sam-cli
$ npm i -g serverless

まずはawsにログインします。アクセスキー、シークレットの入手は次の節でまとめます。

$ aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]:

テンプレを使ってプロジェクトを作ります。

$ sls create -t aws-provided -p aws-php-selenium-docker

まずは、テンプレそのまんまをデプロイしてみます。

$ sls deploy

権限が足りないエラー発生、権限追加、を何度か繰り返して、ようやくデプロイできました。

呼び出してみます。

$ sls invoke -f hello
{
"body": {
"input": {},
"msg": "Wecome to serverless!"
}
}

JSONが返ってきました。

AWS IAM で適切な権限のユーザをつくる

これ、だいぶ試行錯誤しました。正解かどうかも若干あやしいところ。ひとまず、やったことを残します。誰かツッコんでください。(切実)

  1. ルートアカウントでログイン
  2. IAM でグループを作成する
  3. IAM でユーザを作成し、グループに割り当てる
  4. アクセスキー、シークレットを取得する

IAMの画面です。

グループを作成します。

01_create-group.png

グループに適当に名前をつけます。

02_create-group-name.png

適当にポリシーをアタッチします。

03_create-group-attach-policy.png

確認画面で、作成ボタンで作成します。

04_create-group-verify.png

次に、ユーザを作成します。

05_create-user.png

適当にユーザ名を作成します。

06_create-user-name.png

ユーザを先ほど作成したグループに加えます。

07_create-user-add-group.png

こうしてできたユーザの認証情報から、アクセスキーの生成を行います。

08_create-user-get-access-key.png
09_create-user-show-access-key.png

あとから思ったんですけど

これ、awscli から全部できるんじゃね?と思って、調べてみたらできるっぽいです。

ルートアカウントのセキュリティ資格情報を開きます。

10_root-user-authentication.png

「アクセスキー (アクセスキー ID とシークレットアクセスキー)」から、新しいアクセスキーを作成します。

11_root-user-create-key.png

これを、aws configure で入力してルートアカウント権限になります。あとは、コマンドをバシバシと打つ。

・・・はずなんですけど、今日は時間切れ。

仕事の楽しさ

久しぶりのブログです。が、あまり明るい内容ではありません。(´・ω・`)

zac-durant-_6HzPU9Hyfg-unsplash.jpg

謎の

少し前、詳細は伏せますが、謎の2on1がありました。(なんだそりゃ

そこで、「今の仕事は楽しいか?」と問われ「楽しいとは何だろう。今まで仕事で楽しいと感じたことがない。今までずっと仕事は辛く厳しいものだった。今は辛くはないのは確か。きっと楽しいのだと思う」と答えました。

聞いていた2人は「(楽しくなさそうな)謎がとけた」「それは問題だ」と。

仕事が楽しい状態とはどんなものかを定義します。以下かと思います。

  • 責任を持って任されている
  • 困難な課題に対し着実に成果を出せている
  • やり甲斐がある

一方で、自分の仕事の環境、評価は次のような状態が長く続きました。

  • 任されず、評価されない
  • 結果を出せない
  • うまく行かないことの方が多い
  • 叱責される
  • 成果は出せても短期的なものにとどまる

また、以前の記事でも触れましたが、いろいろ困難な状態が続くことが多くありました。(こうやって見ると、本当に仕事できない奴ですな…)

ひとことでまとめれば、「自己肯定感が得られない」状態が多かったと思います。

昔語り

自己肯定感が得られなかった要因の一つに、背景に子供の頃の体験と大人になってからのギャップがあるかと思いました。

私は、自慢に聞こえるかも知れませんが、勉強ができる子供でした。小学校の頃の勉強は理解できるのが当たり前、中学でも校内10位前後をキープし、それなりの進学校へ進み、旧帝大を出ました。10代は、できて当たり前、できて当然の世界を生きていました。

一見順風満帆に見えますが、大学に入る頃からうまく行かなくなります。大学に入るのにニ浪し、大学では勉強について行けなくなり、いろいろあって一年留年しました。

そして、就職によって世界が変わります。仕事ができない奴の誕生です。

仕事上の失敗は誰にでもあることですが、私は失敗のリカバリーがとにかく下手でした。よくやったのは、小さな失敗を軽視し、または気づかずにそのまま突き進み、後で大事になる、というのをよくやりました。

そしてしばしば上司と衝突しました。些細なこと(と当時は思ってました)をネチネチ言ってくるのも気に入らなかったですし、失敗そのものを受け入れられず、落ち込むだけ落ち込んで、改善行為を行いませんでした。

結果、理想と現実のギャップに苦しみ、体を壊して休職に至ったのは過去の記事のとおり。

楽しむ、とは

昔語りが過ぎました。

では、仕事が楽しくなるには、どうしていったらいいのか。

大きく分けてふたつのフェーズがあるかなと思いました。

  • 過程を楽しむ
  • 結果が全てを癒やす

現在ではいい歳のおっさんになりまして、仕事が「基本うまく行かないもの」であることを理解しました。

都度、軌道修正し、自身を成長、変化させ、乗り越えたり迂回したりしてゴールへの道筋をつける、その行為自体をゲームとして楽しむことが重要かなと思えるようになりました。

また、二つ目は前職の社長の座右の銘なんですが、なんだかんだゴールにたどり着くことがカタストロフィを生むのですよね。

今のところ、入社して4ヶ月が経とうとしています。結果はまだまだ出せていないですから、過程を楽しむ必要があります。

果たして、出来ているだろうか。うーむ…

(答え、出ず)

入社して一週間を振り返りました

start-digital-DChgWclU_xU-unsplash.jpg

まぁいろいろたどっていけば分かるんですけど、まだ正式に許可いただいてないので社名は伏せますが、無職から転職して一週間が経ちました。

ほぼほぼ今の組織の状況、課題感に追いつくので精一杯でした。

自社サービスの開発をやっているへーしゃでは、業務フローとプログラムが密接につながっていると感じまして、その辺を私の方から「教えてー」と聞けたのは、ナイスプレイだったと思います。

一方、コードを読んで理解する、という方面では、なんとなく漫然と眺めてしまっており、ちょっとやり方を見直す必要があるかなぁ、と反省しています。

今後へーしゃでは勉強会やMeetupなど積極的にやっていく流れなので、その辺でのコミットもやっていきます。

採用活動については、最初は、まずはエンジニアとしての成果をしっかり出したうえでコミットしていくべきかなぁ、とか思っていたんですが、ちょうど同じ7月1日から新しい会社に転職されたてぃーびーさんのご活躍を見て、むしろ全方位に対してぐいぐい突っ込んで行った方がいいのではないか?と思い直しました。(無論てぃーびーさんは超弩級のスーパーマンであることを差し引いて考えたとしても)

へーしゃでは週一で1on1が実施されており、課題や方向性の共有がスムーズにやれることが期待できるので、ぐいぐいと食い込んでいく姿勢を維持していきたいです。


あーそんなことより来週のCryptopsyの来日が楽しみで仕方がないんじゃー!!


初出社

二ヶ月ちょいの無職期間を経て、新しい会社に初出社なうです。

次は、しっかりやって行きたい。(ケツイ

昨日からの流れ

4/29。

令和を実家で迎えるため、帰省の途につく。

まったり羽田空港を満喫すべく、昼ごろ着いてランチ。

お土産買う。

さーてチェックインするか、とカードを通すと、弾かれる。

嫌な予感を振り払うように有人カウンターへ行って確認したところ、飛行機代が支払われた形跡がないことが判明する。

血の気が引く。

実家に電話し、トラブったことを伝える。

北海道への飛行機はもはや当日だと事前予約の倍近い値段。帰省を諦める。


「しゃーないベ。じゃあ代わりにどっか行きたい!」と妻の発案。
東京駅へ向かう。
新幹線の空き状況をチェック。30日新大阪行きのチケットを購入。
飲み屋で大阪で何するか決める。


とりま帰宅し、詳細を詰める。
翌朝、東京駅へ向かう(←イマココ

#もくもく会 を生やしてみました。 #たまもく

去る3/9(土)、無事、もくもく会をやり遂げることができました。まずは、ご参加くださった皆さん、声援を送ってくださった皆さんに感謝を述べさせてください。本当にありがとうございました。

ことのきっかけとしては、もくもく会に参加したいなあと感じてきたことでした。

なんせ、いろいろ年初の目標は立ててみたものの、なかなかこなしていく時間が取れない。これは良くない。

一方で、魅力的なもくもく会は大抵都内開催です。銀座とか秋葉原とか渋谷とか、きらびやかな場所まで行くのは田舎暮らしには若干のハードルがあるのです。

そこで、OSSの精神、無ければ作ってしまえ、とばかりにつぶやいてみたところ、

ありあきさんにズドンと背中を押していただきました。

最大の難関かなと考えてた場所の確保も、Twitterで拡散していただいた結果、ご紹介いただいて無事、というか一週間経たずに決まり、公開に到りました。

最終的になんだかんだで全くのご新規さんが4名、登壇の会の方4名、合計8名の方にお集まりいただき、規模感としても想定していた通りくらいの規模になりました。まぁ何事もなくと言いますか、あまりにもいい感じに事を運ぶことができまして、帰り道で最寄りに着いたところで感極まって涙に暮れる一幕もあり。涙腺がゆるいお年頃です。

やはりこういう会は長く続けてこそ価値が出てくるものだと考えていまして、できれば何年という単位で続けて行きたいものです。

調子ぶっこいてサイトも立ち上げました。

https://tamamoku.tokyo/

次回開催は4/20(土)を予定しております。近日中にconnpass立てます。お引き立てのほど、よろしくお願いします。

デブサミ2日目に行ってきました。 #devsumi

自分が聞きに行ったのは、以下のような感じです。

  • プロダクトマネージャーという生き方
  • CI/CDを使い倒して数段上のソフトウェア開発をしよう!
  • 【導入事例】Lychee Redmineのユーザが語る!トラブル予防としての使い方
  • エンジニアの皆さんに贈る最速キャリア戦略
  • これをまだ知らない Web エンジニアへ贈る – 私が愛する Elixir/Erlang の楽しさと辛さ –
  • 「仕事なんか楽しいはずないやん」に反発し「ええと思うなら、やったらよろしいやん」を胸に歩んできた話
  • 休憩(イマココ
  • アウトプットのススメ ~技術同人誌・LT登壇・Podcast~

順に雑な感想。

プロダクトマネージャーという生き方

今仕事しているチームにも、お客さん側にプロダクトマネージャがいまして、その姿を思い浮かべながら聞いていました。

「PMが入ると、Issue、Goal、KPI、Scopeがクリアになる」という一節がありましたが、その点あまりクリアになってないなぁ、エンドユーザに引っ張られてないかなぁ、と思いました。

CI/CDを使い倒して数段上のソフトウェア開発をしよう!

CircleCIの中の人の話。

自分はずっとJenkins使ってきて、導入やら布教やらやったんですけどなかなかうまく行かなくてつらみを経験した方だと思うんですけど、そんでもやっぱりCI/CDの実現にはやっぱりあこがれを感じます。

今はそんなん導入してる余裕は全くないんですけど、落ち着いたら。。。

【導入事例】Lychee Redmineのユーザが語る!トラブル予防としての使い方

Redmineの商用カスタマイズ版導入事例といった感じ。

なかなかねー、商用プラグインの導入には敷居が高いんですけど、使えたらいいなぁ。

エンジニアの皆さんに贈る最速キャリア戦略

DMM.comのCTOの人。東大出身ですって。

相応に頭いいひとだとそりゃー駆け上がれるでしょうよ。凡人にはなかなかそこまでのアタマが無いから苦労してんだよぅ、と恨み節半分で聞いていました。

これをまだ知らない Web エンジニアへ贈る – 私が愛する Elixir/Erlang の楽しさと辛さ –

今日一番で軽妙なセッションだったように思います。

一見難しそうなElixirも、導入の手順を間違えなければいい感じだよ、というお話。

「仕事なんか楽しいはずないやん」に反発し「ええと思うなら、やったらよろしいやん」を胸に歩んできた話

今のところ一番エモい話でした。

振り返ると、今まで仕事ではつらい思い出ばっかだったように思います。でも最近は今の会社に入ってようやく、工夫をしたり、意見を言ったりして、それでうまく行くことも出てきたり、そんでも忙しさに流されそうになってたりしますが、そういう環境の中で自分自身を振り返ったりして、定量的に振り返ったり、改善してったりしてけば、仕事も楽しくなるのかなぁ、などと目頭を熱くしながら聞いてました。

アウトプットのススメ ~技術同人誌・LT登壇・Podcast~

でも今日はこれが本番ですよ。奥さん!!

行ってきます!!

laravel-permissionでguardつきroleをアサインする

たまには(すんげぇピンポイントな)技術ネタを。

一般的にLaravel-permissionsを用いてdb:seedを行う際、Seederの中でassignRoleする方法は、以下の通り。

        $user = User::create([
'name' => '社長',
'email' => '[email protected]',
'password' => Hash::make('owner'),
]);
$user->assignRole('owner');

この辺とか参考に。

なんですけど、assignRole関数はguardを受け取らない仕様になっている。(2019/02現在)

これでは、guardを使って例えばAPI経由の時だけパーミッション参照させたい場合などに困る。

この辺とか この辺の実装を見てみると、getDefaultGuardName()でデフォルトの奴しか参照してない。ダメだこりゃ。

正解としては、このIssueの通りなんだけど、本当に最低限(チェックとか省いた)バージョンは以下でいいのかなと思います。

    $roles = app(Role::class)->findByName('owner', 'apiguard');
$user->roles()->saveMany($roles);
$user->forgetCachedPermissions();

roleとかguardの存在確認とか省いてしまっているので、ご参考程度までに。

Laravel使い始めて5ヶ月ほどですけど、ほんと内部のソース読み込まないと使いこなせませんね。