見出し画像

N予備校のプログラミングコースについて、4年間講師として携わってきて     著:折原ダビデ竜

こちらの記事は N予備校アドベントカレンダー の1日目の記事です。

みなさんこんにちは、N予備校プログラミング講師の折原ダビデ竜です。
私はN予備校の立ち上げ期からプログラミング教材の制作に携わっています。
講師は3年ほどメインで担当し、最近は特別授業に出させていただいております。

今回の記事では、N予備校プログラミングコースを制作していた頃の振り返りと、8コースあるプログラミングコースそれぞれを紹介したいと思います。
記事の最後では、N予備校で実際にプログラミングを学ばれて、IT企業に就職できた方々の内定実績についても書いています。

N予備校と私

私はN予備校の数ある教材の中でも、プログラミングを担当させていただいております。
N予備校のプログラミング教材がまだ無い頃から、著者の 吉村総一郎 さんの元で、教材の編集の仕事をさせていただきました。

・教材のイラストについて

プログラミング教材の編集はもちろんですが、それと共に、教材の画像や挿絵などのイラストも最初は自分が全て描きました。イラストは多い時は1日に2~3枚描き、全部で90~100枚くらい描き上げたと記憶しています。
私の描いたイラストを元にデザイン会社にリライトをお願いし、プロのデザイナーさんに描き直してもらいましたので、現在の教材に自分のイラスト載っていませんが、そんな貴重な当時のイラストを一枚ご紹介します。
下に貼ってみますので、気に入っていただけたら「いいね」や「すき」やコメントをお願いしますw

画像1

当時私が描いたイラスト、題名:ネットワーク

・N予備校の開講

プログラミングの教材が無事に完成し、2016年4月、ついにN予備校が開講(リリース)しました。
様々な教科の担当講師が講義を行う中、自分は週に2回プログラミングの授業を行っていました。
この頃はまだプログミラング入門コース、現在の【2020年度版】プログミング入門の原型のコースしかありませんでした。
プログラミング入門コースの教材は内容がとても多く、週2回の授業を一年を通して行わなければ終わらないほどの分量です。

最初の3ヶ月間のプログラミング講師は、折原・吉村・滝本の3人で順番に行っていました。そして3ヶ月が経過した後に、自分一人で講義を担当するようになりました。
教材の方も後に「大規模Webアプリコース(Scala)」や「iPhoneアプリコース」、「Androidアプリコース」などが作られていきました。
(後ほど詳しく紹介します。)

・一部の書籍化について

N予備校はオンライン学習サイトであることもあり、書籍の方が読みやすいという受講者らの意見もあって、プログミラング入門コース教材の一部は、「高校生からはじめるプログラミング」(ソードアートオンラインの表紙)というタイトルの本として出版されました。
(この本の内容をもってしても、プログラミング入門コースの4分の1にも満たない冒頭の部分だけを抽出して書籍にしております。)

画像2


・某新型ウィルスとN予備校

N予備校というと月額1000円で何でも学べてしまうというオンライン学習サイトで、内容の充実さの割にあまり知られていないサービスでした。
某新型ウィルスの感染拡大に伴う全小中高の休校要請を受け、数ヶ月間の間無料開放した事で話題になり、少しは知られるようになりました。
当時の無料開放のニュース https://nnn.ed.jp/news/blog/archives/10023.html

また、ほぼ同時期に授業もできるだけ講師の自宅から行えるように、オンラインビデオ会議サービスである Zoom を導入し、
会社に出社する事なく、自宅から授業を行うように切り替えました。

プログラミングと私

私は、情報系の大学と大学院で6年間プログラミングやコンピュータサイエンスや数学を学び、人工知能研究室に所属しておりました。
卒業後新卒入社でドワンゴに入社し、約2年間ニコニコ生放送の開発チームに加わっていました。その後、同じくドワンゴにて教育事業を始め、プログラミングを教えるという現在に至ります。

さて、プログラミング教育の話を始めていきましょうか。

・プログミラングを学ぶという事

プログラミングは、昨今では、情報革命などと言われ、世界的にIT技術の進歩がめまぐるしいですが、プログラミングの技術は働く上で今後必要不可欠になってくると思います。

・プログラミングを学んでどうなるのか

プログラミングを学ぶと、同時にパソコンに詳しくなり、パソコンを使った作業なども自然とできるようになります。
プログラミングを書いて作業を自動化したり、楽しいアプリや便利なアプリを作成することで他の人にも使ってもらうことができるようになります。

そしてプログラミングができるようになればなるほど、それはより楽しいものとなり、作れるようになる物の幅も広がることで、さらに良いアプリの開発をしたくなります。
そしてアプリ開発を通じてさらにプログラミングに詳しくなり、また新しいアプリの開発がしたくなるという循環に突入していきます。
このような循環に突入していくと、プログラミングは一生の趣味に発展し、人生の時間が短いと感じることもあるかもしれません。

・プログラミングを学ぶ循環

プログラミング学習循環

①プログラミングを学習する
プログラミングを学び始めて最初に学ぶのは、プログラミング言語の文法(書き方)かと思います。
この辺りは、初学者にとっては何のために使うのかもよく分からないので、「なかなかやる気が出ない」や、「普段使っていない頭の部分を使っているようで疲労感を感じる」などと良く言われたりします。

②プログラミングがもっと書けるようになる
プログラミングが書けるようになると、自分で作れるものの幅が広がります。
自分の思い通りにプログラムが書け、パソコンに任せることができます。
パソコンに思い通りにプログラムの実行を任せられるようになると、パソコンはそれを高速かつ正確に処理を行ってくれます。

③作りたい物が増え、作りたい物が無限に増える
プログラミングがより書けるようになると、「もしかしたらこんな機能も作れるかも?」と作れる機能がどんどん増えます。
作成を繰り返していると、作成にかかる時間も以前と比べて早くなっている事でしょう。
このようになってくると、「あれもこれも」と作りたい物がどんどん増えていきます。

④アプリを作成する
たくさんのアイデアの中から最も作ってみたい物が決まったら、実際にアプリを開発していきます。
アプリといっても様々であり、Webサイト、スマートフォンアプリ、デスクトップアプリ、業務を効率化させるためのツールなどなどがあるでしょう。
アプリを作成している途中で、必要となった機能を作成するために必要な事を調べたり、時には少し勉強もしながらアプリを作っていきます。
アプリが少しずつ出来ていく工程もとても楽しいです。

⑤アプリをリリースすることで、充実感が得られる
アプリが完成したら、それを世に公開(リリース)します。
アプリを完成させ公開できた時は、達成感と充実感が得られます。
そして作成したアプリを自分以外の人に使ってもらえることは大変嬉しい事です。
自分が作成したアプリは、我が子のように可愛く思え、褒められると自分の事以上に嬉しいものです。

⑥アプリを作成する過程で、さらにプログラミングが書けるようになっている
アプリを作成している過程においても、さらに技術力が身につき、よりプログラミングができるようになっています。
そして再び②にもどります。
この過程を経て、プログラミングを使って実現できることがさらに増えますので、またアプリが作りたくなります。
そして再び③に進みます。

N予備校のプログラミング教材とコースについて

N予備校のプログラミングの教科は、プログラミングだけでなんと8つもコースがあります。

プログラミング入門コース
大規模Webアプリ(Scala)コース
ニコニコ動画再現コース
スマートフォンアプリ iPhone コース
スマートフォンアプリ Android コース
機械学習コース
コンピュータサイエンスコース
Unity 2D/3D コース

N予備校のプログラミング教材の特徴は、現役のドワンゴエンジニアが作成した実践的な内容であることと、これらの教材が最新の状態に保たれるように、更新され続けているという事です。
特に入門コースは更新頻度が多く、一年間で400回以上更新がなされています。
1日1回よりも多いですよね。

・オススメの受講コース

紹介させていただきましたように、プログラミングのコースがたくさんありますので、
あなたにオススメのコースを選んでくれる診断フローを作成してみました。
こちらの診断フローであなたにぴったりなコースが見つかりましたら、是非受講してみてくださいね。

プログミラングコース診断フローチャート

診断結果

それぞれのコースを紹介してみたいと思います。

・プログラミング入門コース

プログラミング初学者や、経験の浅い方はまずはこれから始めてみましょう。
Webページ制作やWebアプリケーション制作を通じてプログミラング言語 JavaScript を学んでいきます。
全4章構成に追加して付録章があります。

①プログラミング入門コース1章
HTML を学んで簡単なWebページを作成できるようになります。
JavaScript を学んでWebページに簡単な動きを付けることができるようになります。
JavaScript については、条件分岐や繰り返しなどの文法についてもしっかり学びます。
CSS を学んでWebページに簡単な装飾を付ける事ができるようになります。
HTML、CSS、JavaScript を学び終えたら、診断Webページの作成して実践力を身に付けます。
Webページが完成しましたら、GitHub のアカウントを作成し GitHub を使って成果物を全世界に公開することができるようになります。

②プログラミング入門コース2章
Ubuntu OS を通じて Linux のコマンドラインインタフェースを学び、基本的な Linux コマンドが使えるようになります。
定期的に外部のサイトからデータを取得するプログラムを構築し、自動化の基本を学びます。
Git と GitHub について学び、プログラムのバージョン管理ができるようになります。
これらを学ぶ事で、エンジニアが使用している定番のツールを知る事ができます。

③プログラミング入門コース3章
Node.js を学び、サーバーサイドプログラムを書く事ができるようになります。
データ集計や、処理効率の良いプログラムの書き方を学び、より高度なプログラムを記述することができるようになります。
チャットツールなどで自動で発言するチャットボットの作成ができるようになります。
Node.js のライブラリが使えるようになり、より応用的なアプリケーションを作成できるようになります。
掲示板アプリを作成する過程で、Webアプリケーションに使われている知識を習得する事ができます。
Webのセキュリティについて学び、安全なWebアプリケーションを作成できるようになります。
Heroku を使えるようになり、作成したWebアプリケーションを全世界に公開することができるようになります。

④プログラミング入門コース4章
Node.js とフレームワークを使った開発方法を学び、本格的なWebアプリケーションを作成する事ができるようになります。
GitHub アカウントを使った外部認証システムをWebアプリケーションに組み込む事ができるようになります。
プログラムのテストを学び、プログラムの品質を担保する事ができるようになります。
様々な通信方法を学び、外部サイトと連携したり、リアルタイム通信を行うWebアプリケーションを作成する事ができるようになります。
データベースについて学び、大量のデータを扱うWebアプリケーションを作成する事ができるようになります。
最後に、複雑な機能が必要になる、予定調整アプリを作成してさらなる実践力を身に付けます。

⑤プログラミング入門コース付録
N予備校の特別授業で扱ったアプリケーションを作成する教材がいくつかあります。
Twitter ボットを作成する教材や、リアルタイム通信を行うオンラインゲームを制作する教材もあります。

・大規模Webアプリ(Scala)コース

プログラミングやWebアプリ開発慣れてきて、さらなるスキルアップを目指す方は受講してみましょう。
プログラミング言語 Scala を学び、並行処理などを駆使して、多くのユーザーに使用されるWebアプリケーション開発の方法を学んでいきます。

①Scala 基礎コース
「プログラミング入門コース」の終了が前提となっている講座です。
プログラミング言語 Scala の実行環境の準備ができ、基本となる文法が書けるようになります。
そして、オブジェクト指向プログラミングを活用したアプリケーションが作れるようになります。
また新しく、統合開発環境である IntelliJ IDEA の使い方を学び、
Scala の文法に加えてプログラミングのデザインパターンの学習及びリファクタリングが行えるようになります。
章の最後では、Scala で動画プレイヤーが作成できるようになります。

②Scala 応用コース
「Scala 基礎コース」の終了が前提となっている講座です。
プログラミング言語 Scala を使い、関数型プログラミングを活用したアプリケーションが作れるようになります。
関数、型パラメーターや変位指定を使った多相関数の設計、Either を使った高度なエラー処理、リスト操作や遅延ストリームの実装ができるようになります。
章の最後では、パーサーコンビネーターのライブラリを実装し、自分のプログラミング言語を作れるようになります。

③並行処理プログラミング
「Scala 応用コース」の終了が前提となっている講座です。
スレッドやスレッドセーフという概念、メモリの可視性と逸出について学び、
プログラミング言語 Scala を使って、マルチスレッドによる並行処理プログラミングができるようになります。
章の最後では、Java が持つ並行処理の仕組みの並行コレクションやシンクロナイザ、Executor フレームワークと Fork/Join フレームワークを学び、最終的に、Akka Actor のアクターモデルを利用した、スケーラビリティと耐障害性の両方を持ち合わせた並行処理プログラミングができるようになります。

④実践大規模Webアプリ
「並行処理プログラミング」の終了が前提となっている講座です。
大規模なチーム開発に必要なアジャイルソフトウェア開発やドメイン駆動設計についての概略を学び、UML を使ったソフトウェア設計ができるようになります。
プログラミング言語 Scala とWebアプリケーションフレームワークである Play Framework を利用して、大規模Webアプリケーションの開発ができるようになります。
章の最後では、Docker を用いて MySQL、Redis、ImageMagick を利用した画像変換サービスを作成し、さらなる実践力を身に付けます。

・ニコニコ動画再現コース

「プログラミング入門コース」と「大規模Webアプリ(Scala)コース」終了が前提となっている講座です。
Webアプリケーションフレームワークである Express.js と Play Framework を利用して、ニコニコ動画のクローンとなるWebサービスを開発します。
Webサーバーのほかに、JWT による認証可能なメディア配信サーバーを Play Framework で実装できるようになります。
複数の動画変換タスクを制御し、FFmpeg と MP4Box を利用して MPEG-DASH によるアダプティブビットレートの動画のストリーミングを実現します。
また、ニコニコ動画独特のコメント描画の実装も行います。
(学習にあたっては利用する特許に関してニコニコ動画再現コースの利用規約に同意する必要があります。)

・スマートフォンアプリ iPhone コース

プログラミング言語 Swift を用いて、ネイティブの iOSアプリを開発ができるようになる講座です。
「プログラミング入門コース」を学び終えていると学習がスムーズに進むでしょう。
統合開発環境である Xcode の使い方や、iOS 特有の UI、データの扱い方などを学習し、
リストを使った複数の画面にまたがる動的なアプリを作成し、Swift での実践的な開発ができるようになります。
(iPhone アプリを開発するには Mac OS が必要が必要です。)

・スマートフォンアプリ Android コース

プログラミング言語 Java を用いて、オブジェクト指向プログラミングを活用したネイティブの Android アプリを開発できるようになる講座です。
「プログラミング入門コース」を学び終えていると学習がスムーズに進むでしょう。
統合開発環境である Android Studio の使い方を学び、 動的UI、データの保存、写真の利用などの Android のプラットフォームを活用するアプリケーションの開発ができるようになります。

・機械学習コース

機械学習を学ぶための事前知識から、機械学習の様々な手法、実際に機械学習でどのようなことができるのかを手を動かしながら体験することができる講座です。
「プログラミング入門コース」を学び終えていると学習がスムーズに進むでしょう。

この講座では、

1. Pythonというプログラミング言語
2. 必要となる数学の最低限の知識
3. 機械学習の様々な手法や応用方法

を手を動かしながら学び、実装できるようになります。

・コンピュータサイエンスコース

コンピュータ科学(サイエンス)コースには現在3つの科目があります。
プログラムがどのようにデータ処理を行なっているかを学び、効率の良いプログラムを書けるようになり、
競技プログラミングなどにいかす事ができる「アルゴリズムとデータ構造」講座、
インターネットの通信の仕組みについて学ぶ事ができる「ネットワーク」講座、
正規表現などの技術に使用される文字列をプログラムで処理する仕組みついて学ぶ事ができる「オートマトン」講座、
があります。

①アルゴリズムとデータ構造
プログラミングで問題を解決するとき、例えば数を小さい順に並び替えるとき、辞書の中から単語を探し出すときなどには、プログラミング言語にとらわれない本質的なアイデアが登場します。
このアイデアをアルゴリズムと呼びます。
アルゴリズム次第で、プログラムの実行速度は何百倍・何千倍も変わります。
この講座では、よく知られた問題とそれを解決するためのアルゴリズムを学習し、アルゴリズムの正しさを確かめ、効率を見積もる技法を身につけることができます。
「プログラミング入門コース」を学び終えていると学習がスムーズに進むでしょう。

②ネットワーク講座
皆さんはブラウザを使って調べものをしたことがあるでしょうか?
ブラウザを使った調べものには「インターネット」という技術が使われています。
インターネットは「ネットワーク」の一種です。
この講座では、インターネットで使われている技術を中心に、ネットワークについて学習することができます。

③オートマトン講座
オートマトンとは、文字列を"食べて"働く、理論上の機械です。
この講座では文字列や正規表現について、理論的な側面から理解することができます。
またコンピュータや言語の本質へと繋がる知識が得られます。

・Unity 2D/3D 開発コース

ゲームエンジンである「Unity」の基本的な使い方をゼロから学ぶことができます。
このコースを一通り受講することで 3D ゲームおよび 2D ゲーム制作に必要な知識を身に付けることができ、ゲーム開発ができるようになります。

IT企業への内定実績について

N予備校のプログラミングコースは、ドワンゴの現役のエンジニアが作成した実践的な教材であることが特徴的です。
それゆえ、N予備校でプログラミングを学習し、実際にエンジニアやプログラマとして IT企業に就職された方々も多くいらっしゃいます。
主な内定先企業を以下に挙げてみます。

主な内定先:
株式会社ウィルゲート、 株式会社シベスピ、 株式会社クリア
株式会社アットウェア、 株式会社ヒトクセ、 セカンドサイト株式会社
アルテリア・ネットワークス株式会社、 株式会社ラグザスクリエイト
株式会社マクロミル、 株式会社SIG、 株式会社エーエスエル
株式会社そると、 バーチャレクス コンサルティング株式会社
アクセルマーク株式会社、 株式会社ドワンゴ、 株式会社デジタルハーツ
アルサーガパートナーズ株式会社、 フォルシア株式会社、株式会社アカツキ
株式会社ゆめみ、 株式会社フリークアウト・ホールディングス
ピクシブ株式会社、 株式会社ZOZOテクノロジーズ
株式会社インターファクトリー、 JR東日本メカトロニクス
株式会社アイスタイル、 株式会社Donuts
株式会社ACCESS、 株式会社コアコンセプト・テクノロジー

また、実際に内定を獲得された方々のN予備校体験記もございますので是非見てみてくださいませ。

2020年度の内定実績ページ
https://www.nnn.ed.nico/pages/programming/interview/
2019年度の内定実績ページ
https://www.nnn.ed.nico/pages/programming/interview/2019/index.html

・IT 企業のエンジニアになるために

N予備校プログラミングコースでは、IT企業にエンジニアとして就職すためのお勧め手順も紹介しています。

まず、N予備校にてプログラミングをしっかりと学習されましたら、学んだ技術を使って何か作品を作ってもらいます。
作品作りのきっかけになるように、N予備校では年2回コンテストを開催していまして、受講者らの作品も掲載していますので、良かったら見てみてくださいませ。
参加費が無料であるにもかかわらず、賞を受賞されますと、ささやかな賞品が届く事もあります。

夏:動くWebページコンテスト
https://progedu.github.io/webappcontest/2020/summer/result/
冬:Webアプリケーションコンテスト
https://progedu.github.io/web-contests/webcontest2019-winter/

作品を作ることができましたら、その作品を紹介するための作品ポートフォリオのWebページを作成しましょう。
企業の面接を受ける際に、このような作品集を見せることができたらば、採用面接がスムーズに進むことでしょう。そして面接で見せることのできる作品がない人より遥かに高評価になります。
N予備校では作品ポートフォリオサイトを作成する特別授業もあります。

「就職で有利になるポートフォリオサイトの作り方」
https://www.nnn.ed.nico/lessons/482529935

以上、N予備校でしっかりとプログラミングを学び、アプリを作成してポートフォリオページを作成し、実際に就職に結びつけるための手順でした。

まとめ

・N予備校のプログラミングの教材はドワンゴの現役エンジニアが作成した実践的な内容であり、進化がめまぐるしい IT業界に追従して、教材の更新が日々行われている。
・プログラミングを学び、作品を作る事は楽しいだけはなく、今後は必要不可欠な技術になってきます。
・N予備校では年に2回コンテストを開催している。
・N予備校プログラミングコースのサイトURL
 - https://www.nnn.ed.nico/pages/programming/

こちらの記事は N予備校アドベントカレンダー の1日目の記事です。

この記事が気に入ったらサポートをしてみませんか?