お前誰だ？ VBAでこんなことしたよ、GASであんなことしたよの巻

皆さん恒例の時間がやってきましたね！そう自己紹介！
恒例かどうかは知らないです。
世の中こんなクズもいるんだなぁって感じで読んでいただければ幸いです。
ちなみにクズすぎて本気で焦っています。
長くなる予感がするのでパートを分けてお送りします。

あ！Twitterアカウント載せているのでフォローしてくれると嬉しいです！(フォロバします！)
Twitterでも色々教えていただけると幸いです。
[僕のTwitter](https://twitter.com/YouProgramer)

マークダウン記法には慣れていないのでできるだけ使いながら自分語りを始めていきますね。

# 何やっている人なの？
現在無職です。学生でもなんでもありません。24歳住所有無職です。
前の職場でいじめのようなものがあり、うつ病を患って現在は失業保険で暮らしています。
その職場では仕事(プログラムを組むこと)は楽しくて好きだったのですが、考え方の違いや職場に行くのが面倒で…(社会不適合者もしくは予備軍？)
前の職場でプログラムを組んでいたという点についてですが、本来は会社がバックオフィスの業務委託を請け負い、事務処理人間ロボット管理者としてそこに配属されたものの結果プログラムを組んでいました。
退職時の立ち位置としては、システム部門ということで他部署のシステムを組んだり、自分の部署と他部署を絡めたシステムを組んだり〜といった感じです。
仕事は3ヶ月続けば良かった方ですが、事務やっていた頃は２年弱続きました！！！！すごい！！！！（ちゃんと職場行っている方はまじで尊敬しています。）
続けられた理由としては、**プログラムと出会ってプログラミングが楽しかったこと、好きにプログラムを組めたこと、プログラムでシステム化（自動化、効率化）したことでクライアントからの僕への評価が爆上がりして成功体験が得られたこと、自動化や効率化の効果が目に見えてわかったこと**などが主な理由かなと。
この職場ではバッチファイルを組んでたりしたので、最終的には**ボタンを3回押して10分待てば仕事終わり**という給料泥棒みたいな働き方？をしていました。

今はフルリモートでプログラムが組める職場を探しています。なかったら自分で営業して仕事(いわゆるフリーランスですね)する覚悟はある。
多分うつ病の兆候や症状的なものは元々あったのですが、実際に診断されてしまったときには現実突きつけられたなぁって感じですね。
高校時代には生徒会長や留学、地元の結構大きな新聞で作文の掲載経験があります。2000円分の図書カードもらったよ！
(ここまではそこそこマシな部類に入るはず)
高卒→運送会社→環境についていけず退職→アルバイトを転々としたり色々な被害者になったり→事務の受託(契約社員)→今って感じです。

最近の趣味はプログラム、Qiita・[Quora](https://jp.quora.com/)を読み漁ること、[Twitter](https://twitter.com/YouProgramer)、音楽です。
性格は**面倒くさがりで器用貧乏**。
好きな音楽は**DEAD END**、**L’Arc〜en〜Ciel**、**吉川晃司**などです。
この齢でこの音楽！？と思った方、是非音楽談義しましょう。
カラオケ行ったり曲作ったりしてます(ボーカル、ギター、ベースが主で、トロンボーン、DJをやっていた時期があります)。
Qiitaっていいですね、自分の知らないことがたくさんあって面白いです。
触ったことのある言語はVBA、GAS、Python、VB.Net(UIPathというRPAで使用)、Java、C++、C#、HTML/CSSとかなんか色々触ってます。
言語の特徴などはよくわかっていませんが、言語にわかオタクみたいなものです。知らんけど。
今まで言語に対しては広く浅くって感じだったのですが、今は広く深くチャレンジしていこうと思っています。
フレームワークって何ですか、使いやすくなるのは知ってるよって感じです。勉強中？です。

てなわけで次いきましょ
# プログラム
## エピソード0プログラムとの出会い〜Excel VBA〜
きっかけはExcelで、生まれて初めてExcelを触ったのが2020年4月頃。
スタートアップの案件に携わっていたため、色々準備をせねばならんと。
前段階のお話としては2020年2月に入社し、その時点でコールセンターでテクニカルサポートをしていたのですが、**喉つらい、声出なくなるのでPC作業に集中できる環境で仕事がしたい、PCだったら得意**と言って、お電話歴17日で異動、管理ポジションに…
ということで話を戻します。
準備せねばならんとなったときに、顧客管理表的なもの必要じゃないです？と当時の上司に提案したところ「じゃあ作って」と(触ったこともないのに作らせるのかよ)。
### Excel
なんやかんやでExcelを独学し、とりあえず２週間ほどで顧客管理表Ver1が完成。
関数組んでいたので消されないか心配でした。(当時は僕と僕の2倍年上の先輩で回していました。)
完成直後に僕の性格が発動し、「面倒臭い、もっと楽に日々のタスクをこなせないか」ということで、Google先生にお伺い。
## エピソード1 VBA
**ここでエピソード1 VBA〜が始まります。**
これが2020年6月頃かな？
そもそも周りにExcelに精通した方すらいなかったので、自分で調べて解決する日々…
そこで見つけたVBAはさらに難易度が高いと…
そこで自分に問いかけました。「今時間かけて後々楽するのと、毎日コツコツ残業して時間をかけるのとどちらがいいか」
問いかけた結果どっちも嫌でした笑
でも閑散期だったので、業務の空き時間でVBAについて調べたり、実際に書いてみたり…
自分の入力したセルの内容が全て消えた時は感動しましたね〜
これは魔法だ！と
### 顧客管理表自動化
そんなこんなであんな機能やこんな機能必要だよね〜レイアウトはこうするか〜を経て、6月末ごろには顧客管理表Ver2なるものが完成。
機能的には
・その日のファイルを自動で取り込んで顧客管理表の各項目に1行ずつ追加
・自動で日付を計算してタスク管理させる
くらいの内容だったかな？
完成直後には既にVer2.1の構想を練っていました。
Ver2.1完成直後にはVer2.2といった感じで、アップデートを重ねてます。
とにかく自分の書いたプログラムで思ったように動いてくれるのが楽しかった。
当時に関しては、本業？である事務処理に関してもVBAである程度の自動化をしていました。
**文字列の不一致や内容の不備、そもそもだめじゃんって内容があれば速攻不可判断**、**数字と漢数字をすべて数字に統一して文字列の照合をかけ、それでも表記揺れがあれば要確認のポップアップや該当セルの背景色を変更**などを実装して、整合性等の調査含め手作業で2時間ほどかかるものを30分未満で完了させられるように。
人間が考えて判断すべきところを残して、速攻アウトになるような内容であれば自動で可否判断をかけるという感じですかね。
業務内容的にも人間の判断が重要な部分があったのでこのような方針で開発していました。
(まぁ全自動化した内容もあるけど)
VBAで作ったものはそこそこあります。

## エピソード2 GAS(Google Apps Script)
クライアント社内ではコミュニケーションツールやメールのやり取り含め、Googleのサービスを利用していました。
個人のアドレス、社外向けのやり取りで使用するアドレスなどでやりとりし、他部署が絡む内容などはスプレッドシートを使用、Gsuite？を利用していたのもあり、Googleのクラウドサービス経由(GCP：Google Cloud Platform)？でポータルサイトなども運用されていました。
Googleとは関係のないオンラインストレージサービスを使用して、取引先とファイルの送受信(毎日の処理案件)が行われるのですが、これがまぁ面倒なんですね。
というのも、通知が社外メールアドレスに来て、その通知を確認次第ストレージサイトにログインして見に行くと。
そして、通知内容は似たようなファイル名ばかりなんですね。(処理が必要なものと不要なものの混在。)
ここで面倒くさいが発動。
VBAを調べている時にGASの存在も知ったので、これで工数を減らせないかと考えたわけです。
**スプレッドシートにメールの内容を転記して、条件分岐で不要なものを削除すれば、オンラインストレージを開くか開かないかの判断できるよな**と考えました。
### GASの独学
まぁ独学というよりも、GASでのプログラミングといった方がしっくりくるかな？
これが2020年7月くらいですかね？
いつものごとくGoogle先生にお伺いしながらプログラムを組みました。
当然なのですが、「えー！なんかエディターの構造も違うし書き方もよくわからない！」という状態からのスタートです。
後から知ったのですが、GASってJavaScriptがベースなんですね。
スプレッドシートのセルの値の操作や、メール内容の取得、条件分岐の構文など、ありとあらゆるものが不慣れな状態。
正直なところ今でも苦手かも笑
とりあえず不慣れな状態で、**ボタンを押して、スプレッドシートに特定のメール内容を転記させ、不要な通知内容をスプレッドシートから削除→スプレッドシートで確認**って感じのものが出来上がりました。
で、思ったのが「トリガーって何？自動でやってくれるの？てかスプレッドシート見るのも面倒臭い」でした。(出ました面倒くさがり)
GASって、スクリプトの内容をトリガーという機能？を使えば自動で行なってくれることが判明したんですね。
ということで、**平日の決まった時間をトリガーとして上記内容のプログラムを動かし、転記されたスプレッドシートの中に処理が必要なものがあればメールで通知を飛ばす**みたいなプログラムを作りました。
以前は「**メールに届いた通知を確認してストレージを開いて処理の可否を判断する**」という手間のかかる作業だったのが、プログラムを組んでからは「**メールを確認するだけでストレージを開く必要があるかどうか**」を判断できるので。
これが後々の業務にも影響を与えて**他部署に通知しなければならない内容も拾って、自動で他部署へのメールを作成する**(誤送信防止のため送信は手動)なんていう機能も作っちゃいました。
結論めっちゃ楽になりましたね。
大したプログラムではないんですけども。
当然ここまで(Excelに関係ないGASという言語)来ると存在すら知らない人は出てくるので完全に孤独です。

# ひとまず終わり！
というわけで今回はここまで。
やっぱり長くなりそうなので、冒頭でもお伝えしたように分けて自己紹介していきます。
成果物に関してはコンプラが厳しいので、色々伏せながら別の記事でポートフォリオとして載せますね（気が向いたら）。