ミライトデザインの美女botに触発されてイケメンbotを作った話
はじめに
人生初のアドベントカレンダーです。お手柔らかにおねがいします。
この記事はミライトデザイン Advent Calendar 2022 12/17です🐹
他の日の記事もぜひチェックしてください〜
昨日のアドベントカレンダー
ucanさんの Git rebase 〜コミット履歴を綺麗にする技術〜 でした。
私はGitを使い始めて3ヶ月ごろまで
git rebase 1㍉も分からん...永遠に理解できん...な状態でした。
まだrebaseよく分からん...の皆さんにぜひ読んでいただきたいです。
コミット履歴が美しいのはとても気持ちがよいです🥺
ucanさんの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と連携できたりしてとっても便利です。
例えば
- 有休申請(Gmail)を検知して
- Slackで承認担当者に通知して
- 担当者が承認後、社内Googleカレンダーに自動登録する
みたいなこともできます。 SaaS使うほどじゃないけど自動化しないと手間が多い...みたいな 歯がゆいところに手が届きます🐹
▼ 上記の画像のメッセージの中身はこんな風に設定してます。
Slackワークフロービルダーのwebhookは
パラメータを好きな名前で複数登録できるので
とても使いやすいです🙆♀️
一方、Spreadsheetはファイルが更新されたら〇〇する
といったGASを組むことができるので
SlackワークフローからSpreadsheetを更新し
それをトリガーに何かしらの処理を入れることもできます🐹
Slackワークフローは割と直感で作れるような親切UIなので
細かい使い方とかは省きます。
(分からなかったらお気軽に聞いてください😉)
ちなみにSlackワークフロービルダーはここから作成できます。
ぜひ使ってみてください🐹
便利すぎて要らんものまで作り始めてしまう可能性があるので
それだけ注意しましょう🥺←要らんものを大量に作った人
最後に
昨日はミライトデザインの忘年会でした。
ペチオブをオフラインでやってた頃がとても懐かしく思えてきました。
早く復活しないかなー。
ペチオブ(ミライトデザイン)では現在YouTubeを投稿しております! 私が編集した動画のURLを貼っておくのでぜひ他の動画も見てね!
【ペチオブ】ペチトーーク<T>でリモートワークについて話せたのが結構よかった話【IOMO】
IOMOってなによ?
- エンジニアコミュニティ「ペチオブ」で勝手に作り出した造語
- Interactive Online Merges with Offline の頭文字
- オフライン、オンラインが双方向にやりとりできる形の勉強会
この記事のイベントについて
みんなで持ち寄った話題を、音声チャットでディスカッションする会です🐹
ハイライト
今日の雑談お題
— juriful (@juriful) 2020年3月12日
ICONIX, git, DDD, 設計原則,リモートワークを普及させていくために
#ペチオブ
🔽個人的に一番盛り上がったのはこの話題 🔽
どちらのほうが仕事しやすい?#ペチオブ
— juriful (@juriful) 2020年3月12日
まさかの半々w
タイムライン的にはリモートワーク万歳!!!って感じだったので意外でした。
私はコロナの影響でリモートワークになって1ヶ月半ほどになります。
私個人へのメリットはリモートワークの方が大きいです。満員電車が本当に苦手なので。。
仕事としては、私の作業の進捗は出社してたときとあまり変わらない気がしています。
ただ現場は元々リモートに対応しているところではないので、現状はマイナスだろうと思います。
働き方としては、
会社へはもっと頻繁に状況伝えたほうがいいのかな?
それとも重要なことじゃない限り、伝えないほうがみんなが確認する手間が省けて楽かな?
というところがまだちょっと掴めてない感じです。
弊社のSlackはリビングみたいな感じで。
自分は日々少し時間に余裕があってぽつんとリビングにいるけど、家族のみんなはバタバタしてて、邪魔しちゃ悪いしみんなが落ち着くまではちょっと静かにしてようかなみたいなそんな感じです。
(表現力のなさが悲しい)
最終的にはリモートワークだけ、出社ワークだけ、ってならずに当日に選択できるようになるのが個人的な理想です。
SESだとこの「当日に」って部分がちょっと難しいんですよね😣
体調不良ってほどじゃないけど微妙にお腹が痛いから頻繁にトイレに篭りたいので出社したくない😩とか
今日は寂しい気分だからみんなと仕事したい👯♂️とか
みんなにもありますもんねきっと🐹
それにしても予想外の回答数で参加者みんなで驚いてました。。
ご協力いただきありがとうございました🙇♀️
【ペチオブ】オンオフ融合の勉強会「IOMO」の初回振り返り
IOMOってなによ?
- エンジニアコミュニティ「ペチオブ」で勝手に作り出した造語
- Interactive Online Merges with Offline の頭文字
- オフライン、オンラインが双方向にやりとりできる形の勉強会
主催のひろどらごん said "コロナには負けたくねえ".
この記事のイベントについて
感想と反省
今回は、
- オンライン参加の人は各自Discordに参加する
- オフライン会場では現地のPC1台でDiscordに参加し、オフライン参加の人の発言を拾う
- オフライン会場のスピーカーではオンライン参加の人の発言を流す
の形で双方向にやりとりできる形を目指しました。
初回ということもあり気になる部分も大きかったかなって気持ちです。
予想はしてましたが、オンラインだとボイスからの発言少ないんですよね。チャットは結構盛り上がっていたイメージ。
そんな中でもたくさん発言してくださったミノ駆動 (@MinoDriven) | Twitterさん、大感謝でした。
発言が聞き取れない
正しくは「オンライン参加の人同士の発言が被ると聞こえなくなる」です。発言に発言がかぶさると何も聞こえなす🤤#ペチオブ
— juriful (@juriful) 2020年2月27日
被らないように上手くファシリテーションするしかないかな?Yukiくんファイト😋
ハウる
現地のマイクがスピーカーの音を拾っちゃうのでハウって聞こえた問題。オフライン参加者も全員イヤホンすれば解決する気がするハウり問題#ペチオブ
— juriful (@juriful) 2020年2月27日
途中からオフライン参加の人が発言しているときは会場のマイクをミュートすることでなんとか対応。
みんなイヤホンすれば解決するけどそれだとオフライン参加の意義とは...?ってなりそうなのが難点。
IOMOオフライン参加のメリットってなんだろう?顔を見て会話できること?🤔
開くウインドウがちょっと多い
個人的な最大のイケてないポイントでもあったんですが、今日のペチオブはニコ生で配信するのが正解な気がするん#ペチオブ
— juriful (@juriful) 2020年2月27日
配信画面: ブラウザ
コメント: Slack とか discord ときどき twitter
という部分。多窓、ちょっと不便。。。 タブレットとかスマホで参加していると、たくさんウインドウ開けなくてちょっと厳しいって感想もありました。
そこでニコ生、いいよね、コメント弾幕流れるからちょっと楽しいし。
ただ
* プレミアムアカウント(課金じゃないと回線速度が遅い
* 30分に一回ライブ中継が切れる
とかの問題もあって。
ニコ生もニコ生で微妙だなあ...って思っていたところ
完璧なソリューションがあった
ツイキャスめっちゃ使えるじゃんって思いました。
配信画面からコメント打てるし、配信履歴も残るし、コメントはツイッターにも連携されるし、ツイキャスアカウント作るのも簡単だし。
完璧じゃない?🤔
オフライン参加の人で発言したい人はdiscordでマイクオンにしておけばよさそう。
あとは会場のPCでミキサー使ってPCの音をツイキャスで流れるようにすればいいんですもんね。カンタンカンタン。
※ めっちゃ語ったけどこの案が採用されるかは未定
次回のIOMOイベントについて
まだまだやるよ!参加お待ちしてます! phper-oop.connpass.com
【ぺちオブ】開発合宿を振り返る🌻
今回の内容
9月の下旬にぺちオブで募ったメンバーで1泊2日の開発合宿に行ってきました。
少々今更な記事になってしまいますが、備忘も兼ねて当日のことを振り返ります🐹
感想
私にとってはプログラミング合宿、というよりはモデリング合宿でした。
これまで見様見真似で設計をしてきた私にとってはとても新鮮で楽しい時間でした。
企画してくれたヒロさん(hiro@miraito (@hirodragon112) | Twitter)ありがとうございました🙇♀️
私事ですが、嬉しいことに今月(10月)から要件定義フェーズに参画することになりました。
合宿で学んだことをそのまま使えるなんてことは無いかもしれませんが、少しでも合宿で学んだことが活かせるよう頑張ります😌
時系列で感想を交えながら振り返っていきます。
1日目
10:30 東京出発
さっそく始まる車内雑談。やはり話題は技術に偏る(楽しい)
ぬぬるくさんのアーラン講座が始まった#phper_oop
— juriful (@juriful) September 21, 2019
12:45 高坂SAでお昼休憩
ランチ休憩に向かうヒロドラゴン https://t.co/kCBYNFkNj8 pic.twitter.com/9DmUZg8Wj5
— zima🍶🐈 (@zima_gen) September 21, 2019
満腹になったので再出発!と思いきや
とにかく霧がやばい
17:30 宿に到着
早速モデリングを始める
お題:自動販売機
— juriful (@juriful) September 21, 2019
22:00 まずはオブジェクトにフォーカスして概念を集める
ドメインモデルの作成がちょっとできてきたのでユースケースモデルを作る
— juriful (@juriful) September 21, 2019
22:30 ユースケース図も書く
ユースケース記述の目的
— juriful (@juriful) September 21, 2019
使う人から見えている機能をシステムとアクターの間でどんなことが行われているかを詳細に記述するもの(システムからの視点を加える)
※プログラムのコメントアウトみたいなものを書く
24:40 ユースケース記述も書く
これでなんとなく成立しそう。
— juriful (@juriful) September 21, 2019
これをプログラム寄りにした感じで分析する
→ロバストネス分析
25:00 メロン農家になる
的確ですごくよい
— choco (@choco14t) September 21, 2019
⚠️ちゃんとしたロバストネス分析はこちら
バウンダリ:
— juriful (@juriful) September 21, 2019
システムとの境界を表す(UIとかcronとか)
→何によって起動(発火)するか
コントロール:
— juriful (@juriful) September 21, 2019
動詞となるもの
メソッドの候補になりやすい
28:30 ふと気付く
合宿あるある🤔4時半…ハッカソンっぽい…(プログラミングしてない)
— juriful (@juriful) September 21, 2019
高校の部活の合宿もこんな感じだった気がする…
2日目
10:00 出発
寝不足の私に太陽は眩しすぎた「梅干しみたくなってるよ」って言われた☄️
— juriful (@juriful) September 22, 2019
11:00 ちょっと観光🚶♀️
白糸の滝とか行きました!(写真を忘れるという痛恨のミス)
13:30 ランチタイム
超並んでたお蕎麦屋さんでご飯を食べる☺️ エビが大きくて美味しかった!
16:30 帰京
そしてミライトデザインのオフィスで昨晩の続きもくもく
写真を忘れるという痛恨のミス・・・・
寿司を食べた記憶がかすかに残っている🍣
23:30 解散
さすがにヘトヘトでした。
24:30 帰宅
爆睡😴
最後に
超ハードでしたが楽しい合宿でした。
参加者の中には初めての言語で自動販売機の実装まで終えた人も・・・!(すごすぎる)
また機会があれば参加したいです🐹
【ぺちオブ】ボルダリング部に参加してきた🌻
はじめに
ぺちオブには部活があるのですが、
今回はそのうちのひとつであるボルダリング部に参加してきました😆✨
他にもいろんな部活があります😉遊びに来てね!まだまだ増えるよ!(きっと
会場
遊びに行ったのは、株式会社ミライトデザインのすぐそばにあるBOULCOMさんです🎉 boulcom.jp
オープンしたばかりで室内がとてもきれい!そして人がいっぱい!
参加者
- 人生初ボルダリング
- 腕相撲めちゃめちゃ強い
- 最近筋トレしている
- ボルダリング10〜20回経験者
- ぺちオブ初参加の翌日に緊急参加という猛者
- ボルダリング3回くらいやったことある
- ボクシングとかジムとか行ってる
- ボルダリング1回だけやったことある
- 見た目が運動神経よさそう
- 人生初ボルダリング
- 高校の体育の成績は3
感想
開始前
🐹 あのヒョイヒョイのぼるやつっしょ?余裕やろw
開始後
🐹 なにこれむり
調子乗ってすみませんでした(そもそも運動神経よくない)
序盤 〜とりあえず頑張ってみる〜
ボルコムさんでは石の隣に貼られているステッカーの色でクライミングのルートがレベル分けされています。
こんなかんじ。
ファーストチャレンジ
zimaくんは予想通りの運動神経、脱脂綿さんはさすがの経験値で赤
hiroさんとucanさんは黄色
jurifulは緑
私は人より脚も腕も短く背も小さいので低レベル帯でも超しんどい
中盤から終盤 〜もっといけんじゃね?〜
最初に案内された傾斜のない壁でしばらくチャレンジしていたのだけど、同じ色(レベル)でも壁によって簡単だったり難しかったりすることを発見し、みんなでいろんな壁にチャレンジ!35〜45度くらいの傾斜で、石を掴んでぶら下がりながら登る方が私は得意でした。
終盤はみんなテンション上がってきてオレンジ難易度にも挑戦!
やっぱ無理だったらしいhiroさん。
今回のメンバーで同じものにチャレンジしてみましたが
全員OUT👍
恐るべしオレンジ難易度。。。
今回の結果
相性の良い壁を見つければ私にもワンチャンありました!
後日談
やっぱ筋肉使ってたんだね
私たち以外にも人が多くてチャレンジの回転が悪くめっちゃボルダリングやったわ🤣って感じではなかったんですが
おととい初めてボルダリングをした影響で今日の俺の腕はこんな感じ。 pic.twitter.com/IMfJa7lg68
— hiro@miraito (@hirodragon112) September 1, 2019
恐るべしボルダリング👀
私はサボっていたので ノーダメージでした。
実はもう第2回ボルダリング部を決行済み
私は欠席だったんですけどね!
結果はこちら😌
第2回のメンバー強すぎん??????
以上、ぺちオブボルダリング部レポートでした🐹🌻
【ぺちオブ】始めよう!要件定義に参加してきた🌻
はじめに
はじめまして。自己紹介はまたこんど。
今日の内容
初投稿は私のエンジニア人生を変えた「ぺちオブ」レポートです。
元々暗黙的にぺちオブ広報(イベント中のTwitterガヤ担当)をしていたんですが、connpassのぺちオブページに名前が載ったこともあり、ちょっと嬉しかったのでちゃんと広報っぽくとりあえずブログ活動していきたいと思います(ちょろい
パシリも大歓迎🎉
参加してきたイベント
今回のイベントはyoutubeでも配信しています👏
【ぺちオブ】始めよう!要件定義 - YouTube
感想
今回はブレスト形式で要件定義の理解を深めていきましょうということなんだけど、とりあえずみんなで自己紹介。
参加者のうち要件定義フェーズを経験したことあるは半分くらいでした。(私は経験ないです) 各々要件定義の何が知りたいかを挙げてアジェンダを作成!
そもそも要件定義のイメージは? 自社サービスで、必要な機能を考えてエンジニアに指示するのは要件定義? コラボレーション先の人とミーティングは要件定義? 情報をどういうふうに連携する?技術的にどうやって実現する?を話すこと? お客さんの要望を実現するためにどの機能が必要なの? 困りごとを探す作業自体が要件定義? 要件定義の前工程、後工程とは? 要件定義の周辺でよく登場するワードって使い分けてる〜?(要件、要求、要請、仕様、RFPとか) 要件定義がうまくいった(失敗した)ってどうやって測定するぅ〜? 成果物は何? RADRAって? お客さんって要件定義の段階でどの辺までイメージできてるの? 要件定義でのしくじり 具体的になにをやるの? コツとか 概算見積もりはどうやってるの? 見積もりミスったときはどうするのかしら 社内向け、社外向けの違い
\いっぱい!/
( ^o^ )
開発者をしていると要件定義に参加する機会もなかなか無いもので、ちょっとの時間で知りたいことが山程でてきました。
もうすごかった。みんなのHackMD更新速度が。
アジェンダを似ている内容ごとに整列させ、さっそく上から順番に始めましょーーー!ってなったんですが、
「そもそも要件定義ってどっからどこまで?🤔」
いや、まあ、たしかに。断言できない。
なんせ要件定義やったことないからね。ウォーターフォールモデル的な図は知ってるけど私は要求と要件の違いも考えたことありませんでした。。。
要件定義の良し悪しの評価のいろいろ。
— おーひら モブプロ本売ってまっせ! (@mohirara) August 29, 2019
・予算内に収まったかどうか(赤字は出てないか?)
・要件の安定性(コロコロ変わったりしていない?)
・要件を期待通り実現できているか
・などなど#phper_oop
あとは機能要件と非機能要件とかっていう単語もよく出てくるらしい。聞いたことはあれど、じゃあ具体例は?って言われると「うーーーーん!むり!」ってなっちゃいました。
機能要件 アプリを使う側がわかる機能
— juriful (@juriful) August 29, 2019
非機能要件 ディスクの容量とかログの保存期間のかCPUがどうやとかセキュリティレベルとか#phper_oop
で、結局要件定義がどっからどこまでなのかがわからないので、割とみんなの頭に「あれ?もしや私がいままで要件定義だと思っていたアレは実は要件定義じゃないのでは??」的なモヤモヤが浮上(していたはず)。
それを明確にするためにも、アジェンダに出ている要件定義の前工程、後工程とは?を考えてみようのターンが始まる!
というわけでシステム開発における全行程を洗い出して、どんな工程でどんな人が関わってどんな成果物ができるのかを話し合うことに🎉
下流工程やリリースみんな経験がある部分なので発言もいっぱいでこれは結構盛り上がる!
...
...
..
...
...
..
めちゃめちゃ盛り上がって気付く
「時間無くね?🤔」
終わった
駆け足で要件定義〜設計の説明もしてもらったものの、やっぱり2時間で深くは掘り下げるのは難しいですね😫
要件定義とは何なのかをちゃんと理解するためにはそれだけたくさんの他の情報やら知識が必要ってことなんだろうなあ…😌新人さんがすぐに要件定義フェーズに参画するケースが少ないのも、それだけ難易度が高いからなんですかね。業務知識も、要件定義以降に何が行われるかの知識も、全部持っていないときっとうまくいかないプロジェクトになってしまうんかなーとか思いました。
内容はちょっと不完全燃焼でしたが、いつも通り終始アットホームな雰囲気で楽しい会でした。
きっと第二弾で本当の要件定義とは何かがわかるはず。
期待大。
とりあえず、今度は前もってアジェンダ作って時間配分しよう。ちゃんと😂
おしらせ
お茶の水女子大学でイベントやります。
Let's OOP😆
connpass.com
おまけ 〜今日のhiro-typo〜
angral ...!!!!!!!!!!!!!!#phper_oop pic.twitter.com/W5UmpGOjI6
— juriful (@juriful) August 29, 2019