2年ほど前からコツコツ取り組んできたアプリ開発が一段落し、ようやくリリース出来たので、その経験から思った事や考えた事、気づいた事などをまとめたいと思う。この手の記事によくあるプログラミング教室の広告記事では無く(Adsenseのアルゴリズムでプログラミング教室の広告が付く可能性はあるが)、実体験で個人で試行錯誤した学びの記事です。全くのゼロからプログラミングをモノにして、一つのアプリを完成リリースするのにはお金も時間も掛かります。その点、私の場合は失敗も多いので多くの人の参考になると思う。
目次(Contents)
アプリは誰にでも作れる。最後まで諦めなければ。
結論から言うと、アプリは誰にでも作れる。それは、年齢性別関係ないし、独学でも、通いとかも重要ではない。一番大事なのは、諦めない心で、やる気などの気持ちの問題の方が大きいと思う。
私はスマホ向けのアプリを休止期間含めて約2年もかけて作ったのだが、もちろん最初はゼロからのスタートだったので何から手をつけていけば分からない状態。大学での専攻も日本では文系と分類される心理学だし、私の場合高校も行っていないから中学の数学ですら怪しいレベルだった(やってみると分かるのだが、プログラミングは数学的な論理思考は必要だが、プログラミング自体は英語や中国語などの言語学習に近い。)。
当ブログの古くからの読者が居るかどうか分からないが、ブログ最初期に書いた以下の記事がちょうど私がアプリを学び始めた頃に書いた記事だ。
・書評「中学生でもわかるiOSアプリ開発講座」は、大人だけど分からない本でした。
最初は手当たり次第に安くなった中古本を集め、読み漁った。結論として書籍は導入として概念を大まかに掴むのに有益だったが、実践向けではなく効率が悪いということだった。一番最初に全体像や雰囲気を掴むために書籍を読むのはアリだけど、本で全てが学べると思わない方が良い。いざ実践に移すときに自分の作りたい機能が本に載っていなくて困ることになると思う。必要なのは「検索力」だ。
「検索力」が求められる時代。ブレイクスルーのきっかけは学び続ける事とYoutubeやUdemyなどの教育的内容の動画を活用したこと。
アプリを開発すると決めてからは、アプリ開発に関する情報にアンテナを張るようになった。本も中古で安く売られているのを大量に取り寄せて読むことは続けていたが、実践に落とし込むまでは行かなかった。ブレイクスルーのきっかけとなったのはネット上にある有益な教育的コンテンツの活用だった。
今の時代、「検索力」が何よりも大切だと痛感する。結果としては後に個人で先生(メンターという)をつけてアプリを完成させていくことになるのだけど、独学時代に役に立ったのが教育系の動画コンテンツだった。
YoutubeやUdemyなどをフル活用して、さらにその内容を自分で実践してみることで徐々にアプリ開発の全体像やり方が掴めてきたと思う。
アプリに限らず、今は「検索力」さえあればネットで何でも学べる良い時代だと思う。
自分が何を作りたいかが最重要。どの言語を選ぶかもそれで決まる。
実は私はプログラミングスクールにも通ったことがあり、失敗をしている(45万円ぐらい無駄にしたと思う)。ネットによくあるプログラミングで人生を変えよう系の記事とかの影響もあるし、漠然とした先行き不安な世の中でプログラミングの技術を身に付けて安心を得たいという気持ちから、プログラミング教室に入会してしまった過去がある。
でも、プログラミングは
「漠然とプログラミング技術を身に付けたい」
という気持ちではなかなか上手くいかないと思う。それこそよほどの使命感・やり遂げる強い決意があれば別だけど。ネットには多くのプログラミングスクールの広告に溢れているし、社会人で学ぶ人はかなり増えている。最近では義務教育にプログラミング教育が加えられたことから、至る所でプログラミング教育の必要性は宣伝されている。
ただ、実際にそういったプログラミングスクールに通った経験を持つ私が言うと、入学者の殆どは挫折するのが現状だった。一応、私は通っていたプログラミングスクールは卒業まで修了したが、その内容が今に活かせているとは思えないし、大金を払ったのに途中で来なくなる生徒もたくさんいた。
プログラミングは誰でも可能だが、適性は絶対にあると思う。
そして言語選びも重要だ。プログラミングにはiOSのSwift、AndroidのKotlin、人工知能分野に強く、3DCG分野にも活かせるPython、広く様々な用途に使われているJavaやゲームなどで使われる全ての基本となったC言語(およびC+などのその派生言語)など多くの言語があり、どれを選べば良いのか分からないのがこれからプログラミングをやってみたい人に共通の悩みだと思う。
私の場合、スマホのアプリが作りたかったのに、Ruby on Railsのプログラミング教室を選んでしまって、それが失敗の原因だった。私が見つけたプログラミングスクール(ノマドワーカー系のブログで絶賛されていた)はアプリのコースが無く、説明会ではウェブアプリケーションがこれからの時代と言われ、(Ruby on Railsは)多くの企業で使われているからとりあえずやってみようと思ってしまったのが失敗の原因だ。
もちろん全てが無駄だったとは思えないが、私にはRuby on Railsを使って何かサービスを作りたいというビジョンが全く無かった(Webアプリケーションを作りたいという動機が不足していた)ため、不完全燃焼で終わってしまった。私はスマホアプリを作りたかったので、結局スクールに通ったのは遠回りとなった。スマホアプリが作りたいのなら、最初からiOSのSwiftやAndroidのKotlinなどを学べば良かったのだ。
将来的に職能プログラマーになるにせよ、
「自分が何を作りたいか?どのようなサービスを作って世の中に価値を提供したいのか?」
という視点を持つことは最も重要だと思う。それがないと、食いっぱぐれる不安感から、とりあえずスキルを身に付けようと半端な気持ちでプログラミングスクールの門を叩いてしまいがちだ。スクールに大金を振り込む前に、そのスクールで学ぶ言語で何が出来て、自分の作りたいどのサービスが実現出来るのかを良くリサーチする事を強くお勧めする。
スクールよりも個別指導へ。先生との相性問題が最重要。
大金を払ってプログラミングスクールに行ったけれどモノにはできず、結果的に一人でアプリ開発をすることになった私は、個別の先生(メンター)に頼ることにした。結果的にこれがアプリを完成させるきっかけになったのだけど、最初の二人の先生がひどくて、時間もお金も無駄にしてしまった。
私は外部サービスを利用してメンターをみつけたが、アプリを完成させた今思えば最初に依頼した先生の質が低すぎて、どれだけ無知な自分がぼったくられたのかが良く分かる。私は3人目にようやく良い先生と巡り会えてアプリ完成&リリースまでいくことができた。正直、プログラミング上達の最も近道は身近に教えるのが上手く、生徒の分からないに寄り添って丁寧に教えてくれる人がいるかどうかに大きく左右されると思う。
以下にダメだった先生がどんな人だったかを書いておきたい。
まず最初の先生なんだけど、とにかくお金の人だった。最初の頃は1時間5000円だったんだけど、私の学習休止期間を経てから再度依頼したらなんとエンジニアとしての時給が上がったとかで1時間2万円も請求されるようになった。でも、内容の実際の質は低いままで(最初の一時間5000円もべらぼうに高いと思っている)、私の疑問に直ぐに答えようとはせず、私が自分でGoogleで検索して答えを見つけるような感じなので効率がとても悪かった。私としては時間当たりとても高価な値段を払っているのだから、一分一分の価値を高めて貰いたいので、かなり焦って緊張して毎回のセッションを行っていた。時間にも厳しく、一分でもオーバーすると直ぐに打ち切られる始末。最初に依頼した人だからつい長く関係を続けてしまったけれど、実務でプログラミングが出来る人と教えるのが上手な人とはまるで違うな、と痛感した先生だった。
もう一人の先生は大衆向けの講義形式(パッケージ形式)で教えるのが上手かった人だが、個別指導はからきしダメな先生だった。値段も月謝制でとても安かったんだけど、質問への回答が翌日になり、ちゃんとメールも読まない人で非常に効率が悪かった。さらに、メールでプロジェクトファイルをやりとりする形式だったのだが、先生の方で実際にエミュレーターで挙動を確認せずに解決策を憶測で語って私にアドバイスするものだから、日をまたいで返答を得た質問への答えが結局何の解決にならなかった事が何度も頻発。今思えば簡単な一つの問題点を解決するのに2週間、3週間も掛かってしまった。おそらく大量に生徒を囲っているから一人一人のサポートが手薄になっているのだと思う。安かろう、悪かろうを体現したような先生だった。
二人に共通しているのはビジネス色が強すぎるということ。どちらも第三者のプラットフォームを利用して知り合ったのだけど、契約は彼らの個人契約に持ちこむという流れも同じだった。とにかくお金やビジネスの事ばかり考えている人はメンターにしない方が良いのは自信を持って言える。
プログラミングが社会で求められるようになり、教育の需要が増しているが、教師の質が時代に追いついていないことを強く実感した。
そんな中、3人目はメンタ(MENTA)というサービスで出会った人で、最高の先生だった。
https://menta.work/invite/4tY3vHrAeRh20Tdz
(上記招待リンクを通してMENTAに新規ユーザー登録していただくと、私とあなたの双方に1ヶ月間の期間限定500円クーポンが貰えるそうです。)
この部分だけ妙にアフィリエイト記事っぽくなるのを許して欲しい。メンタ最高のサービスだ。メンタというサービスがなかったら私はアプリを出せなかったと言って良い。メンタで良い先生に巡り会えたからアプリを完成、リリース出来たのだ。私がメンタと出会ったのは先に挙げた二人の先生の質がどうにも悪くてアプリ開発が頓挫してしまったとき、最後の希望としてもう一人別の先生に依頼してみようとしたのがきっかけ。この出会いが功を奏し、無事にリリースまでいけたのだから、「自分のサービスを世に出したい」という諦めない不屈の心がプログラミングには必要だと思う。
ちなみにその良い先生の特徴をまとめると、
・とにかく速いレスポンス。
・疑問に懇切丁寧に解決するまで答えてくれる。(もちろん追加料金は無し。)
・先生の方で解決のコードを提示してくれる。(そのコードを紐解く形で自分にとってもコードの知識が学べる)。
特に質問したら直ぐに答えを提示してくれるレスポンスの早さは最高だった。最初の二人の先生は質問しようにも気軽に質問できない感覚で、更に質問への回答も回りくどいものだった(お金払って質問しているこちらとしては、もう十分自分で悩んで苦しんだからさっさと解答の正解コードを見せて欲しい気持ちなのだが)。
最後に出会った先生は安心して何でも聞けるというか。くだらないちょっとした質問にも気軽に答えてくれるし、お金よりも生徒の抱える問題解決を最優先してくれるのが何よりも有り難かった。メンターを依頼する側の私も、この人に聞けば問題解決まで面倒を見て貰えるから安心して対価としての料金も支払えた。(この点最初の先生は質問したらまたお金を請求されるんじゃ無いかと不安で質問できなかった。)
アプリが無事完成してリリースできたことの感動と得たもの
私はある種の使命感に駆られて、時間もお金も沢山投資して、2年がかりでアプリを完成させたが、やはりストアに自分のアプリが並ぶと感慨深いモノを感じる。個人でアプリを出せたことはビジネスで言う名刺代わりにもなるし、全くのゼロから学んでコツコツと積み重ねたことの結果が目に見える形で残ったのは素直に嬉しいと思う。こんな自分でもやれば出来るのだ、という証明にもなっている。今回完成したアプリが投資した以上に稼げるかどうかよりも、ちゃんとやり遂げた自信というお金で買えない財産を得たのが大きい。
年齢バイアス(エイジズム)を捨てるべし。やるか、やらないかだけ。
プログラミング学習の流れで、日本における年齢差別(エイジズム)についても書いておきたい。
世界各地でLGBTとか肌の色での反差別運動など色々言われているが、こと日本において最も深刻なのが年齢差別だと思う。これって日本で生まれ育ち、教育を受けた人なら全員がある程度持ってしまうバイアスで、メディアや新聞などは名前の後に必ず()に年齢を表記するのが強迫観念のようになってしまっている(実際テレビの取材を受けると必ず最初に年齢を聞かれる)。
しかもIT業界には35歳定年説という、今考えると笑ってしまうような概念があったという。どれだけその考えが年功序列の古くさい日本社会の悪しき文化を反映しているのかあきれてしまう。
何かを始めるのに年齢は一切関係ないし、ある年齢超えたらもう無理って事は一切無いからご安心を。私がアメリカの大学に留学していた時、おそらく50~60代の女性(具体的な年齢は聞いていないが孫が居ると言っていた)とアートのクラスで一緒だったことがあった。彼女の専攻はプログラミングであり、学歴社会が強いアメリカにおいて、彼女の年で大学に入り何かを学ぶ上で、「プログラミング」を専攻することは新たな職に繋がる実用性があるからだとのこと。結果として彼女は卒業後、プログラミング講師の職を得たという話を聞いた。
アメリカは日本みたいに「年齢」によって希望が潰える事は無い。アメリカでは年齢差別が無い(法律で写真や年齢を聞くことは禁止されている)代わりに、学歴差別が厳しく、大学で何を専攻したか?が重要となるから、社会人になっても何度でも学び直すために大学に行く人が多い。
ちなみに就職などで外国は年齢差別は一切無いのか、というとそんな事は無く、あるにはある。例えばアメリカ人は面と向かって年齢は聞かないが、誰もがなるべく若いうちに成功したいと思っている。そしてシリコンバレーも20代、30代が中心であり、そのことが問題となって提訴されたニュースがあった。でも、それはごく限られた企業だし、実際年齢によって雇用を差別されたことで訴訟まで行われる国民性だ。
もし何か自分の中に実現したいサービスがあってプログラミングを学びたいのに、年齢を理由に諦めてしまうのは、人生100年時代を迎えた今の時代に考えると愚かすぎる。何より勿体ないと思う。
日本はある程度年齢がいったから何かに挑戦するにも「もう諦めた方が良い」とかいう人間が多すぎるし、日本に生まれ育つ限り、無意識に自分でもそう感じてしまう。年齢という誰もが平等に積み重ねる自然現象を前向きに捉える事が出来ず、希望が無い国はいくら経済的に豊かであろうが、貧しい国だと思う。
社会に出ると実際にこういう人間が多いのが日本の病だと思う(実際に30歳前後で自分はおじさん、おばさんと卑下する奴らの多い事・・・。)。
支えになった心理学知識
最後に、アプリ開発で挫折しそうになったとき、活きた心理学の知見を紹介したいと思う。
1.マインドセット
・【書評と要約】「やれば出来る」の研究「マインドセット MINDSET」キャロル・S・ドゥエック(著) 自分の変化と可能性を信じる力とは
諦めない心、挑戦する心を思い出させてくれたマインドセット。アプリを学んでいるとき、この考えが軸にあった。人間はいくつになっても、どんな時でも成長出来るのだ。どんな経験も自分の成長に繋がることが分かるから、積極的に挑戦し、行動出来る。
2.サイコパスに学ぶメンタル面でのタフさ
・動じない人の正体「サイコパス秘められた能力」 ケヴィン・ダットン(著) まとめ 要約 レビュー
自分のサービスをリリースした後低評価レビューなどで傷つくのが怖いという人はサイコパスから彼らの持つ不動の心理を学んでも良い。
アプリ開発は出来ない事、失敗の連続。更に不具合対応などで夜更かしやデスクワークで運動不足になりがち。生活の基本として良質な睡眠と運動習慣を意識するのも大事だと思う。
■オマケ どんな人がエンジニアに多いのか?
ちなみに私が会った職業エンジニアは以下のような性格特徴を持つ人が多かった。
・新しいもの好き
→最新技術を自発的に学び、試して見るのが好き。
・怠ける事、最適化が好き
→無駄を嫌い、できるだけ自分が楽になれること、生活の無駄を極限まで最適化する事に関心がある。