プログラミング未経験者が独学オンリーでプログラムを開発してお金を稼げるようになるまでの記録（元清掃業フリーターの場合）

# はじめに

私は2年前、プログラミング言語に初めて触れました。
\<h1>や\<form>などと書き、それがブラウザに表示されたときの感動を今でも覚えています。
**「これがRubyか・・・」**(したり顔）

...当時はHTMLとRubyの違いもわかっていなかったのです。
そんな私ですが、少し前に初めてシステム開発の報酬としてお金をいただくことができました。

いいタイミングだと思って、今までの道のりを皆さんに公開していこうと思います。


## 3行で説明（忙しい人用）

やりたいことが見つからない文系卒の23歳がプログラミングに出会ったよ
色んなことを試して勉強し、崩壊したアルバイト先で業務のシステム化を提案した
そして開発したシステムを納品したらお金をもらえた、やったー！

**※ここまで2年かかってます**

## 想定読者
こんな方にぜひ読んでほしい

- プログラミングを学び始めた初心者
- 人の失敗談や苦労話を嬉々として見れる心の広い方（冗談です）

## 注意点


システムを開発して初めてお金をいただくまでに2年もかかっているのは平均より遅いと思います。
世の中には半年で転職する方法や案件を獲得する方法などが溢れていますから。

なので、ここで共有する内容は

- **こうすれば儲かる！**
- **こう動けば転職が成功する！**

などの情報ではない可能性があります。

むしろどっちかというと失敗例、反面教師的に見てもらえれば...私としては心が楽です。
俺の屍を越えてゆけ的なアレです...


# 歴史（時系列順）

ある程度長くなると思うので時系列で区切っていこうと思います。

## プログラミングへの出会い～半年

私は2017年3月に大学を卒業後、とある企業に就職するのですが無残にも数週間で自主退職します。
今となっては本当に社会人として甘い理由なのですが...想像していたものと全然違っていたのが原因かもしれません。

そこから転職してもう一度正社員から始めるとすると、また同じことを繰り返して迷惑をかけてしまうのではないか？
その思いが消えず就職恐怖症になってしまい、しばらくフリーターとして生活費を稼ぐことになりました。

そこで思ったのが**『専門性を付けて自信をつけたい』**でした。
ある程度自分の仕事に自信ができれば、就職の不安は消えるのかなと。

そこで目を付けたのが**『プログラミング』**でした。
これなら趣味として独学で学習できるし、世間の需要も高いから再就職しやすいだろうという思惑がありました。

一年目はとにかく仕事終わり、がむしゃらに教材を見て写経する毎日でした。
手を出した教材は以下の通りです

1. Progate（プロゲート）
2. Ruby on rails Tutorial
3. schoo（スクー）
4. Ruby関連の書籍

習得が（比較的）容易で、Webアプリケーションが簡単に作れるともっぱらの噂だったrubyに的を絞っていました。
結果的に学習開始から半年ほどで1つのWebサービスを作り出します。


### 初めて開発したWebサービス : cocoico　

![cocoico.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241420/f88dcd61-7e1c-f38e-e0ee-8be2876ef5ee.jpeg)

簡単にこのサイトを紹介すると
登録した飲食店などが大量の在庫を捌きたい時に、**お得情報を画像とともに掲載するサイト**になります。
これは昨今の『予約していた客に無断キャンセルされた』等の理由による廃棄トラブルが多発しているという課題を受けて、自分なりの解決策（プロダクト）でした。

主に、前述したRuby on Rails Tutorialを参考に開発を進めたので
フレームワークはRoR、データベースはPostgreSQL、画像投稿機能はAWS S3
ユーザー登録時はSendGredを使ってメール認証をするという要件になりました。

これを必死で作ったのはいいのですが、自分の目標が**とりあえず作り上げること**だったため一通り実装ができてしまうと細部まで詰める気にならず
宣伝もほぼしなかったため**登録者は0人**でした。。。。。。。。。

## 半年～1年まで（暗黒期）

この期間の大部分、**プログラミングから離れていました**
というのも、RoRで作ったWebサービスが、苦労して作った割に出来が悪く『自分には向いていないんじゃないか？』と考えさせられたからです。
今になってわかる、当時こう思った理由は**『すべてがよくわからないまま開発をしていた』**ことに起因します。

教材に書いてあるような、同じような実装はできるのですが、
**『こういう機能が欲しい』→『それはこう作ったらいい』**
という思考ではなく、
**『教材にこんな機能がある』→『それを自分のサイトに使おう』**
という思考しかできなかったので楽しくなかったというのもあるかもしれません。

### 当時のバイト先

この時期にアルバイトでやっていたのが、民泊（Airbnbなど有名ですよね）運用代行会社の清掃業務でした。
民泊とは所謂、空き家や住居の一部を他者に貸し出して宿泊料をいただくというビジネスですが、それの清掃部分を担当していました。

民泊自体生まれて間もないビジネスだったので、当時は色々と制度もソフトも揃っていない会社が多く、社員の方たちは常に忙しそうにしていたのを覚えています。

アルバイトとしては、現地に着いたらラインで報告、清掃が終わったら写真撮影、許可が出れば現地解散と大変自由な仕事なため、子連れのお母さんが多く働いている印象でした。

##1年～ 職場崩壊（1年半)まで

どうやらエンジニアへの道を諦めていたわけではなかったようで、このころから再度学習を開始しています。

ここからエンジニアとしてやっていく気持ちができたというか、**明らかに成長速度が増しました**。
というのも、あるサービスに出会います。
それが、**N予備校**でした（進〇ゼミ風）

### N予備校のプログラミングコース
めっちゃザックリ説明すると、月額1000円程度でたくさんのことがテキストでも授業形式の動画でも学べるサービスなのですが、
これがすごく私にはあってました。
言語別の学びというより、パソコンとは？インターネットとは？みたいな基礎の基礎から入っていくので理解が早かったです。

他によかった点として

- セキュリティ関連にも言及している
- リファレンスを参照する重要性を説いていて、自走力がつく

があげられます。
授業の後半ではNode.js（Express)で『調整さん』の模倣アプリを作るのですが、その中でソーシャルログイン機能を実装します。
授業ではGiutHub認証でしたが、そのあとすぐ作った自作WebアプリではTwitter認証を実装してみたりしました。


### 2つめの開発アプリ: 人力検索エンジン

![人力検索エンジン.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241420/6d69e581-f9e2-7830-2018-87daed1e64e2.jpeg)

https://tranquil-ocean-47580.herokuapp.com/

こちらがN予備校でのWebアプリコースを修了した後に作ったサービスです。
『検索ワードが思い浮かばない疑問や、検索力の低い人でも疑問が解消できるように、人の力で答えを導きだそう』ってサービスで、
**某知恵袋と検索エンジンを足したイメージ**です。

一応bootstrapを使ってレスポンシブデザインにも対応しているのでポートフォリオとして使えるかな？くらいの気持ちで作り上げました。
今度はN予備校の掲示板で宣伝したので数人の方が作ってくれました、めっちゃ嬉しかったです。

このアプリを作り上げた時にはcocoicoの時のような**『無力感』**はありませんでした。
自分が何をしているのか理解しながら開発ができたからだと思っています。


### バイト先からのSOS

人力検索エンジンを作った後すぐぐらいに、バイト先でとある事件が起こります。
というのも、社員の人たちが**一斉退職した**というのです。
設立間もない会社（二年目とか）なのでそもそも社員数は5人ほどだったんですが、
**エース級に仕事ができる人が退職　→　残り4人中2人も辞める** という状況になり、大変なことになっていました。
求人を出して新しい人を雇っても、育てる暇がないから人の出入りが激しかったです。

このような状況ですから、残った社員の方から必死のSOSを受けました。
*『〇〇君（私の名前）って、プログラミング勉強してるって言ってましたよね？この業務ITで効率的にできませんか？』*

幸か不幸かこの出来事があったおかげで、オフィスにて業務の流れを見つつ効率化を目指すマンへと変貌します。

## 職場崩壊～今

事件があってから会社のオフィスに通勤するようになりました。
中でどういう業務があって、どこを効率化できるか見るためでしたが主に3つの業務を効率化できるように考えました。
以下はその内容と解決策です。

1. オペレーション業務　→　既存ソフトを他社新規ソフトへと移行
2. 経理業務　→　Excelを作り直す　＋　作業を分担できるように解体
3. 勤務シフト作成業務　→　独自アプリ作成


### やったことその①オペレーション業務

宿泊客からの問い合わせに答えたり、トラブルが発生した時の緊急対応などこちらの作業はスピードが命です。
民泊施設が知りたい内容に迅速にアクセスするためのソフトウェア（物件管理システム）はすでにいくつも開発されていて、弊社もそのうちの一つを使用していました。

しかし、**UIが酷かったり**（多分私が作ったほうがまだ綺麗になるレベル）、**業務上最も重要な部分が使いづらかったり**、所々の機能不足感が否めませんでした。
そこで新規システムの選定、移行処理、導入をしました。
365日休みなく営業しているので本当にタイミングが大変でしたが、無事に移行が終わったときは一皮どころか何皮も剥けた気分でした。

この移行を行なったおかげで、今までは2人で対応していた業務が1人でもなんとかこなせるレベルになったのでやった甲斐がありました。

### やったことその②経理業務

こちらは会社が設立された頃からずっと一人の方が担当してきて、**ガラパゴス化**していました。
物件のオーナーさんに毎月請求書と簡単な収支レポートを提出しているのですが、その内容が属人性が高すぎて担当者にしか弄れないし、わからない状況でした。

また、代行している物件数も年々増えており、過労で倒れるんじゃないかレベルで担当者は疲弊していました。
これは怖いことで（下手したら今回の二の舞になる）なんとかしないといけないと思い、使用していたエクセルファイルの改修を行ないました。

これ以上は細かい話になるので省きますが、
結果としては1件2時間かかっていた請求書作成が1時間以内で終わるようになり、ファイルを分割して管理するようにしたので作業分担も可能になりました。

### やったことその③勤務シフト作成業務

本当にここが**一番大変**だったのですが、アルバイト（20人）さんの清掃用シフトを毎日組む必要がありました。
今まではそれぞれ月ごとに出勤できる日を聞いて、それを毎日変動するチェックアウト物件に割り当てる（物件によっては場所が離れすぎて組み合わせられないものも多い）...というパズルのような業務を行なっていました。
足りなくなれば他の業者さんに外注したり、急な予約が入って清掃日が変更になったりするとパズルを組みなおす必要が出たり、**だいたい毎日3,4時間を費やしている**とのこと...

こちら緊急性が高かったので、とにかくまずは手書きの紙で確認していた出勤可能リストを可視化しようと
グーグルフォームに、アルバイトの人たちから出勤可能日を記入してもらい、それを**GAS**を使って自動でグーグルカレンダーに予定として出力されるようにしました。

![グーグルカレンダー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241420/ef23890b-6189-fa45-307e-33880630e4a4.jpeg)

これを使ってもらっている間に、**今まで学習した内容をぶつけようという魂胆もあり**、独自アプリの開発へと着手します。
そのアプリが『清掃依頼アプリ（仮）』です。

### 3つめの開発アプリ: 清掃依頼アプリ（仮）

![清掃依頼アプリ（仮）.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241420/21a2d6ac-897e-26be-117c-e29af6791aca.jpeg)

このアプリは、**清掃案件を自動で取得しそれを清掃員に依頼という形で割り振ることができる**アプリです。
技術的にはnode.jsで開発しており、清掃案件の取得にはgoogle calenderAPIを使ってカレンダーから自動取得しています。

開発期間は2か月ほどでしたが、運用開始してからたくさんのトラブルがあり、その対応時間の方が長かったように思えます。
次回チェックインの計算ロジックや、清掃員さん側のページ（依頼を受けたり拒否したりできる）の作りこみなど、たくさん手間はかかりましたが実用に耐えるものができたのではないかなと思います。

今まで作ったWebサービスは【箱】を用意しただけで作るのをやめてしまった感があり、今回のように**実際のユーザーを想定して作り込む**というのが、本当にいい経験になったと思っています。

そして・・・このアプリを作ったことで、実際に報酬としてお金をいただきました！

# プログラミングを学び始めた人へ

ちょっと思ったより長くなってしまったので、ここらへんで伝えたいことをまとめます(; ･`д･´)


何もできなかったあの日から2年、ずっとは勉強してなかったし、寝てはゲームをしての生活だったこともあります。
そんな私でもこうして誰かの役に立って喜んでもらえる...その時、心の底からプログラミングを学び始めてよかったって思いました。

プログラミングを学ぶ一番の利点は、プログラムが書けるようになることではなくて、問題解決力が上がることだと思っています。
それは何をするにしても活用できるスキルで、絶対にあって後悔しない力だと思います。

ネットには毎日何時間も集中して学習できる人たちがたくさんいて焦ったり、自分には向いていないって思ったりするかもしれないですが
私みたいに自分のペースでゆっくり成長する人もいるので焦らなくても大丈夫です。為せば成る。

つまり...... **N予備校やってみようぜ！**  
 
**- 完 -**