書き置き。

ほぼ勉強の記録みたいなもんです。

#みんなのPHP読みました

PHPは自分のメイン言語なので基本的にはわかる話が大部分でした。 しかし、だからこその復習もあり、新しい発見もあり、読んでよかったです。

その中から刺さった記事を2つ書いておきます。

6.4 MBCだけに留まらないための設計の話

ADR(Action-Domain-Reponder)

Action-Domain の部分は同じようにLaravelで近い構成での書き方はをしたことがありました。
MVCからADRに変更する歳の具体的な変更点がわかりやすいのが良かったです。 自動生成された Controller のままCRUD処理を書き始めてしまうと、どうしてもFat-Controllerになりがちです。 Controllerの 1 public メソッドを Action という形で 1クラスに分割していく方式は私も気に入っています。

Responderというのは初めて出会って、なるほどなと思いました。
レスポンスを生成するところまでをビジネスロジックとして記述することが多かったのですが、それはResponderの役割だったのかもしれないと思いました。 データのCRUD処理をしてレスポンスのもととなるデータを取得するところまでをドメイン層に書き、レスポンス(大半がviewではなくAPIなので配列をゴニョゴニョするのみ)の加工はResponder と役割を分けると良さそうですね。

5.3 AWS CodePipeline を使用したCI/CD 環境の導入

こちらはPHPではなく、PHPをデプロイするAWSの環境構築について触れられていました。

AWSでCodePipelineやCodeBuildはすでにいくつかの案件で使っています。
CDKというものを使うと、TypeScriptを使ってエンジニアにもわかりやすく環境構築内容を記述できる
という概要まではキャッチしていたものの、実際に手を動かして作ってみたことがありませんでした。

本書で紹介されているサンプルコードのtypoを見つけて報告してしまうくらいにはしっかりコードまで読みました。

近々、AWSを使って作りたいものもあるので、CDKを使った環境構築は早速試してみます。

さいごに

発売直後に購入していたものの、なかなか読み始められず2月に入ってからようやく読むことができました。 PHPerKaigiの開催前に読んで、著者の方々に「読みました!」って言えたら良かったのに、というのが今回の反省店です。 残念ながら、PHPerKaigiに参加した復路の時間で大半を読み終えました。

そういうことを繰り返さないためにも、できる限り積ん読を増やし過ぎないように、かつ速やかにアウトプットすることを続けていこうと思います。

最後の最後に懺悔

本当のところ、いくつかの記事は今の自分には難しすぎて読めなかったところももありました。
いつの日か、自分がパワーアップして理解できるようになったときに、もう一度読み返したいです。

PHPerKaigi 2020 に参加してきました

phperkaigi.jp

PHPerKaigiは今年で3回目の開催、初回・2回目と参加できずに次こそは、と思っていたので、念願の初参加となりました。 イベントは2/9-11の の3日間でしたが、長期間家をあけることに自分自身がgoを出せず、1.5日の日程となりました。

参加された他の多くの方も言及されているのではないかと思います。今回初投入されたこのトレカ。受付時に160枚ほど渡されました。
ゲームができそうなパラメータが書かれていますが、具体的なプレイ方法は公表されていません。 しかし多くの参加者がこれを持っているというコンテキストが共有されています。
顔見知りのお久しぶりさんも、見かけたことあるけど名前が思い出せない方も、とりあえず交換しましょ!っていうと皆さん快く交換してくれて、SNSアイコンと名前がわかるので会話をするきっかけができる、ということで今回のPHPerKaigiでは大活躍していました。

今回は会社でスポンサーになっていたので、スポンサーチケットをもらって参加しました。
とはいえ、スポンサーブースがあるわけでもなかったので、イチ参加者として楽しんできました。

カンファレンスに参加すると、どうしても講演(PHPerKaigiの場合はトークと呼ばれる)に参加しがちになってしまいます。 今回はカンファレンスではなくKaigiなので、すこし意識をしてトークの分量を減らし、IRTなど他の参加者との交流にも時間を使うようにしていました。

私的1日目、2日目両日開催されたTrac C での女子会。
普段、エンジニア女子とリアルトークする機会はそんなに多くないので、楽しかったです。
参加できなかった男性のためにちょこっとだけトークの一部を公開するとこんな話題で盛り上がっていました

  • 育児休暇とって家にいるのに家でパソコン開いてるならいないほうがマシ
  • (エンジニアに限らず) 保育園に入れるのが大変
  • 子供の面倒を見ながらリモートワークするのは小学校低学年くらいまでムリ

またどこかで機会があればやりたいですね。

技術的なトークというところでは、少し前のカンファレンスではPHPのバージョンアップ・フレームワークのバージョンアップをいかに頑張ったか
というようなトークがPHP界では至るところで行われていましたが、一旦落ち着いたように思います。

自分のツイートをふりかえると、開発をうまく回すための試行錯誤、こんなふうに頑張ったらうまくいきました、という事例紹介が多くなってきていて、また自分もそういうところに興味が移っているように思いました。

2泊3日、わりと強行スケジュールで寝不足になり体力がギリギリなところはあったものの、 行きも帰りも予定通りに遠征を追えることができました。

スタッフの皆さん、参加者の皆さん、ありがとうございました!!

ABDでAWS認定ソリューションアーキテクトアソシエイト教科書を読みました

会社で継続的に行っている勉強会のひとつで、ABDというものがあります。
ABD とは アクティブ・ブック・ダイアログ の頭文字をとって ABD。

www.abd-abd.com

ざっくりABDの流れ

  • 1冊の本をいくつかのパートにわけ裁断、参加者が1人1パートずつ読む
    • 担当はその場で決める 事前の予習は不要
  • 時間を決めてそれぞれが自分の担当パートを読み、紙に、そのパートの要点をまとめて書き出していく
    • 時間がきたら終了
  • 本の流れに沿って、各人がまとめた内容を見ながら発表
  • チェックアウト参加してみてどう思ったか、感想を一人ずつ述べる

リモート対応

以前は会社の広いスペースに全員が集まって開催していたようなのですが、今回は私ともうひとりがリモート参加ということで、zoomで繋いでの開催となりました。 リモート参加がいるとまとめた紙を見ながら、というわけにはいかないため、スマホで紙を写真をとってdropboxで共有しました。主催者がブラウザでdropboxを開いているところをzoomで画面共有し、それを会社やリモートから視聴しながら発表を行う、というアレンジがされていました。

課題書籍

徹底攻略 AWS認定 ソリューションアーキテクト – アソシエイト教科書

徹底攻略 AWS認定 ソリューションアーキテクト – アソシエイト教科書

動機

AWS認定 ソリューションアーキテクト アソシエイト という資格は昨年春に合格していました。 お仕事も、サーバーサイドエンジニアでAWSを扱うことが多いですし、個人的にも情報収集・勉強しているので、本の内容の大半は頭に入っているだろうと思っていました。

それでも今回参加したのは、上位資格を取得したいというところでアソシエイトレベルの復習にもなりそう、そしてABDというものを一度体験してみたいという好奇心がありました。

参加した感想

他の参加者の顔ぶれはというと、非エンジニアやエンジニアだけどAWSを扱う職種じゃない方、サーバーサイドエンジニア、これから試験を受けようと勉強中の方、など必ずしもAWSを使いこなしている参加者ばかりではありません。そんな方々がどんなふうにまとめて発表してくれるのか、期待と不安半々くらいの気持ちで参加しました。

失敗だったかもしれないと思うところは、担当の割り振りを決める時に、一番簡単なパートを取ってしまったところです。
試験勉強をしたときに一番さらっとしか読まなかったけれど、試験を受けてみたらわりと重要な章で、しっかり理解していないと大きく得点を落としてしまいそうな分野だった、と反省したパートでした。そこを復習してまとめて発表することで、理解を深めたいと思って選択したのです。 読みすすめると、他の参加者より前提知識があるのに、随分あっさり終わってしまってAWS経験がない参加者には悪い事したような気がしました。

一方、他の参加者は、普段AWSを使っていない方も含め、参加者全員がすごく上手にまとめて発表していて驚きました。専門用語が多く、前章で解説しているリージョン、AZなどを理解していないとなかなか難しいところもあるだろうと予想していましたが、想像以上に概要をうまく抜き出してまとめられていました。

チェックアウトで上がっていた感想でも、ざっくり本の内容がわかってよかった、ふわっとしか知らなかったところを知ることができてよかった、など好感触だったようです。

まとめ

今回私はABDが初めてだったので、前提知識があるところなら多少心の余裕があって良いのでは、と思うところがありました。実際に参加してみると、これは全く前提知識がない本でABDをやったときに、自分はどんな風になるのだろう?はたして人に説明できるほどまとめることができるのだろうか?というところに興味を持ちました。

ABDはまた機会があれば参加してみたいと思います。

"AWSでつくるAIプログラミング入門"でAI入門してきた

AWSでつくる AIプログラミング入門

AWSでつくる AIプログラミング入門

re:invent2019 に参加しAIや機械学習に興味を持った流れで、ちょうど12月にこちらの書籍が販売されると聞いて、早速購入しました。
Amazon.co.jp でそれまでAI関連の本を買ったこともないのに、、、発売前にレコメンドされてきました。AWSの技術を使って予測されていたのでしょうか。

書籍の特徴

本業はPHPで、PythonはAWSでLambda関数を作成するのに少し書いたことがあるくらいの経験で読み始めました。

Python、AWS SDK for Python (Boto3) を使って解説されています。

AWSにはすべてBoto3経由でアクセスしているため、AWSのコンソール画面については解説されていません。 読み進めていく中では確かにコンソール画面を開かずとも支障はなさそうです。

しかし今後実際にプロダクトを作っていくことを考えると、ターミナルに表示させている結果(json.dumps()が多い)と合わせてコンソール画面ではどのように表示されているか、を確認しながら行うのが良さそうです。

それから、"AIプログラミング入門" というタイトルがついている通り、プログラミングに不慣れな方のために、よくあるエラーの解決方法が掲載されています。 また、実行に時間がかかるところや、作成後放置してしまうと料金が高めのサービスについてもそれぞれ言及されています。
各章末にはリソースの削除方法(これもboto3を使ったpythonのプログラム)も掲載されているので、丁寧な印象を受けました。

内容

  • Translate:翻訳
  • Polly:音声合成
  • Transcribe:音声をテキストに変換
  • Rekognition:画像の分析
  • Textract:画像からテキストを抽出
  • Comprehend:文章から話題や感情を抽出
  • Personalize:レコメンデーション
  • Forecast:予測
  • Lex:対話型エージェント

Translate、Polly、Transcribe、Rekognition、Textract。このあたりまでは、それぞれAPI提供されているサービスが他にもあるので、正直これもAIと呼んでしまうのか、、、と思いました。 これなら知ってる!これならできる!と安心する一方で、これができたところで「AIやってます!」なんて胸を張れない気がしてもやもやしながら読み進めていました。

後半戦、Comprehend、Personalize、Forecast この辺になってくるとAI感が出てきました。 Comprehendは、つい先日、日本語に対応されていました。まだ東京リージョンで使えないのが残念ですが、今後活用事例がたくさん出てくることでしょう。

そして最後LexはAlexaにも搭載されている技術だそうです。Alexaが日本語にも対応しているのに対し、現状のLexは英語のみとなっています。今後のupdateに期待したいところです。

実践

掲載されているコードがPythonということは、Lambda関数にしてAPI Gatewayと組み合わせると、これはすぐに自分のプロダクトとしてAPI化できそう、という視点で読み進めていました。 Python初心者ですがこの本を通じて、boto3を使ってAWSの各種サービスとやりとりするスクリプト(Lambda関数)くらいなら自分にも作れそう、と思いました。

この本で学んだサービスのうち、顔の画像認識ができるRekognition に興味を持っています。掲載されているコードも自分の写真などで色々試しました。

自分が子供の頃の写真と最近の写真で、正しく同一人物と判定されていました。
よく親子そっくりだと言われる娘の写真を使って判定させたところ、やはり別な人物と認識されました。

まとめ

AI・機械学習というと、高校大学レベルの数学が必要だったり、自分には敷居が高いと感じていました。
しかしこうして特定の用途に特化したAIサービスもたくさん出てきています。まずはここから始めるのが良さそうと、入門してはじめの一歩を踏み出せた感覚があります。

この流れで、AIを使ったプロダクトをまずは1つ、作ってみようと思っています。

関連

note.com

makies.hatenablog.com

t_wadaさんのペアプロの講演を視聴した

会社にt_wadaさんを呼んで講演してもらったところを社内メンバーにはzoomで中継されていて、自宅で視聴しました。 直前まで仕事をしていて、夕食の準備や食事しながらもiPadでzoomに繋いで見ていました。

自分自身の立ち位置としては、WEB+DB Pressのモブプロの記事を読んで、当時のチームメンバーとモブプロを経験したことがありました。 一定の成功体験が得られたものの、実施回数は多くなく、継続的な実施には至ってませんでした。

WEB+DB PRESS Vol.102

WEB+DB PRESS Vol.102

  • 作者:
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/12/23
  • メディア: 単行本

t_wadaさんの講演の印象(全体感)

ペアプロ(モブプロ)の良さは感じていたけれど、それを新しいチームメンバーに説得するには必要十分な言語化ができていませんでした。 そこを見事にt_wadaさんは言語化し、講演していただいていたのが印象的でした。

チームメンバーがもしくは次のチームメンバーがzoomの向こう側で講演を聴いているかどうかはわからないけど、今回の講演によってペアプロやモブプロに対する共通認識ができ、(できていない場合は録画を見てもらうなどで補完ができるはず)、ペアプロしましょうと気軽に言えるようになるといいなと思いました。

以下雑多なキーワードメモ

  • リソース効率ではなく、トータルコストで考えると良い f:id:makies:20200121185421j:plain

  • 恥ずかしいは個性。押し付けるとペアプロハラスメントになってしまう。

  • どうしても無理な人は個性として認めざるを得ないが、やったこともないのに恥ずかしい、、と敬遠してしまうのはもったいない
  • 初心者-初心者のペアは避ける
    • ベテラン - 初心者 のペアで初心者がベテランの技をガンガン盗む取り入れるのが良い
  • ベテランは教えるばかりで得るものがない?
    • そんなことない。人に教えることで知識の再構成ができ、教える側がより強くなることができる

交代

  • (デフォルト)7-8分で交代
    • 短すぎると感じるのであれば延ばしてみる
    • 長すぎると(30分とかにすると90分で2回しか交代できない!)大事な瞬間が訪れないのでもったいない
    • ペアによって調整しながらすすめる
    • ガンガン交代していく(自由化)ができると最高

リモートでペアプロ

  • チャットしながら頑張るはダメ
  • ここ3年位で事例が多くなってきた
  • リモートでもしゃべる。リモートだからこそしゃべる。人はチャットより早い。喋れる環境を用意しなければならない。
  • 音声のコミュニケーションをメインとする
  • リモートペアプロは十分可能な時代になってきた
  • コードの共同編集プラグインの登場
  • 画面共有はいまのところ必須
    • 複数人で作業分担もできてしまう!(淡々とfixtureを量産するような局面で効果的)

心理的安全性の確保について

ペアプロやりましょう、って言えたとしても、開催できたとしても、まずはチームメンバー内で心理的安全性が確保できてないと、聞きたいこと聞けないで終わってしまったり、昔のコードレビュー会の話であったように他メンバーから総ツッコミを受けてだんだん萎縮してやりたくなくなる、といった悪循環にハマるパターンがありそうで質問してみました。

この質問に対し、t_wadaさんからおすすめされたのがTeamGeekという書籍。
数年前に一通り読んでいて、この本の読書会にも参加したことがありました。今また必要な時期がきてそうなので、改めて読んでみようと思います。

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

じつはt_wadaさんがこの回答を話し始めたあたりからどこかに溜まっていた涙が溢れて止まらなくなってしまいました。 後日録画が公開されるそうなので、もう一度見直します。

LeanとDevOpsの科学

ひょんなことから、1年ほど前から手元にあるのに読むことができていなかったのです。本は積んでばかりいないで読み進めていかねばと思い直しました。

LeanとDevOpsの科学[Accelerate] テクノロジーの戦略的活用が組織変革を加速する (impress top gear)

LeanとDevOpsの科学[Accelerate] テクノロジーの戦略的活用が組織変革を加速する (impress top gear)

最後にイベント告知のはなし

t_wadaさんといえばTDDというイメージが先行していて、正直ペアプロの話をしてくださると言われても、あまりピンと来ていませんでした。それでもわたしは、あのt_wadaさんだからきっといい話が聞けるに違いない、と期待して正座待機していたので、いいお話が聞けたわけですが、、、

t_wadaさんを全く知らなかったら、あのライオンの画像を知らなかったら、、、そもそもこの講演会に参加しただろうか? 名前は見かけたことがあったとしても、何をやっているのか、どんな魅力的な方なのか、講演会の主催者側(今回は社内で企画してくれた方)からの情報発信がなさすぎて、もったいなかったと思いました。ある程度普段から様々な情報収集を行っているような人には目に止まって参加してたであろう。そうでない人にとっては、誰だか知らない人が会社に来てなんか発表するらしいよ、程度の認識だったかもしれない、もしくはそんなイベントが予定されていることを知らずに帰ってしまっていたかもしれない、、 そんな事を考えていて、イベントの企画実施をするためには、参加者への告知も大切だと再認識しました。

はてなブログを再開しました

このブログ、過去記事を見ていくと10年以上前の記事が残ってたりします。 これを捨てて(削除するor放置して)新しい気持ちで新しいブログを作る、という手もあったのだけど、色々悩んだ末に、ここでまた書き始めることにしました。

カテゴリがたくさんありすぎたのをの整理するため、過去記事をひとつひとつ開いて設定し直す、という作業をしました。
これ残しておいてもな・・・と思う記事が多かったのですが、この当時はこういう事を考えていたんだなぁということがわかる数少ないデータでもあります。 ある種、自分の歴史でもあるので、目を背けたくなるような過去も含め、大切にしようという気持ちになりました。

昨年(2019年)は、noteというサービスに記事を書いていたのですが、今後はこちらのブログに書いていこうと思っています。
記事を移すことは考えてませんが、ここにこういう記事を書きましたというリンクエントリーを過去の日付で追加していくのは、やるかもしれません。

気分のリフレッシュも兼ねて、ブログのデザインを変えてました。カラフルな色使いだけども落ち着いたトーンと、前から使っているwood系の壁紙の組み合わせで、最近流行りのアウトドア・キャンプ風になったのがわりと気に入っています。

これまで、なにをやっても三日坊主な性格で、今回も続ける自信があるわけではありません。
ただ今までと違うのは、技術系の記録を書くこのブログのほか、運動記録を書くブログ、お金系のあれこれを記録しておく非公開ブログ も同時にはじめました。 そのために、はてなブログを Pro にしました。

今年はアウトプットを積極的に行うチャレンジ中。
当日中にアウトプットを目指してしばらくやってみるつもりです。

学生と社会人のライトニングトーク大会 で発表しました

イベントページはこちら https://connpass.com/event/157248/
ハッシュタグ #北海道LT大会

https://pbs.twimg.com/media/EOjAr6TU0AAAnLH.jpg:large https://twitter.com/rpa_hokkaido/status/1218435572189917185

わたしが今日発表した資料はこちらです。

re:inventに行ってきた、からの機械学習・AIに興味を持ったけど難しそう、、、特定の昨日に特化したサービスならとっつきやすいので勉強し始めた、っていう話をしました。

スライド内で紹介している書籍はこちらです。

AWSでつくる AIプログラミング入門

AWSでつくる AIプログラミング入門

Pythonで、boto3を使ったサンプルコードで紹介されています。
"入門"と謳っているだけあって、2-3行ごとに解説が入っていたり、エラーの対応方法などプログラミング初心者がつまづきやすいところのフォローもされているのが印象的です。

Kindle版がなく、書籍の厚さもそこそこあるので持ち歩きにはちょっとつらいですが、頑張って読み進めているところです。
まわりにこの本で勉強してるよ!って方が全然いないので、仲間が増えるといいなぁと思っています。

今回のイベントは、千歳科学技術大学の先生とその教え子たちも(単位をもらいに?)発表しにきてました。年長さんのお子様も!! おとなも学生も関係なく、5分で自分の興味のあることを発表する。技術系の話題が多かったとは言っても、いろんな分野の話が聞けて楽しかったです。LTをしたら次は通常枠で登壇したり、勉強会を主催する側になったり、、と、札幌のITコミュニティがふたたび活気付いてくるといいなと思いました。

以下、発表時にいただいたtweet記録です

発表しようとケーブルを繋いだところ、マシンフリーズしまして、とても焦りました。 次の方に先に発表してもらったところ、LTのトリになってしまったのでした。

ユニークな制度がたくさんある中で、なぜか注目して頂ける機会が多いのが、このお野菜支給制度です。
毎月数種類のちょっといいお野菜・果物のリストから好きなものを1セット選ぶ事ができます。 中身は都度変わり、1セットに2-3種類の珍しいお野菜が入っていることもあります。
大阪や札幌など地方だったり人が少ない拠点は送料が高く着いてしまうので、支給方法を改革中です。

ゆめみでは毎日勉強会開催を目指して、勉強会を行っています。
またメンバーの(鍵係の)都合がつけば、外部の方へ勉強会のための会場提供も行っております。
勉強会会場探しにお困りの際は、ご相談ください。

TATONKAチャレンジですね。マヨネーズは即没収されたそうです。

re:invent現地で得た刺激ももちろんありましたが、行くことが決まってからの学習意欲の成長曲線がぐぐぐっとあがりまして、帰国後に行われたre:cap(ふりかえり)で今年発表された新サービスの話を聞いていると、これまた知らなかった分野の話がたくさん入ってきて、興味を持つ分野がまた増えました。 そこらへんも含め、re:inventなのだなぁという学びがありました。

英語は・・・せっかく行くならAWSのエンジニアや現地の参加者と交流するために、話せたほうが絶対に良いです。それは間違いない。 でもre:inventに行くための必須条件か?というと、必ずしもそうでもなかったです。一番大事だったのは学習する意欲。それさえあれば何かしらの学びが得られると思います。

旅費も参加費もかなりの金額かかるのでなかなか気軽にとはいきませんが、もし会社などで支援してもらえる機会があるのであれば、ぜひ参加してみると良いと思います。

(ってLT内で時間なくて喋りきれなかったのをここに書きました)

無事終わってホッとしました。