増設記憶装置

何でもかんでもすぐ忘れるから、わかったこと書いておく。(多分)

「プログラミング好きなのになんで何も作ったことないの?(要約)」が腹立ったのでとりあえず作った実績を作った日記

今度大好きなMortal Kombat(2021)がNetflix来る来たので,頼む観てくれィ……ってことあるごとに言ってるがっちゃんです.(記事書き始めた時にはまだ来てませんでした(白目))
ゴアシーンも確かにちょっとあるけど,割とゴア来る前振りみたいなのがあるし,四六時中どころかむしろゴアシーンが何シーンかあるって程度だし,なんといっても冒頭の真田広之がかっこいいのでどうか!!!!!!!!(なんであんな動けるんですかあの歳で……意味が分からん…最高……)

久しぶりに見たら下書きがいっぱいでした!!!びっくり!!!
ほんとそういうとこ良くないですね!!!

とはいえ,そこの処理を始めると結局二の舞になりそうなので
とりあえず過去の下書きはさておき,今回の記録?メモ?をさっさと書いて投げてしまおうと思います.

経緯

要約:*タイトル参照

就活中,エンジニア側の方とお話しするある面接で「プログラミング好きって言ってましたけど,課題とか以外のプライベートで作ったサービスとか何かあります?」って言われて,
なんて答えたか正確には覚えてないんですが,四捨五入「ない」な回答をしたんです.
そしたら「なんでプログラミング好きなのに何も作ったことないの?」って言われまして.
「好きだが!!!?!?!?!?!💢💢💢💢💢💢💢💢」という気持ちになり,
じゃあ作ったらあよ!!!!ということで,永遠に後回しにしていた個人開発(?)に手を付けたっていうのが経緯です.

~しょうもない追記~

まあ,何か明確にこれを作ったって言えるものがないと「好き」に疑いをかけられるなら,作ってしまうのが一番手っ取り早い,それはそう
あった方がわかりやすいのもわかる.
そもそも作りたいとは思ってたし,経験は多くてなんぼというところもある,知ってる.
ので,いい機会にはなったと思います.

そもそも多分,自分の解答も悪かったかもしれなくて,
学校での研究に役に立つツール系のコードとかは,研究関連だから該当しないと思って答えなかったんですが,
一応研究で活用するけど別に誰に作れと言われたわけでもなく勝手に自分で作っただけですし,研究の時間というか普通に夜中とか自分の私用の時間に作った物ですし,
ほぼプライベートと言えばプライベートと言えなくもなかったのかもしれなくて,そこら辺ガバ判定でこういうの作りましたって言ってしまえばよかったのしれないとは思います,今思うと.
もっと完全に趣味っぽいゲームだったり,Webサーバー使うようなもっと規模のデカい物だったり,そういうの作ってる人たちいっぱいいるからって,自分のを過小評価しすぎたのかもしれないです.
いや,正しい評価だったかもしれませんが.

まあ最終的には,そこの判定は難しいなぁという感想になってしまうんですが,
それはそうと,僕は絵とか時間かけたい趣味が他にもいっぱいあるし,自炊とかしてて家事とかに持ってかれる時間もあって,
他にも,極端な話,時間ほとんど割けない何らかの事情がある人とかいるだろうし
好きなら作ってるはず,みたいな前提で話すのもどうなんだろう………っていう気持ちはあります…….
関係ない学科ならまだしも,情報系で授業でやる機会もそこそこあって,それで楽しい,好き,って言うのはダメなんだろうか………
仕事にするならそれ程度の愛じゃ足りない,ってなるのはわかる
でもそれはレベルの話であって有無の話ではないわけで,「好きなのになんで作ったことないの?≒作ったことないってほんとに好きなの?」は少し極端すぎやしないかと……思いました……….

需要を少しでも感じたら軽率に作ろうとする,作る労力をいとわない,って程度のニュアンスで好きと言ってましたが,
向こう的には「需要とかさておき何かしら作りたいから役に立とうが立つまいがプログラミングするために作る」ってくらいの度合いのイメージだったっていう相違があったのかもしれません.

まあそもそも「何で作ったことないの?」って文字通りの質問として,こういう理由です,って答えれば良かっただけかもしれないですね.

ブツ自体の動機

要約:Slackのリマインド機能がTwitterにも欲しかった.

Twitterでよく,「メモ ・牛乳買う」ってツイートしたり,アカウントの名前を「牛乳買う,課題提出する」に変えたりする人を見かけるんですが,メモをなくしたことに気づかないタイプの人間なので,自分の場合そんなことしてもほぼ効果がないんですね(見ないので).
そんな感じの人間は,日々,Slackの`/remind`コマンドにすごく救われておりまして(通知が来るので),Twitterにもあればいいのになぁ,似たやつをbotアカウントで再現できるのでは……!?ということで作りてえなと思った次第です.

ずいぶん昔に通信の話のさわりを教えてもらい,更に昔にGAS使って通信するちょっとしたものを作るワークショップに参加したのを思い出し,じゃあGASで作れるじゃ~~~~~~ん,と思って………ました.
まあ他のこと優先して永遠に後回しにしていたわけですが,今回のわかったよ作ったらあ!!っつって作ったって感じです.

できたもの

特定の文面でメンションツイートをすると,指定した時刻「時刻(分数切り捨て)」にDMリプを返してくれるbot
botのアカウント(Twitter)(現在休止中)
仕様(Notion)

  • 時刻
    • 元は指定された時刻のトリガーを作り,指定された時刻にリプするつもりだったんですが,
      なんとトリガーに20個までという制限があることが判明し,没になりました.
    • 毎時起動のトリガーで,各時間に返すべきリプ一覧を読み込んでリプする仕様になりました.
    • 多分,上限5くらいでリプ用トリガーを作れば分指定にも対応できそうとは思う
      • 指定可能時刻に,n分以降,って制限を明確につける
      • リマインド予約は指定時刻込みで,時刻順にテーブルに保存
      • 「直近n分以内∧5つ(トリガー上限)以内」のトリガーを作成
      • 万が一,めちゃめちゃ使ってもらえた日には,トリガーをアホほど作って消してを繰り返すので怒られそうな気がしなくもなくて怖いけど,Googleさんは規模がデカいので多分些細なこととして扱ってもらえそうだし杞憂な気もする
      • まあとりあえず,分数切り捨ての方が簡単に作れそうだったので,それは今度なとなった
  • DM
    • 元々,リマインドはDMで送るつもりでした
      • なんならリマインド予約も,DMからも受け付けるようにしたかった
      • 他人のツイートを使ったリマインドは,リプにしても引用にしてもツイ主の通知欄を荒らすことにはなるから避けたくて,「DMからのみ受け付け」という形にしたかった
    • でもAPIからDM送るには,申請して許可もらわないといけないって言うのがわかったため,また今度なとなりました
    • 多分リプができるならDMに変えるのもすぐ出来ると思ったので

つくったもの

脱線しながら最終的には,GASのトリガーで毎分メンションツイートを取得し,毎時間リマインドツイートを投げる,というアプリケーションを作りました.

  • SpreadSheet
    • テーブルを時単位で7日後分まで保持
  • 毎分
    1. メンションツイートを取得(取得済みのもの以降で指定)
    2. リマインド登録用のツイートか判断
    3. リマインド時刻を取得
    4. 紐づけたSpreadSheetの該当時刻のテーブルに追加
  • 毎時
    1. 該当時刻用のテーブルの内容を取得
    2. テーブルに保存されていた分全部のリプをする
    3. 該当時刻のテーブルを削除
    4. 7日後のテーブルを追加

脱線リスト

  • HTML
    • ほぼ初めましてだったのでボタン作ったりスペース作ったり遊び始めたらキリがなかった
  • js
    • HTML同様
    • あと特にOAuthと仲良くなろうとしすぎて,BufferArrayとか10進数と16進数の変換とか,その時にリトルエンディアンで入れたのにビッグエンディアンで取り出すの!?とか,非同期処理!?!?とか,多分2週間から一か月くらい遊んでた
  • OAuth
    • OAuthがどういうシステムなのかっていうところから始まり,理解にしばらくかけた
    • その上,ライブラリがあるのは知ってたしそれ使った方平和だと思うから実際はそれ使うつもりではあったんですが,
      まあ後でそうするとして,とりあえず署名自力で作ってみたいです!!!!とか言い始め,
      手順の参考にしたサイトはPHPで簡単そうだったんですが,GASはjsだったので,jsでやろうとして知らないことしかなく,見事に一か月くらい遊んでました
    • 結局GASの仕様上,jsからPOSTリクエスト送れなさそうということが判明したところで,良い期間経ってますが???となり,とりあえずブツを作って完成が優先なのではということで,中断しました
    • 一応署名作ってPOSTリクエスト組むまでは何とか,そこまでできて検証してみよう!てところで判明と中断

別に毎日やってたわけではなく,週末やったりたまに平日も数日やったりって程度で,
大体1ヶ月から2ヶ月遊んでたような気がします.
あとはちゃんと今回のやつに必要なことしかしてないと思う.

あとがき

今回は作ったよっていう日記として,この辺でいいかなと見切りをつけました.
近いうち,それぞれこういうことした,こういうことしたら出来た,っていう細かいところも書いた方がいいんだとは思ってますので,そのうちね…….(永遠に書かないフラグ)

というかそもそもここまでの記事,全部人が読むこと考えてない日記しかないので,もっとわからない時に読んで役に立つような知見系の物を書かねば……という気持ちはある,書きたい………. 文章を書くのが下手なのか,時間がかかって終わらなかったりやる気が出なかったり……という感じなのですが,
まあ数こなすのが一番手っ取り早いのかな.