おはようございますカレイドです。
おはようございますで書いているのは久しぶりかもしれません。
それはこれまで割と朝活の時間はすべてプログラミングに使っていたからですね。
アプリは一段落したのでこれからは朝に記事を書く頻度も増えていくかもしれません。
前回のマネハビの概要を読んでくれた方はありがとうございました。
今回わざわざ記事を分けて書いたのは、単純にその記事で伝えたいことが全然違うなって思ったからですね。
マネハビで苦労したことや紹介をしているのにそこに初学者へのアドバイスを書いても頭に入ってこないと思ったので完全別枠で移してしまいました。
今回はマネハビの紹介ではなくて僕が14日間のマネハビ制作を通して初学者に伝えたいことや、今、挫折しかけているひとたちに伝えたいことをまとめてみました。
次の記事で2月から勉強を始めて実際にマネハビを作るまでにした勉強と必要な知識について書いていこうと思います。本当の初学者の方はその記事のほうが有益になるかもしれません。
では早速行きましょう。
出来合いの物でずっと演習をしていても次のステップへは到達できない。
これはぜひとも覚えておいてほしいことで、一番伝えたいことです。
なぜ次のステップへ到達できないかというと結局自分で最後までやり通すっていうのは自分で何かを作り始めてゴールしないと絶対になしえないことだからですね。
自分の作りたい機能の複雑な部分は初めてのWebアプリなら絶対に調べることになるのでその都度学んでいくのが一番効率がいいと思います。
僕がUdemyベースの勉強だったこともあるんだと思いますが、
割とどの教材も初学者から中級者向けって感じだったので学べることはちょっとずつ違いはあれど大体同じでした。
そして講座なので途中で終わってあとは、はい自分でやってねってものはないです。
動画に限らず、オンラインスクールだったとしてもそうです。
私が考える次のステップとは壁に当たったときにどのように解決して乗り越えるか、場合によっては妥協案を考えることもできるようになるってことです。
おそらく実際の業務をするにあたっても顧客のいうものをすべて頼まれていれるかと言われたらそうではないと思います。
インターンで学んだことですが、実際に出来ることとできないことは限られています。
その中でいかに妥協するかも一つのポイントになるかと思います。特に自作アプリの場合何度も壁にぶつかると思いますが、それを一人で解決して乗り越えていくって割と企業で働くより大変なことだと思います。
チームで動いている場合にはある程度相談が出来ますが一人でやってる場合は本当に孤独です。
こういう意味で本当に作りたいアプリがあってある程度複雑なときはスクールへ行って完全なメンターさんを一人つけるのは自分の中では結構賢い選択なんじゃないかなって思います。
逆に基礎を学びにスクールっていうのは高すぎてわりに合わないと個人的には考えています。
独学でどうしても解決できない問題は迷わず質問をしてみる。
割とユニークな機能や難しいロジックは調べてすぐ出てこないことがやはり多いです。
そこで必要になる力は説明力です。
皆さんは自分が今悩んでいるものが、具体的になぜできないのか、どこが難しいのかきちんと正確に伝えられるでしょうか。
Twitter眺めてても多くの人が口をそろえて言っていることが、きちんとどこがわからないか理解した上質問をしてこい!
これはまさにその通りだと思います。
今自分が抱えている問題が解けない理由は
- 今、自分がどこで悩んでいるのかすらわかっていない(問題把握が出来ていない)
- 自分が何をやりたいのかきちんと理解していない
- 単純に機能が複雑で大きく考えすぎている。
- やりたいこともわからない部分もわかっていて単純にどうやって実装したらいいかわからない
このぐらいに分かれると思います。
エンジニアになるならばパターン1は絶対に避けたいですよね。
たぶんググるのも一苦労するレベルなので割と大変だと思います。仮にエンジニアに慣れたとしても煙たがられるような気がします。
パターン1を脱出するにはもう、とにかく考える癖をつけるしかないです。問題と向き合って何がわからないのかをまず理解するところから始めましょう。
パターン2は多分何となく機能としてあるけれどまだはっきりとした要件が決まっていない場合。
これはインターンの時に学んだことですが実際の現場ではまず設計書というものを書いてから実装が始まります。つまり、このふわっとした要件は本来であれば
実装前に固めておく必要があることなので、こういう場合は一度手を止めてどういう機能なのかしっかりと深堀してまとめておきましょう。
パターン3では単純に機能が複雑すぎて頭がパンクしているパターンです。いうなればイヤホンのコード絡まってる状態ですね。
いじればいじるほど複雑に絡み合ってほどけなくなって最後にはああああああああああああってなってイヤホン壊れます。
こういう時もまずはいったん落ち着いて深呼吸をしてゆっくりひもをほどいていきましょう。
小さく小さく分割してconsole.log()をたくさん使って最初は変数に置きながらほしい状態に一歩一歩近づけていきましょう。
リファクタリングは最後にすればいいのです。まずは泥臭くても確実にひも解いて実装しましょう。
パターン4ではおとなしく誰かに質問するのが一番手っ取り早いですね。こういう機能でここまではわかるけどどういう処理をしたらいいかわからないとかで
投稿をして質問をすればokだと思います。一番いいのは頼れる人に質問しちゃうのがいいですね。質問をきちんとできるのも一つの力になってきます。
これは研究でよく学んだのですが、質問するときはする。きちんと聞くことが重要です。辺に中途半端に理解をして進めて後で問題になるぐらいならきちんと自信をもって実装するのがいいです。
一つの機能に固執しすぎると大変
割と一つの機能を拡張しすぎるのは最初のアプリでは複雑になりがちなので私はオススメしません。もちろんユーザーの使い勝手を考えているのはいいのですが、
一つの機能を作るよりも単一の機能を複数作ってあげた方がこういうこともできるっていうのをアピールできるのでお勧めです。
結局は新しい機能のFirst Stepは大体簡単なCRUD機能になると思うので躓く可能性が少なくなります。
例えば私のマネハビなら
ログイン機能
習慣の登録
お気に入りの登録
データ表示
まだ実装していないですがプロフィールの登録
これらって全部異なる機能ですが少し勉強するとどれもやることはCRUD機能の実装だなって見抜けるようになります。
たぶんプロフの登録とかはやっていることは習慣の登録と全く同じはずです。(というより同じように実装します)
こんな感じで初めてのアプリはひとつの機能を掘り下げるのではなく、複数の簡単な機能を実装することで見栄えをよくしてあげましょう。
言い返せばNavbar充実させると見栄えよくなるよってことですね笑
僕のver1なんて実装してないのにプロフページありますからね笑
アイディアの湧きだしに必要なこと
だいぶ勉強が進んできた人はWebアプリを作りたいけれどなかなかアイディアが浮かばないって人も多いんじゃないかなって思います。
私もプログラミングを学び始めた時は具体的にこれだ!ていうアプリはなかったですがとりあえず学び始めた感じですね。
ただ、体感としてぜひこういう視点を持っておくと見つけやすいよってことがあったので皆さんに共有をしておきます。
それは自分の生活の周辺を注意深く見ていくことです。
例えば日常生活の中で面倒だなーとおもっていることや、Twitter界隈でこれみんなやってるところ簡略化できないかなーとか、
とにかく数打って頭で思考して当たりそうだなって思うものを見つけるしかないんじゃないかなと思います。
僕の友達はめちゃくちゃ古着好きだけどメルカリだと効率が悪いからもっと調べやすくしたもの作ろうとかって言っていました。
自分の趣味とかに着目してみると見つけやすいかもしれないですね。
ただ安心してほしいことがあって、
これは僕がインターンの経験から学んだことですが、基本的に最初はまず企業が抱えている問題を提示してくる。それをITを用いて解決するっていうステップを踏んで場数をこなしていきます。
そしてある程度何年か経った段階で、これってこのITの力使ったら解決できそうな問題だということを世に提言していく人材になっていくそうです。
世に提言する部分になれるのは極わずかだそうです。
たぶんWebアプリもそれに等しいぐらい最初のアイディアって難しいと思っているので現段階でまだ思いつかない人は最初は出来合いのアプリをまねして作りながらこういうものが作れるんだーっていう実感を
掴むことが最初のステップになると思います。
いうなれば0→1のアイディアを生み出すわけですから一つのビジネスになってしまうわけです。最近では個人が作ったサービスを手軽に取引できるものがあるぐらいです。
アイディア作り出す力+それをサービスとして作り出す技術力を兼ね備えていたら無敵だと思います。
まだ見つかっていない人はぜひこの考えを持つといろいろなことに応用が効くのでおすすめです!
まとめ
今回は自分がWebアプリを作り始める前にもっと早く知っておけば絶対によかったなぁと思うことについてまとめてみました。
特に練習ばっかりじゃなくてバッターボックスにすぐに移行するのは本当に大事な部分です。ササっと作り上げてシェアするだけですごい応援してくれるなってわかるので頑張りましょう。
DMやお問い合わせフォームで質問あったら是非してください。