こちらの記事は、SeattleDataGuy 氏により2019年6月に公開された『 10 Great Programming Projects to Improve Your Resume and Learn to Program 』の和訳です。
本記事は原著者から許可を得た上で記事を公開しています。
本文
Web開発、プログラミング、UI、自動化などのスキルを向上させる
プログラミングを学ぶ際によくある質問の1つは、「プロジェクトを構築するための良いアイデアは何ですか?」というものです。
今では、「チェスゲームを作る」や「コマンドラインインターフェイス」など、一般的な決まり文句の答えがよく聞かれます。 これらの回答に問題はありません。
しかしながら、これらの例は最新のプログラミングのニーズに適合しないと考えています。 最新のソフトウェアの大部分はSaaSとWebアプリです。 つまり、オンラインでプログラミングする方法を知る必要があるということを意味しています。
ユーザーがいるウェブサイトやアプリのプログラミングには、サーバー、認証、データベースを必要とする複雑なものがたくさんあります。 これにより、コマンドラインの三目並べを開発する際には絶対に必要とされない技術との交流をする必要があります。
その中には、大企業がよく利用するAWSなどのサードパーティでも管理できるものもあります。繰り返しになりますが、有用であり、業界で頻繁に使用されているテクノロジーを紹介します。 これは履歴書でははるかに実用的であり、新しいテクノロジーの使い方を学ぶのにも役立ちます。
ヒント:複雑なプロジェクトを選択する場合は、一度に1つの機能を作り上げることに集中してください。 ウェブサイトまたはアプリ全体を一度に構築することは困難です。 ログインページ、あるいはユーザーがログインした後のメインランディングページを構築することから始めましょう。 プロジェクト全体を一度に相手にしようとすると、失敗する可能性があります。
エンターテイメント
1. 人間の介入なしでトップ10のブログを投稿するWebスクレイパー
いくつかのプロジェクト推薦の投稿で見つけた問題の一つは、プログラマーが開発を続けるためにワクワクするような方法で実装されていないプロジェクトを推薦しているということです。 たとえば、多くの人がWebスクレイパーの構築を勧めているようです。
そのWebスクレイパーを構築してデータをスクレイピングしたら、どのように使用しますか?
データをかき集めるのではなく、そのデータを使用してWebサイトを構築してみませんか。 派手である必要はなく、多くのPVを得る必要もありません。 このスクレイパーはデータをデータベースに取り込み、最も人気のある投稿を選択します。 そこから、いくつかの文章と一緒にタイトルをコピーして、それがオンラインで共有する投稿を作成することができます。 これは、実際に自慢できる印象的でシンプルなプロジェクトです。
これで、システムの小さなセグメントをコーディングする以上のことができることを示しました。 むしろ、システム全体を考えることができます。 プロセスを自動化し、データベースを管理し、Webサイトを作成し、投稿を選択する方法を検討する必要があります。 これにより、実体のある最終プロダクトを手に入れることもできます。
目に見える最終プロダクトがなければ、簡単にやる気を失い、ウェブスクレイパーを停止することになります。 さらに、あなたのサイトが人気になるかもしれません!
習得できるスキル:データベース、Webスクレイパー、自動化、Web開発(ブログ用)、および一般的なプログラミング。
2. MeetupおよびEventbrite APIを使用したイベントアラートシステム
バンドやお笑い芸人のライブに行きたいと思っていたのに、先週だったということに気づいた経験はありませんか? おそらく、データサイエンスやビッグデータに関する無料のカンファレンスがあなたの地域であり、チェックするのを忘れたために見逃しました。
イベントの説明やタイトルにキーワードが含まれている場合に警告する、MeetupおよびEventbrite APIを使用して独自のアグリゲーターを作成しませんか? 現在、MeetupとEventbriteの両方に同様のオプションがあると思います。 しかし、自分でシステムを構築しようとすることは常に楽しいです。
システムをカスタマイズして、希望どおりに機能させることができます。また、これをWebサイトにすることで、他の人が独自のアラートを作成できるようにすることもできます。 このプロジェクトで私たちが楽しんでいるのは、2つの異なるAPIを使って練習できることです。 そのため、自分の好きなことや嫌いなことを比較して契約することができるようになります。 これにより、APIの作成を担当している場合は、何が機能し、何が機能しないかをより的確に把握できます。
習得できるスキル:API、データベース、自動化、Web開発、および一般的なプログラミング。
3. 9GAGクローンをつくる
独自のプロジェクトを作成するときに、車輪の再発明する必要があるとは限りません。 ログイン、写真、GIFの投稿、フィードのスクロールが可能な サイトのような単純なプロジェクトは、最初に堅実なベースサイトを作成する機会を提供します。 次に、フォロー、いいね!、検索などの興味深い機能をたくさん追加できます。 特に検索は、レコメンデーションシステムと機械学習がどのように機能するかを学ぶ絶好のチャンスです!
人気のあるサイトを試して複製することは常に楽しいです。 実際、各機能をリバースエンジニアリングする必要があるため、これは実際に学ぶのに最適な方法です。 ソフトウェアエンジニアは常に他の人のコードを保守していて、他の人の頭に入る必要があるため、リバースエンジニアリングは素晴らしいスキルです。
習得できるスキル:機械学習(レコメンデーションシステム用)、データベース、自動化、Web開発、および一般的なプログラミング。
小売業向けのサイト
4.ギフトのレコメンデーションアプリ
友達にぴったりのギフトを探すのに苦労したことはありませんか? 友人にギフトを買うために何を買うかを予測するのに役立つWebサイトを作成できたらどうでしょう。 これにより、エンドユーザーはアカウントを作成するか、ギフトのレコメンデーションを得ることができます。
繰り返しになりますが、認証、データベース開発などを必要とするアカウントを作成する機会が与えられます。
また、このプロジェクトのもう1つの優れた点は、アフィリエイトリンクにAmazonのAPIを使用できることです。 これにより、いくつかのことが可能になります。 1つは、APIの使用方法を学び、APIドキュメントが読みやすくなることです。 2つ目は、うまくいけば、誰かが購入する製品ごとに手数料を得ることができます。
このプロジェクトには、基本的な機械学習モデルを作成する機会もあります。 最高の贈り物が何であるかを理解しようとする種類のクイズを作成し、人々が贈り物をクリックしたかどうかに基づいて、モデルを反応率に基づいて学習させることができます。
習得できるスキル:API、データベース、一般的なプログラミング、アプリ開発。
5.物々交換と取引のためのサイト
OfferUpを考えてください。お金の代わりに、物々交換の取引だけができるサイトを作ってみてはいかがでしょうか。 この概念により、いくつかの考慮が必要ないくつかの機能を開発する必要があります。 計画がなければ、このプロジェクトに取り組むことはできません。
人はどうやって投稿するのか、最近投稿されたものはどこにあるのか、人はどうやって検索するのか。 これらはすべて、構築できる個別の機能です。 さらに、ユーザーがどのように対話するか、そしておそらく実際に取引を行う方法についても考える必要があります。
アイデアは現実の生活で100%実用的である必要はありません—プログラマーとしてのスキルセットを向上させるという意味で実用的である必要があります。
スキル:データベース、ウェブ開発、一般的なプログラミング、アプリ開発(アプリにすることを選択した場合)。
B2B
6. 請求書および契約管理システム
契約および請求書管理は非常に複雑なプロセスです。 契約には、追跡が困難な多くの微妙な条項や規定がある場合があります。
これにより、コアコンポーネントの一部に簡略化したとしても、これは非常に優れたプロジェクトになります。 複雑なビジネスプロセスをソフトウェアに変換することは容易ではありません。 しかし、それがこのプロジェクトを良い挑戦にしています。
繰り返しますが、複雑にしすぎないようにします。 契約条件の入力などの基本的な機能を取り入れ、この部分を最初に開発します。 その後、請求書追跡、契約分析、予測などの他の機能を追加できます。
習得できるスキル:プロセス管理、データベース、Web開発、および一般的なプログラミング。
7. タスク管理システム
KanbanFlowのようなタスクボードは、さまざまなモジュール機能で構築されており、プロジェクトいろいろ試してみるのにとても適しています。 堅牢で動的なUIもセットアップする必要があるため、開始するには少し作業が必要です。 実際、このプロジェクトは少なくとも2人は必要な作業です。 1人はフロントエンドで作業し、もう1人はバックエンドで作業します。
だからといってやる気を落とさないでください! これは実際にあなたがあなたのコミュニケーションとチームワークスキルに取り組むチャンスです。 2人とも完全に理解していることを確認するためには、設計に関して話をする必要があり、あなたは自分のモジュールがどこでつながるかを知っている必要があります。
これは、見た目よりも常に困難です。
習得できるスキル:コミュニケーション、フロントエンド、データベース、Web開発、および一般的なプログラミング。
8. ジョブボード
ユーザーに様々な形式の入力を許可するようにしないといけないプロジェクトは、興味深い設計の側面が必要になります。 雇用主がサイトを使って有望な求職者を見つけられるようにするにはどうすればよいでしょうか? 他のほとんどのプロジェクトと同様に、一度にすべてに集中する必要はありません。 まず、求人を作成する機能を作成することから始めます。 その後、求職者と求職者の反応に関する機能に集中できます。
習得できるスキル:データベース、Web開発、および一般的なプログラミング。
9. 標準化されたデータセットに基づいて利益を予測するWebサイト
大抵の企業のために非常に標準化された多くのデータセットがあります。 これには、通常はコストセンター、アカウント、回線の説明、および実際のトランザクションコストに基づく会計データが含まれます。
データセットの標準化の優れている点は、そのデータセットの上に分析を簡単に作成できることです。 企業が支出を予測し、毎月の支出を確認し、場合によっては支出を改善するのに役立つ標準化されたダッシュボードを作成してみませんか。
このプロジェクトでは、データを安全に保つ方法を学ぶために多くの時間を費やす必要があるでしょう。 もちろん、セキュリティを深く掘り下げる前に、まずデータの取り込みと標準化、および表示に焦点を当てたモジュールを構築することをお勧めします。 それは決して避けることのできない面倒な作業です!
習得できるスキル:予測、ビジネスロジック、データベース、Web開発、および一般的なプログラミング。
ゲームのアイデア
10. スネーク
2000年代の初めに携帯電話を持っていたなら、おそらくSnakeをプレイしたことでしょう。 シンプルなゲームですが、いつでももっと複雑にしようとすることができます! まず、ゲームを作ってみます。
これには、オンラインでゲームを開発する方法を理解する必要があります。 セバスチャン・オッパーマンによるこのネオン・スネークは、始めるのに最適です。 しかし、その後、多分あなたは特別なアイテムや特別な力のようないくつかのクールな新機能を追加することができます。
これは、遊んで楽しむ機会になるでしょう。 このプロジェクトは、多くのユーザーがサインアップしてサイトを使用するという観点からは、それほど技術的ではありません。 ただし、オンラインでゲームを実行する方法を理解することは良い課題です。
習得できるスキル:Web開発、一般的なプログラミング、UI
このリストが、履歴書に追加してインタビューで話し合うことができる素晴らしい新しいプロジェクトを作成するきっかけとなることを願っています。 もしかすると、10億ドル規模のスタートアップの次期CEOとしてお目にかかるかもしれません!
翻訳協力
Original Author: SeattleDataGuy
Thank you for letting us share your knowledge!
この記事は以下の方々のご協力により公開する事が出来ました。
改めて感謝致します。
選定担当: @r_pg10
翻訳担当: @r_pg10
監査担当: @_masa_u
公開担当: @r_pg10
私たちと一緒に記事を作りませんか?
私たちは、海外の良質な記事を複数の優秀なエンジニアの方の協力を経て、日本語に翻訳し記事を公開しています。
活動に共感していただける方、良質な記事を多くの方に広めることに興味のある方は、ぜひご連絡ください。
Mailでタイトルを「参加希望」としたうえでメッセージをいただく、もしくはTwitterでメッセージをいただければ、選考のちお手伝いして頂ける部分についてご紹介させていただく事が可能です。
※ 頂いたメッセージには必ずご返信させて頂きます。
ご意見・ご感想をお待ちしております
今回の記事は、いかがだったでしょうか?
・こうしたら良かった、もっとこうして欲しい、こうした方が良いのではないか
・こういったところが良かった
などなど、率直なご意見を募集しております。
いただいたお声は、今後の記事の質向上に役立たせていただきますので、お気軽にコメント欄にてご投稿ください。Twitterでもご意見を受け付けております。
みなさまのメッセージをお待ちしております。