generalistからspecialistへ

一点集中化計画

slackアプリ開発履歴

卒業制作にslackアプリをリリースした。

チャンネルに参加してから○日経った人に対してメッセージを送るアプリだ。

その開発の履歴をここに残しておく。


アプリを作ると決める ~ アプリ完成、まで約4ヶ月掛かっている。

内訳は

  • アプリのideaを考える + どのアプリにするか決定する = 1ヶ月
  • 制作期間 = 3ヶ月

制作期間の詳細としては、最初の1ヶ月で全体の8割、次の1ヶ月で1割、最後の1ヶ月で1割進んだイメージ。最初の1ヶ月でアプリが形になって来て、そこからの微調整から本番、というような感じだった。

まず、どんなアプリを作るか考えた所から書く。

アプリidea

最初は、fjordが提供している「卒業制作の為のアプリidea」というリストがあって、それをやろうと思っていた。 (まず自分で考えたが、いいのが思いつかなかったので)

だが、そのアプリを作るにあたって色々調べた結果、すでに市場にそれと似ているアプリが存在すると分かったので、中止にした。詳細

なので、やはり自分で考える事にした。とりあえず思いついたideaはどんどんメモして、結果的に100ほど考えた。考えたideaはここにまとめた

その後自分でOK、NGを選別、結果的に3つに絞った。

その3つをメンターの方に提出、その内の1つが通り、作ることにしたのが今回リリースしたslack de step。

余談だが、考えたアプリideaのボツにした8割は「すでに市場にアプリが存在する」

残り2割が「(今の自分では)技術的に不可能」

だった。

期間 + プラニング

事前にどれだけ時間を掛けるか決めておく。これを決めるのは開発にメリハリを持たせる為。

アプリ制作というのは、どこまででも時間掛けられる(気がする)

ある程度機能を考え、期限に間に合いそうになければ機能を削り、最低条件で提出する方式でやる事にする。

すべての機能を備え、3ヶ月以内に終わる事はまず無い(という予想)

開発中、色んな欲が出てくると思う。UI上げる為にここはjsを使おう。drag and dropで画像アップしたい。AWSアカウント持ってない人の為に、指定が無い場合はactive storageが動くようにしよう。 モリモリ入れたいけど、期限は守りたい。

多分apiを使うアプリだと、新しい事実が分かって仕様が変わると思うので、それを考慮して期間をとる必要があると思う。

開発の進め方

このアプリのコアは「slackのapiを使う」という点なので、slack apiのドキュメントを読めば大体の開発の全貌が見える...はずなのだが、ドキュメントの内容が膨大で、読み切れなかった。

なのである程度読んで理解したら、実際開発を進めて、新しい事が分かったらまたドキュメント調べて修正して、、を繰り返した。

結果的に開発中、DB構成を20回以上変更している。最初からブレは無くしたいが、ここは慣れだと思う

特に時間が掛かった点

別ページにまとめた。数日費やしたものをピックアップ

削った機能

以下の機能は、期限の兼ね合いで一旦寝かせた。最低限の機能でリリースし、「slackで相対的に、自動的にメッセージを送る」というideaに反応があれば(userがいれば)バージョンアップする

  • 画像の保存先を2つ用意する。defaultはAWSだが、AWSアカウントがなければactive storageに保存できるようにする
  • メッセージにemojiを使えるようにする
  • 総送信数 / 総既読数をリセットする
  • アプリ上でのチャンネルの表示 / 非表示を切り替える
  • userがアプリからログアウトせずにワークスペースを切り替えられる

事前に決めておけば良かった事

userが利用する環境を明確にしておけば良かった。

漠然とchromeで、PCで、macで、と決めて開発していたが、最終工程で、「やっぱりwindowsでもテスト動いた方がいい」と思って(気持ちがブレた)、動かしたらエラー出て、それを「直そう」とした。(1日掛かった)。

環境は「明記」しておけば良かった。

感想

結局、色々と改善点は残ったけど、これは開発をしなければ分からなかった事なのであまり後悔してない、というのが正直な感想。

経験をたくさんすれば技術は上がるので、どんどん開発したい。

ただ...意識しながらの開発とそうでない開発は、全く経験値が違うだろうな、とは思う。

卒業に関して

フィヨルドを約1年で卒業。当初の予定とほぼ同じ。とにかく「焦らない」事を心がけた。

多くのスクールにあるような、数ヶ月で詰め込んで企業に入り込む事はしたくないと思っていた。

プログラマという職業はまさに「急がば回れ」だと思う。理解するまで食らいつけるか。「効率がいい学習方法」を模索していないか。トータルで考える事ができるかどうか。今時間を掛けて基礎を習得する事が、今後5年10年にどれほど影響があるかを理解できるか。

周囲にはいろんな立場の人がいると思う。特に転職エージェント系の担当者とはよく話をするだろう。

自分も結構相談した。そして毎回、希望とずれた案件を紹介された。

phpjava、、、営業の仕事してみませんか? フロントされてましたよね? rubyを数ヶ月触っていた? 経験者という事にしましょう。

ハローワークでもほぼ同じ事を言われる。

歳を考えてください!30代は未経験では無理です。現実を見てください。それよりcobolはどうでしょう。平均年齢が高いのでまだ可能性があるかも知れません。

今回転職は2回目なので、大体の温度感は分かっているつもり。

彼らは就職させるのが仕事である(もちろん仕事を紹介してくれる事には感謝している)

通りやすい方法を紹介するのは当然。

必然的にこちらの「希望」は二の次になる。

対してこちらは「希望」が第一になる。(ruby、大阪、未経験)

その第一希望でやるだけやって、ダメだったら妥協していくという方針になる。

確かに以前の仕事ではフロントを5年ほどやっていたし、rubyphpで開発を数ヶ月程度やったし、社内SE的な仕事もしていた。

しかし自分はこれを経験者とは思わない。

(フロント=バックエンドとあまり関係なし)

rubyphp数ヶ月=未経験)

(社内SE=広く薄く=バックエンドとあまり関係なし)

これを経験者とアピールして仕事に就いても、会社と社員どちらも不幸になるだけだ。

転職業界の通説として、「1つ内定を取る為に23社受ける」というのがある(おそらく30代の話)。上記のような対応をするエージェントに任せたとして、23社受けて経験者としてどこかに就職する、というのは可能な気がする。さすが転職のプロと言った所か。しかし自分はそうしたくない。

あと、これは友人に聞いた話だが、rubyphpをできます!とアピールしてくる人ほど、実際できない人が多いそうだ。原因は知らない。web系に多いという。

自分はそうならないように「準備」をしっかりやりたかった。

これから転職活動をする。

結果はまたここで報告したい。