【現役エンジニアが選ぶ】Web系プログラミングにオススメの題材

PROGRAM

Web系プログラミングの題材選びで悩んでいる方に。

この記事を読まれている方は、

  • オススメのWeb系プログラミングの題材を知りたい
  • 題材を持つことで何が得られるかを知りたい
  • 何か目標を持って学習したい

おそらくこのように考えている方が多いと思います。

この記事を書いている私は、
プログラミング未経験から転職を果たした現役のWeb系エンジニアです。
エンジニア歴は3年ですが、本業とは別にフリーランスの副業で月10万円ほど、多いときで20万円ほどの収入があります。

この記事では、現役のエンジニアが、Web系プログラミングにオススメの題材について、解説しています。

なぜ題材が必要か

なぜ題材が必要か

まず、プログラミングを学習するにあたっては、短期的な目標を持つ必要があります。
でないと、何に向かって学習を進めていいのかわからなくなるからです。
つまり、どういう題材を選ぶかによって、プログラミング学習が成功するか失敗するか、挫折するかしないかが決まります。

本を目標に学習しない

よくある題材選びの間違いとして、「本」が挙げられます。

大学受験や資格などと同じように、プログラミングに関してもたくさんの入門書が売られています。中には本当に初心者のために丁寧に書かれた本もあり、有益なものもたくさんあります。

しかし、本で紹介されているものを目標も含めて、そのままなぞるだけでは力は身につきません。そこには自分のアイデアや工夫が一切なく、ただ言われて「はいはい」とこなしたに過ぎないからです。

そのため、本はあるキーワードの意味や概要を知りたい場合や実装の具体例などを探す場合に利用するようにしましょう。つまり、逆引きで使っていくようなイメージです。

くれぐれも本に利用される(まどわされる)のではなく、本を利用する立場になりましょう。

題材も含めた全てをコピペしない

ネット上にあるサンプルからコピペをしてそれを組み合わせていくことで目的の動作を実現することはよくあります。プログラミングの学習の段階においても、それはとても有用なやり方で、それ自体には何の問題もありません。

しかし、題材も含めてコピペしてしまうと、自分が介入する余地が一切なくなり、結局学習自体が受身になってしまうため、プログラミング的思考力は身につきません。

一方、題材を自分で選べば、ネット上のサンプル一つだけで完結することはまずなくなりますので、少なくともどのように組み合わせていくか処理やフローを考える必要が出てきます。

コピペすること自体は悪くないですが、自分のものにするためには、題材は自分で設定しましょう。

オススメの題材

オススメの題材

ここでは私自身が実際に実践したものを紹介していますので、個人差はあるかもしれませんが、学習向けには良いプロジェクトが多いのではないかと思います。ぜひ参考にしてみて下さい。

Web版LINEを作ってみる

個人的に一番オススメなのがLINEのようなチャットプログラムを作ることです。
理由は、非同期通信やプッシュ型に近い実装、ユーザー管理などの多くのWeb系プログラミングで重要な要素が含まれているからです。私の場合はグループチャットを除いたLINEを初心者の頃に作りました。

プログラミングのイメージが沸きにくいようであれば、まず2ちゃんねるなどの掲示板やユーザーと発言を紐付けしない、ただのチャットを作ることから始めると良いと思います。

その際のキーワードとしては、「PHP JavaScript リアルタイムチャット」などで検索すれば、多くのヒントが見つかると思います。
ログイン機能の実装の仕方がわからない場合は、「PHP ログイン」などと検索すれば、サンプルがたくさん出てきます。

LINEはオープンソースではないですし、Web版も存在しないので、それそのもののサンプルがないというところに、この題材を選ぶメリットがあります。
すなわち、自分で考えて、サンプルを組み合わせていかないと実装できないということです。これによって、プログラミング的思考力が養われるのです。

グーグルの検索エンジンを作ってみる

グーグルの検索エンジンを実装するためには、クローラーと呼ばれる色々なサイトを巡回して検索結果のためのデータを収集する機能と、検索結果を表示する機能の2つが必要になります。
後者は比較的簡単だと思いますが、前者はサンプルがないので難しいと思います。

クローラーで拾ってくる情報は、検索結果で表示する「タイトル」と「URL」、「説明文」だけで良いです。これを再帰的に取得すれば良いだけです。「再帰的に取得」とは、簡単に言うと、サイトの中に別のサイトのURLを見つけて、それを見に行って、またさらにそこのサイトで・・・といったプログラムの動作になるということです。ただし、下手をすると無限ループになるので、そこは注意が必要です。

情報を収集するロボットを作れるようになると、今後Webスクレイピングなどの分野で活かせると思いますし、巨大検索サイトの仕組みを探求できるメリットもあります。

これも、クローラーを通して、プログラミング的思考が十分に学べる題材となります。

ツイッターを作ってみる

こちらは、基本的には「ログイン」と「ツイート」、「タイムライン」の3つを実装できれば良いのではないかと思います。
ツイッターは調べてみると色々な機能がありますが、この3つだけに要件を絞ると、具体的にどうプログラムすれば良いか見えやすくなってくるのではないでしょうか。

まるっきり同じようには行かないかもしれませんが、「PHP ツイッター」などで検索すればサンプルサイトがヒットしますので、参考にすると良いでしょう。

もしWeb版LINEなどチャットプログラムを題材に選ぶようであれば、こちらはやらなくても良いと思います。
ツイッターでも、おそらく非同期通信を使うことになりますし、つぶやきはユーザーに紐づくので、Web系プログラミングにおいて重要な要素をこちらでも学ぶことができるからです。

題材による学習が終わったら

題材による学習が終わったら、あとは実務に移りましょう。

もし、未経験でこれから就職活動をされるのであれば、ポートフォリオを作れるように自分の作品を何か作ってみることをオススメします。

題材でやってきたことは、既に存在しているプログラムやシステムを自分なりに推測してフローを考えて実装するものなので、プログラミング的思考は身につくと思いますが、自身の作品として、ポートフォリオを作ることはできません。

自分のオリジナリティがないと作品としては評価されないので、自分でサービスを開発するなどして、作品を公開してみましょう。

自分の作品を作るとなると、一気にハードルが上がるという場合には、既存サイトの二番煎じのようなものでもかまわないと思いますし、もしくはプログラミングスクールに通ってそこでポートフォリオ作成のためのアプリ開発をさせてもらいましょう。

今のスクールですと、ポートフォリオ作成までカリキュラムに入っていますので、企業に評価してもらう実績を手っ取り早く作りたい方にはオススメです。

運がよければ、未経験の募集もあるのでポートフォリオなしでも就職できる可能性はありますが、中堅~大手企業を狙うのであれば、ポートフォリオは必ず作れるようにしておきましょう。

参考までに、別の記事で、プログラミングスクールを紹介していますので、検討されている方はぜひ一度ご覧下さい。