juriful

大好きなのはヒマワリのタネ

ミライトデザインの美女botに触発されてイケメンbotを作った話

はじめに

人生初のアドベントカレンダーです。お手柔らかにおねがいします。

この記事はミライトデザイン Advent Calendar 2022 12/17です🐹
他の日の記事もぜひチェックしてください〜

qiita.com

昨日のアドベントカレンダー

ucanさんの Git rebase 〜コミット履歴を綺麗にする技術〜 でした。

qiita.com

私はGitを使い始めて3ヶ月ごろまで
git rebase 1㍉も分からん...永遠に理解できん...な状態でした。
まだrebaseよく分からん...の皆さんにぜひ読んでいただきたいです。
コミット履歴が美しいのはとても気持ちがよいです🥺

ucanさんのtwitterもぜひご覧ください🙏

ゆうきゃん (@ucan_lab) / Twitter

本題

今回は
ミライトデザインの美女botに触発されてイケメンbotを作った話
について書いていきます。

最初にネタバレしますが
内容は botの作り方 Slackワークフロービルダーが便利だよって話です。

ミライトデザインの美女botとは

中○ayamiさんが #general チャンネルで
毎日コロナの感染者数を教えてくれるbotです。

新型コロナウイルスが流行った最初期は
皆さん日々感染者数を気にしていたかと思います。
私はわざわざ感染者数報告のニュース記事を見に行くほどのマメさはなくて、
完全にayamiの連絡に頼ってました。

イケメンbotを作った動機

コロナ感染者数を知りたかった!とかではなく
ayamiのように自分の好きな俳優が
自分のSlackチャンネルで発言してたら
テンション上がるんじゃないか...?と思った次第です。

さっそくパクって作っていく

どんな機能をつけるか考える

私は毎日寝る前に必ず明日の予定を確認します。

ただ、私の仕事用のカレンダーには約20人分のカレンダーが表示されていて

自分の予定を探すのにいつも苦労してました。
(そしてたまに見逃してしまったり...)

という経緯で
毎晩明日の予定を教えてくれる機能をつけよう!
となりました😉

どうやって実現するか考える

ざっくり選んだ技術は以下の通り

  • GAS
  • Slack - ワークフロービルダーのWebhook

とりあえずさっさとリリースしたかったので
手軽さも重視して↑の2つを選びました。

GASのカレンダー取得のコードはWEBに山程あるので
やってみたい人は検索してみてください🥺

できたもの

なぜ「Slack App - Incoming webhook」ではなく「Slack - ワークフロービルダー」を使ったか

メンションつけるのが楽

Slack AppのIncoming webhookを使って
API経由でメッセージを投稿するときに
「メンションを付けたい!」となると
SlackユーザのIDを取得する必要があってちょっぴり面倒なのですが
(いまはそうじゃなかったりするのかな?)
Slackワークフロービルダーではメールアドレスで
メンションをつけることができます。

その名の通りワークフローが組める

吉○亮くんbotはまだワークフロー組んでないのですが Slackワークフロー自体はもう20個以上作ってます。

Spreadsheetと連携できたりしてとっても便利です。

例えば

  1. 有休申請(Gmail)を検知して
  2. Slackで承認担当者に通知して
  3. 担当者が承認後、社内Googleカレンダーに自動登録する

みたいなこともできます。 SaaS使うほどじゃないけど自動化しないと手間が多い...みたいな 歯がゆいところに手が届きます🐹

▼ 上記の画像のメッセージの中身はこんな風に設定してます。
Slackワークフロービルダーのwebhookは
パラメータを好きな名前で複数登録できるので
とても使いやすいです🙆‍♀️

一方、Spreadsheetはファイルが更新されたら〇〇する
といったGASを組むことができるので
SlackワークフローからSpreadsheetを更新し
それをトリガーに何かしらの処理を入れることもできます🐹

Slackワークフローは割と直感で作れるような親切UIなので
細かい使い方とかは省きます。 (分からなかったらお気軽に聞いてください😉)

ちなみにSlackワークフロービルダーはここから作成できます。

ぜひ使ってみてください🐹

便利すぎて要らんものまで作り始めてしまう可能性があるので
それだけ注意しましょう🥺←要らんものを大量に作った人

最後に

昨日はミライトデザインの忘年会でした。
ペチオブをオフラインでやってた頃がとても懐かしく思えてきました。

phper-oop.connpass.com

早く復活しないかなー。

ペチオブ(ミライトデザイン)では現在YouTubeを投稿しております! 私が編集した動画のURLを貼っておくのでぜひ他の動画も見てね!

youtu.be

【ペチオブ】ペチトーーク<T>でリモートワークについて話せたのが結構よかった話【IOMO】

f:id:juriful:20200314145811p:plain f:id:juriful:20200309151659p:plain

IOMOってなによ?

  • エンジニアコミュニティ「ペチオブ」で勝手に作り出した造語
  • Interactive Online Merges with Offline の頭文字
  • オフライン、オンラインが双方向にやりとりできる形の勉強会

この記事のイベントについて

phper-oop.connpass.com

みんなで持ち寄った話題を、音声チャットでディスカッションする会です🐹

ハイライト

🔽個人的に一番盛り上がったのはこの話題 🔽

まさかの半々w
タイムライン的にはリモートワーク万歳!!!って感じだったので意外でした。

私はコロナの影響でリモートワークになって1ヶ月半ほどになります。
私個人へのメリットはリモートワークの方が大きいです。満員電車が本当に苦手なので。。

仕事としては、私の作業の進捗は出社してたときとあまり変わらない気がしています。
ただ現場は元々リモートに対応しているところではないので、現状はマイナスだろうと思います。

働き方としては、 会社へはもっと頻繁に状況伝えたほうがいいのかな?
それとも重要なことじゃない限り、伝えないほうがみんなが確認する手間が省けて楽かな?
というところがまだちょっと掴めてない感じです。

弊社のSlackはリビングみたいな感じで。
自分は日々少し時間に余裕があってぽつんとリビングにいるけど、家族のみんなはバタバタしてて、邪魔しちゃ悪いしみんなが落ち着くまではちょっと静かにしてようかなみたいなそんな感じです。
(表現力のなさが悲しい)

最終的にはリモートワークだけ、出社ワークだけ、ってならずに当日に選択できるようになるのが個人的な理想です。
SESだとこの「当日に」って部分がちょっと難しいんですよね😣

体調不良ってほどじゃないけど微妙にお腹が痛いから頻繁にトイレに篭りたいので出社したくない😩とか
今日は寂しい気分だからみんなと仕事したい👯‍♂️とか
みんなにもありますもんねきっと🐹

それにしても予想外の回答数で参加者みんなで驚いてました。。
ご協力いただきありがとうございました🙇‍♀️

他にも話題はたくさんありましたので
トーク内容の全貌はHackMDをご覧ください🐹
hackmd.io

【ペチオブ】オンオフ融合の勉強会「IOMO」の初回振り返り

f:id:juriful:20200309151659p:plain

IOMOってなによ?

  • エンジニアコミュニティ「ペチオブ」で勝手に作り出した造語
  • Interactive Online Merges with Offline の頭文字
  • オフライン、オンラインが双方向にやりとりできる形の勉強会

主催のひろどらごん said "コロナには負けたくねえ".

この記事のイベントについて

phper-oop.connpass.com

感想と反省

今回は、

  • オンライン参加の人は各自Discordに参加する
  • オフライン会場では現地のPC1台でDiscordに参加し、オフライン参加の人の発言を拾う
  • オフライン会場のスピーカーではオンライン参加の人の発言を流す

の形で双方向にやりとりできる形を目指しました。

初回ということもあり気になる部分も大きかったかなって気持ちです。
予想はしてましたが、オンラインだとボイスからの発言少ないんですよね。チャットは結構盛り上がっていたイメージ。
そんな中でもたくさん発言してくださったミノ駆動 (@MinoDriven) | Twitterさん、大感謝でした。

発言が聞き取れない

正しくは「オンライン参加の人同士の発言が被ると聞こえなくなる」です。
被らないように上手くファシリテーションするしかないかな?Yukiくんファイト😋

ハウる

現地のマイクがスピーカーの音を拾っちゃうのでハウって聞こえた問題。
途中からオフライン参加の人が発言しているときは会場のマイクをミュートすることでなんとか対応。
みんなイヤホンすれば解決するけどそれだとオフライン参加の意義とは...?ってなりそうなのが難点。
IOMOオフライン参加のメリットってなんだろう?顔を見て会話できること?🤔

開くウインドウがちょっと多い

個人的な最大のイケてないポイントでもあったんですが、
配信画面: ブラウザ
コメント: Slack とか discord ときどき twitter

という部分。多窓、ちょっと不便。。。 タブレットとかスマホで参加していると、たくさんウインドウ開けなくてちょっと厳しいって感想もありました。

そこでニコ生、いいよね、コメント弾幕流れるからちょっと楽しいし。
ただ * プレミアムアカウント(課金じゃないと回線速度が遅い * 30分に一回ライブ中継が切れる とかの問題もあって。
ニコ生もニコ生で微妙だなあ...って思っていたところ

完璧なソリューションがあった

ツイキャスめっちゃ使えるじゃんって思いました。
配信画面からコメント打てるし、配信履歴も残るし、コメントはツイッターにも連携されるし、ツイキャスアカウント作るのも簡単だし。
完璧じゃない?🤔

オフライン参加の人で発言したい人はdiscordでマイクオンにしておけばよさそう。
あとは会場のPCでミキサー使ってPCの音をツイキャスで流れるようにすればいいんですもんね。カンタンカンタン。

※ めっちゃ語ったけどこの案が採用されるかは未定

次回のIOMOイベントについて

まだまだやるよ!参加お待ちしてます! phper-oop.connpass.com

【ぺちオブ】開発合宿を振り返る🌻

f:id:juriful:20190906193025p:plain

今回の内容

9月の下旬にぺちオブで募ったメンバーで1泊2日の開発合宿に行ってきました。
少々今更な記事になってしまいますが、備忘も兼ねて当日のことを振り返ります🐹

感想

私にとってはプログラミング合宿、というよりはモデリング合宿でした。
これまで見様見真似で設計をしてきた私にとってはとても新鮮で楽しい時間でした。
企画してくれたヒロさん(hiro@miraito (@hirodragon112) | Twitter)ありがとうございました🙇‍♀️

私事ですが、嬉しいことに今月(10月)から要件定義フェーズに参画することになりました。
合宿で学んだことをそのまま使えるなんてことは無いかもしれませんが、少しでも合宿で学んだことが活かせるよう頑張ります😌


時系列で感想を交えながら振り返っていきます。

1日目

10:30 東京出発

さっそく始まる車内雑談。やはり話題は技術に偏る(楽しい)

12:45 高坂SAでお昼休憩

満腹になったので再出発!と思いきや

f:id:juriful:20191024191643p:plain とにかく霧がやばい

17:30 宿に到着

早速モデリングを始める

22:00 まずはオブジェクトにフォーカスして概念を集める

22:30 ユースケース図も書く

24:40 ユースケース記述も書く

25:00 メロン農家になる


⚠️ちゃんとしたロバストネス分析はこちら

28:30 ふと気付く

合宿あるある🤔
高校の部活の合宿もこんな感じだった気がする…

2日目

10:00 出発

寝不足の私に太陽は眩しすぎた

11:00 ちょっと観光🚶‍♀️

白糸の滝とか行きました!(写真を忘れるという痛恨のミス)

13:30 ランチタイム

超並んでたお蕎麦屋さんでご飯を食べる☺️ f:id:juriful:20191024191818p:plain f:id:juriful:20191024191849p:plain エビが大きくて美味しかった!

16:30 帰京

そしてミライトデザインのオフィスで昨晩の続きもくもく
写真を忘れるという痛恨のミス・・・・
寿司を食べた記憶がかすかに残っている🍣

23:30 解散

さすがにヘトヘトでした。

24:30 帰宅

爆睡😴

最後に

超ハードでしたが楽しい合宿でした。
参加者の中には初めての言語で自動販売機の実装まで終えた人も・・・!(すごすぎる)

また機会があれば参加したいです🐹

phper-oop.connpass.com

【ぺちオブ】ボルダリング部に参加してきた🌻

f:id:juriful:20190906193025p:plain

はじめに

ぺちオブには部活があるのですが、
今回はそのうちのひとつであるボルダリング部に参加してきました😆✨ 他にもいろんな部活があります😉遊びに来てね!まだまだ増えるよ!(きっと

会場

遊びに行ったのは、株式会社ミライトデザインのすぐそばにあるBOULCOMさんです🎉 boulcom.jp

オープンしたばかりで室内がとてもきれい!そして人がいっぱい!

参加者

f:id:juriful:20190905212402p:plain
  • 人生初ボルダリング
  • 腕相撲めちゃめちゃ強い
  • 最近筋トレしている
f:id:juriful:20190905212603p:plain
  • ボルダリング10〜20回経験者
  • ぺちオブ初参加の翌日に緊急参加という猛者
f:id:juriful:20190905212526p:plain
  • ボルダリング3回くらいやったことある
  • ボクシングとかジムとか行ってる
f:id:juriful:20190905212441p:plain
f:id:juriful:20190905212332p:plain

感想

開始前

🐹 あのヒョイヒョイのぼるやつっしょ?余裕やろw

f:id:juriful:20190906170720g:plain
jurifulのイメージ

開始後

🐹 なにこれむり

f:id:juriful:20190906165812p:plain
記念すべき第一歩


調子乗ってすみませんでした(そもそも運動神経よくない)

序盤 〜とりあえず頑張ってみる〜

ボルコムさんでは石の隣に貼られているステッカーの色でクライミングのルートがレベル分けされています。

f:id:juriful:20190906173643p:plain

こんなかんじ。

ファーストチャレンジ

zimaくんは予想通りの運動神経、脱脂綿さんはさすがの経験値で
hiroさんとucanさんは黄色
jurifulは

私は人より脚も腕も短く背も小さいので低レベル帯でも超しんどい

中盤から終盤 〜もっといけんじゃね?〜

最初に案内された傾斜のない壁でしばらくチャレンジしていたのだけど、同じ色(レベル)でも壁によって簡単だったり難しかったりすることを発見し、みんなでいろんな壁にチャレンジ!35〜45度くらいの傾斜で、石を掴んでぶら下がりながら登る方が私は得意でした。

終盤はみんなテンション上がってきてオレンジ難易度にも挑戦! f:id:juriful:20190905211746g:plain
やっぱ無理だったらしいhiroさん。

今回のメンバーで同じものにチャレンジしてみましたが

f:id:juriful:20190906182405p:plain
f:id:juriful:20190906182427p:plain
f:id:juriful:20190906182924p:plain

全員OUT👍
恐るべしオレンジ難易度。。。

今回の結果

f:id:juriful:20190906180750p:plain

相性の良い壁を見つければ私にもワンチャンありました!

後日談

やっぱ筋肉使ってたんだね

私たち以外にも人が多くてチャレンジの回転が悪くめっちゃボルダリングやったわ🤣って感じではなかったんですが

恐るべしボルダリング👀 私はサボっていたので ノーダメージでした。

実はもう第2回ボルダリング部を決行済み

私は欠席だったんですけどね!
結果はこちら😌

f:id:juriful:20190906181358p:plain

第2回のメンバー強すぎん??????


f:id:juriful:20190906175844p:plain
でしょうね。



以上、ぺちオブボルダリング部レポートでした🐹🌻

【ぺちオブ】始めよう!要件定義に参加してきた🌻

f:id:juriful:20190906193025p:plain

はじめに

はじめまして。自己紹介はまたこんど。

今日の内容

初投稿は私のエンジニア人生を変えた「ぺちオブ」レポートです。

元々暗黙的にぺちオブ広報(イベント中のTwitterガヤ担当)をしていたんですが、connpassのぺちオブページに名前が載ったこともあり、ちょっと嬉しかったのでちゃんと広報っぽくとりあえずブログ活動していきたいと思います(ちょろい

f:id:juriful:20190830142457p:plain

パシリも大歓迎🎉

参加してきたイベント

phper-oop.connpass.com

今回のイベントはyoutubeでも配信しています👏
【ぺちオブ】始めよう!要件定義 - YouTube

感想

今回はブレスト形式で要件定義の理解を深めていきましょうということなんだけど、とりあえずみんなで自己紹介。

参加者のうち要件定義フェーズを経験したことあるは半分くらいでした。(私は経験ないです) 各々要件定義の何が知りたいかを挙げてアジェンダを作成!

そもそも要件定義のイメージは?
自社サービスで、必要な機能を考えてエンジニアに指示するのは要件定義?
コラボレーション先の人とミーティングは要件定義?
情報をどういうふうに連携する?技術的にどうやって実現する?を話すこと?
お客さんの要望を実現するためにどの機能が必要なの?
困りごとを探す作業自体が要件定義?
要件定義の前工程、後工程とは?
要件定義の周辺でよく登場するワードって使い分けてる〜?(要件、要求、要請、仕様、RFPとか)
要件定義がうまくいった(失敗した)ってどうやって測定するぅ〜?
成果物は何?
RADRAって?
お客さんって要件定義の段階でどの辺までイメージできてるの?
要件定義でのしくじり
具体的になにをやるの?
コツとか
概算見積もりはどうやってるの?
見積もりミスったときはどうするのかしら
社内向け、社外向けの違い

\いっぱい!/
( ^o^ )


開発者をしていると要件定義に参加する機会もなかなか無いもので、ちょっとの時間で知りたいことが山程でてきました。
もうすごかった。みんなのHackMD更新速度が。

アジェンダを似ている内容ごとに整列させ、さっそく上から順番に始めましょーーー!ってなったんですが、





「そもそも要件定義ってどっからどこまで?🤔」




いや、まあ、たしかに。断言できない。 なんせ要件定義やったことないからね。ウォーターフォールモデル的な図は知ってるけど私は要求と要件の違いも考えたことありませんでした。。。

あとは機能要件と非機能要件とかっていう単語もよく出てくるらしい。聞いたことはあれど、じゃあ具体例は?って言われると「うーーーーん!むり!」ってなっちゃいました。

で、結局要件定義がどっからどこまでなのかがわからないので、割とみんなの頭に「あれ?もしや私がいままで要件定義だと思っていたアレは実は要件定義じゃないのでは??」的なモヤモヤが浮上(していたはず)。
それを明確にするためにも、アジェンダに出ている要件定義の前工程、後工程とは?を考えてみようのターンが始まる!

というわけでシステム開発における全行程を洗い出して、どんな工程でどんな人が関わってどんな成果物ができるのかを話し合うことに🎉 下流工程やリリースみんな経験がある部分なので発言もいっぱいでこれは結構盛り上がる!

... ... f:id:juriful:20190906105200p:plain

..
f:id:juriful:20190905202019p:plain


... ...

..
めちゃめちゃ盛り上がって気付く







「時間無くね?🤔」



終わった



駆け足で要件定義〜設計の説明もしてもらったものの、やっぱり2時間で深くは掘り下げるのは難しいですね😫
要件定義とは何なのかをちゃんと理解するためにはそれだけたくさんの他の情報やら知識が必要ってことなんだろうなあ…😌新人さんがすぐに要件定義フェーズに参画するケースが少ないのも、それだけ難易度が高いからなんですかね。業務知識も、要件定義以降に何が行われるかの知識も、全部持っていないときっとうまくいかないプロジェクトになってしまうんかなーとか思いました。

内容はちょっと不完全燃焼でしたが、いつも通り終始アットホームな雰囲気で楽しい会でした。
きっと第二弾で本当の要件定義とは何かがわかるはず。

期待大。
とりあえず、今度は前もってアジェンダ作って時間配分しよう。ちゃんと😂

おしらせ

お茶の水女子大学でイベントやります。
Let's OOP😆 connpass.com

おまけ 〜今日のhiro-typo