けものみち

まったりと、きのむくままに。

プログラミングは何から始めるのがいいのか

f:id:WhiteFox-Lugh:20201018023749j:plain

急にお外も寒くなってきて、いよいよ秋の到来って感じですね。

さて、今回は、プログラミングは何から取り組むべきか、ということについて書いていきたいと思います。 周りから、プログラミングやりたいけど何から始めればいいのかわからない、触ってはいるけどもうちょっと楽しいことしたいみたいな声を聞くようになったので書こうと思った次第です。

記事の最初がそれっぽい画像から始まって、SEO対策だけは完璧にしている胡散臭いテックブログ感満載ですが...。


どんなルートがあるの

個人的には以下のルートがあると思っています。

  • 競技プログラミングからはじめる
  • ゲームやウェブアプリなどつくりたいものをつくる
  • アルバイトから始める
  • 研究や学校の課題ではじめる
  • 初心者向けハッカソンに出てみる

他にもあるかもしれませんが、これくらいがメジャーかな...?

はじめるといっても、本当に何もわからない状態から始めるものもあれば、ある程度文法や簡単な処理が書ける、というのを前提にしているところまで様々です。


競技プログラミングから始める

個人的にはこれが初心者にとって一番取り組みやすい気がします。

例えば、AtCoder (https://atcoder.jp/) とかは、APG4b (https://atcoder.jp/contests/APG4b) あたりで、プログラミングの初歩から問題が解けた!みたいな達成感が得られやすく、解説も丁寧なので、最初の一歩が踏み出しやすいと思います。

コンテストも週1回程度開かれていますし、最初のうちは特に実力とか気にせず参加してみてもいいと思います。

数学が好きな人には特におすすめです。絶対ハマると思います。

利点

  • はじめの一歩が踏み出しやすい
  • 問題セットが充実していて、解けるたびに達成感を得られやすい
  • C++ あたりでやると、だいたい解説記事などが充実していて、挫折もしにくい
  • 人口が増えてきつつあるので、コミュニティなどに属するとなおモチベが続くかも
  • 強くなればそれだけで結構アルゴリズム系の分野の企業などで活躍できる可能性が
  • パソコンとネット環境があれば基本無料で勉強できる

注意点

  • ある程度の数学力がないとつまずきやすい(高校数学程度は理解している前提の問題が多い)
  • レーティングが伸びなかったり落ちたりすると凹むタイプの人は注意(頻発してます)
  • 問題を解くのがメインなので、それだけで何か作ったりできるようになるわけではない(自由度は高くはない)

ゲームやウェブアプリなどつくりたいものをつくる

ゲームが好きな人や便利なサービスとか作ってみたい!と思う人はこういうのから始める人もいると思います。

ちなみにぼくは、ゲームの拡張機能JavaScriptで実装するところから始めたのでこのタイプの人です。

github.com

ゲームだと例えば Unity とか便利なゲームエンジンがありますし、初心者向けに「玉転がしゲーム」をつくるチュートリアルなんてものも用意されています。

ウェブアプリやモバイルアプリとかなら書籍やウェブの記事をあさってみて簡単なものから作ってみるのが良いと思います。 例えば、Todo 管理アプリをつくるとかから始めてみるといいと思います。

イデア次第では、サイゼリア1000円ガチャみたいな面白いものもできてしまうと思います。

利点

  • 自由度が高い
  • 有用なものを公開してみてもらえたり使ってもらえたり評価してもらえるとめちゃくちゃうれしい
  • モノづくりを実際にして公開している人自体は意外と少ないので、完成させるだけでかなりえらい
  • 幅広く知識を身につけられる(プログラミングそのものだけじゃないところも学べることが多い)

注意点

  • ハードルがやや高い(環境構築から完成までの間に挫折しやすい)
  • わからない用語や概念がでてきがち
  • お金がかかるものも結構ある

アルバイトから始める

アルバイトの研修で少しずつ学び始める人もいるみたいです。

初心者歓迎!みたいな環境があって、ある程度プログラミングの文法とか勉強したけどなにしていいかわからないならそこに飛び込んでみるのもいいかもしれませんが、あまり強くはおすすめしません。

利点

  • お金がもらえる
  • 研修があれば、そこである程度学習ルートが整っている

注意点

  • アルバイト募集がいつも転がっているとは限らない
  • 自由度は高くない(要件を満たすように実装しないといけない)

学校の課題ではじめる

大学生に多いパターンだと思います。 だいたい情報系のところなら1年生向けに何かしらプログラミングの課題を出してくれる科目の一つや二つはあるのではないでしょうか?

利点

  • 課題に取り組めばある程度の力がつく
  • フィードバックが返ってくるならどこがバグっているかとかも指摘してくれる

注意点

  • 学校のレベルに課題の難易度が依存するかもしれない
  • 自由度は高くはない(与えられた条件を満たすように実装するので)
  • 言語が特定のものに指定されているものも多い

初心者向けハッカソンに出てみる

サポーターズとかあたりは毎月オンラインハッカソンとかやっているみたいで、そこでは初心者向けにサポートが充実しているらしいです(自分はそのハッカソンに参加したことはありませんが...)。

自分は、機械学習系のハッカソンに出たことはあります。とりあえず数日~数週間くらいでパッと何か成果出したい!という人におすすめではあります。あとは、短期間でいろいろ詰め込んで大変だけどなんやかんや楽しい!というのがハッカソンのいいところだと思います。

利点

  • 短期間で成果が出る
  • だいたい強い人がいることが多いので、刺激を受けられる
  • チームとかだと、個人の技術の壁を乗り越えられることも多い
  • 開発だけじゃなくてプレゼン力とかもつく
  • まれに賞金付きのハッカソンもあったりする

注意点

  • 参加のハードルがちょっと高いかもしれない(「ほかの人に迷惑かけないかな...」とか精神的にハードルが高いかも)
  • 完全にゼロから学べるわけじゃないので注意(ある程度素養があることが前提)
  • いつでもハッカソンが転がっているわけじゃない

むすび

いかがでしたか?と書くと一気に安っぽくなるのでやめておきます。

プログラミング一つとっても実はいろんなルートで学習できちゃいます。

自分の場合は、ゲームの拡張機能開発でちょっと楽しいなーと思った後、大学の課題でいろいろな概念を学び、 実戦力をつけようと競技プログラミングに飛び込み、数学力のなさで落ち込んでプログラミングに自信がなくなりました。

あとは、バイトに応募して研修を受けていたら研修中にメンターの人との連絡が急に途絶えてどうしたものかと思い、事情をいろいろ調べてみると、なんとその会社自体が吹っ飛んでいたということもあり、と散々でした(わらえない)。

そうしているうちに、つくりたいものがいくつか出てきて勉強して公開したら、自分では拙いものだと思っていてもほかの人から評価されることが増えてきて自信がついたという次第です。

強くなりたいという気持ちとコツコツ毎日積み重ねることが大切ですね。

それでは。風邪をひかないように皆さんお気をつけて₍₍⁽⁽ฅ•ω•ฅ₎₎⁾⁾