Ruby
Rails
devise
OmniAuth
chart.js

文系未経験者が2ヵ月の勉強と2ヵ月の開発でWebサービスを公開するまでの流れ

はじめに

オンラインプログラミングスクールでRailsのコースを2ヵ月受講し、その後一人で試行錯誤し開発を続けて公開までたどり着きました。

初めての開発、一人での開発はやはり知識面でわからないことも多く、またどのレベルまでやれば十分なのかもなかなか自分では判断が難しかったので、同じような悩みを持つ人の参考になればと思い投稿します。

目次

  • 作ったサービス
  • なぜプログラミングを学ぼうと思ったのか
  • サービスの企画
  • どのように勉強をしたのか
  • どのように開発を進めたのか
  • さいごに

作ったサービス

組織内行動診断というサービスを作りました。

24の質問に答えることで、自分がどういう組織を指向し、どのようなコミュニケーションスタイルで、どのように意思決定し、誰を信頼・評価しているのかという8項目を見える化します。
また自分の理想の組織を設定することで、その組織との適合度と改善点を提示します。

https://www.sodone.jp/

これを使うことで、自分が何気なく組織内で行動しているときに「なぜその行動をしたのかを言葉で理解し」、「相手に言葉で共有」することで、お互いが理解し合って仕事に取り組める機会を提供できればと願っています。

なぜプログラミングを学ぼうと思ったのか。

大学生の時からプログラミング自体には憧れがあったものの、始めようとしては挫折することを何回か繰り返し、就職してからはプログラミングを学ぶ機会はなくなってしまいました。

仕事ではコンサルティングファームで日本の製造業の海外展開に携わっていて、主に日本と海外の現地のコミュニケーションを促進したり、お互いの業務を見える化したりして本社と現地法人の経営の統合等を推進していました。

高校生の時から海外に興味があったので、大学では1年間外国で過ごしたり、海外旅行では40ヶ国を訪れたり、さらには外国の方と結婚しました。

そういう日々を10年程過ごして、日本と外国の間に生じる様々な問題に対応してきました。

日本人は仕事が遅い、生産的ではない、会議ばっかりやっている、ルールが多すぎるという外国人の意見があったり。
外国人は仕事がてきとうすぎる、終わってなくてもすぐに帰ってしまう、言ったことを守らないという日本人の意見もあったりしました。

これらの意見はすべて発言者から見ればそうなのかもしれませんが、実際にそういう行動をとる本人たちは無駄なことや嫌がらせをしたくてそうしているのではありません。単純にそういう行動となる背景の価値観や基準が違うだけなのです。

でもそれに気づくことなく人間関係が壊れてしまった後に修復するのは大変です。まぁそれをするのが私の仕事でもあるのですが。

でもこれでは日本人がいつまでたってもグローバルで成果を出せない。
外国人が日本で働いてもすぐやめてしまう。
非常にもったいないなと思いました。

こういう気持ちが、「この問題を解決するにはどうすればいいのだろうか?」という解決策の模索に繋がりました。

過去何回も勉強を挫折した自分に言いたい。
お前はなぜそれを勉強するんだ。プログラミングで何を解決したいんだ。課題に集中しろ。

プログラミングは手段でしかない。
しかし同時に、プログラミングは世界中、もしくは日本中の多くの人に影響を与えられるかもしれない唯一無二の手段でした。

サービスの企画

コンサルティングという自分ひとりの時間を売って仕事をしていた私にはこのビジネスモデルでは社会に何も影響を与えらないことを身に染みて感じていました。

なので、大多数の人に影響を与えられる可能性があるサービスを考え始めました。
そうつまり、Webを使ったサービスです。

具体的に作るサービス選定には紆余曲折あり、診断型サービスにたどり着いたのですが、端的にまとめると以下の感じです。

とにかくまずは一人でできること、そして、一度作ればあまりその後手がかからないことが決め手でした。

No. アイデア インパクト 実現性
1 日本で働く外国人と日本人をマッチングするC2Cプラットフォーム 大 (社会を変える大きなサービスになる可能性はあるが、一人で始めるのには適していない) 小(自分で開発、営業、ユーザ対応できない。幅が広すぎる・・・難しくて断念。)
2 機械翻訳ツール 小(翻訳は言葉だけ、解決すべきは言葉になっていない文化。課題と解決策が一致していない。) 中(Line Bot等での機械翻訳チュートリアルが存在。)
3 グローバル組織診断ツール 中 (診断結果に納得感を持たせられれば人のマインドを変えられる) 大(一人で開発、営業、ユーザ対応できそう。)

特にこの記事は参考になりました。IT業界の方は自分の知見をShareしまくってて本当にいい文化だなと思います。
http://blog.sesere.net/entry/2017/10/30/105325

どのように勉強したのか

さて、タイトルにある通り、私はプログラミング初心者です。

ということでまずはオンラインプログラミングスクールで2ヵ月間RailsとJavascriptを学びました。

この当時はまだサービスのアイデア①を考えていたので、このサービスを作るためにはどのような技術が必要なのか、どういう画面、テーブル設計にすべきなのかという設計を考えながら、プログラミングスクールから与えられる課題を解いていました。

この勉強期間中に非常によかったのは、メンタリングのシステムで自分のさぼりたい欲を絶妙に抑えてくれます。

この2ヵ月で、私はプログラミングスクール側から与えられる課題を早く早くこなしつつ、自分のC2Cプラットフォームの開発を急ぎました。

プログラミングスクール受講中は、一切他の本や教材を読むことなく、とにかくスクールの課題と、そこで得た知識を自分のサービスに当てはめるためにはどうすればいいのかを考えていたのは、力をつけるという意味では非常に良かったと思います。

ただこの2ヵ月で出来上がった作品はあまりにも無残で、役に立たないものだと作った後に気づきました。
プログラミングだけでなく、サービス設計が間違っていたということは非常に学びになると同時に焦りになりました。

どのように開発を進めたのか。

ということで、一度2ヵ月でのプログラミング学習を終えて、再度企画からやり直しました。

サービスの企画欄でも簡単に説明しましたが、一人で小さく始められることをまずは条件に診断ツールを作ることにしました。

必要になりそうなタスクをすべて書き出して、それぞれかかる時間を(やったことがないので)なんとなく書き出して積み上げた時に、10月1日にリリースできそうとなりました。
(実際のリリースは、10月6日になったので1週間遅れました。)

このころにはプログラミングスクールも卒業していたので、以下の手順を、Googleで調べながら進めました。
1. 画面のラフスケッチ
2. 機能の一覧
3. テーブル定義書

プログラミングスクール時代の失敗はラフスケッチがラフすぎて何回も開発を修正する事態があったので、ラフスケッチを描いてもすぐに開発せずに1日寝かせるというのは効果的でした。
そして頭の中で初期画面からログインして操作が完了するところまでスムーズにイメージできたら開発を着手しました。

今回の開発では、Googleで検索しつつ主にQiitaとStack Overflowを参考にし、
あとは、以下2冊の本を辞書として使いました。プログラミングスクール時代のメンターから教えていただいた本ですが、非常にわかりやすいです。

プログラミングにかけた時間は2ヵ月の内、実質は1ヵ月くらいで、あとの1ヵ月は質問の作成等文書やデザインでした。
診断なだけあって、正確性や答えを誘導しない質問に気を配りました。
尚、この診断自体は私がフランスの大学で組織行動学を学んでいたものを参考にしています。

リリースに当たっては、何を完成と位置付けるのかにとても悩みました。
コンサルティングという、会議でのプレゼンテーションを失敗すると仕事がなくなるリスクを抱える仕事をしていた性質上、とても失敗が怖い人間になっていることを自覚しました。
なので、Facebookで友達に向かって今日から10日間連続で投稿するという宣言をしました。
そしてその10日間のどこかの日でこのサービスを発表することにしました。

結果的には5日目で発表をすることができました。

これは非常に良かったと思っています。
普段Facebookで投稿しないやつが投稿し始めたというので注目を集めて、何も大したことを言わなかったらダメな奴だと思われるというプレッシャーと、早くフィードバックをもらうために、前半で発表しないとという焦りが開発スピードを間違いなくあげました。

さいごに

何かを実現できるようになるためには、以下3つの壁を超える必要があります。

  1. 認識の壁(何が問題なのかわからない。)
  2. 理解の壁(問題はわかるけど、どうすればいいかわからない。)
  3. 実践の壁(どうすればいいかわかるけど、できない。)

これはプログラミングも同じですよね。で、人の考えも同じだと思っています。

日本人の考え(心)は素晴らしいのでそのままでいいと思うのですが、
追加でもう一つグローバル、つまり自分と考えや価値観が違う人たちと接するときにどうすればいいのかという新しい考えを持てるようになりたい。

外国人と仕事できない、上手くいかないという問題に対し、何が問題なのかをこのサービスでは可視化することに努めました。
そして今後は、その問題に対し「どうすればいいのか」をサポートし、そして実践の機会まで提供したいと思っています。

この投稿が、他のサービス企画の初心者の方々の参考になれば幸いです。

皆様からのフィードバックもお待ちしております。コメント欄でもTwitterでもどちらでも!

そのフィードバックが日本のグローバル化を一歩進めることになるかもしれません!