トップデベロッパーになるために作成したいアプリ8選

>こちらの記事は、[Indrek Lasn](https://medium.com/@indreklasn?source=follow_footer--------------------------follow_footer-) 氏により2017年 12月に公開された『 [The Secret to Being a Top Developer Is Building Things! Here’s a List of Fun Apps to Build!](https://medium.com/better-programming/the-secret-to-being-a-top-developer-is-building-things-heres-a-list-of-fun-apps-to-build-aac61ac0736c) 』の和訳です。
本記事は原著者から許可を得た上で記事を公開しています。
著者Twitter https://twitter.com/lasnindrek

少し考えてみてください。あなたがもし健康に関する書籍をたくさん読んだとしても健康になることはありません。実際には、ジムに行き数時間運動をして汗をかかなければ健康は手に入りません。
同じことが開発にも言えます。努力なしに優れたデベロッパーになることはできないのです。

 
そこで、コーディング力を鍛える8つの素晴らしいプロジェクトを紹介します。
あなたの好きなテクノロジースタックを使って各アプリを開発することがゴールです。気楽に考えて、好きなものをつかいましょう。

# プロジェクト1. Trelloクローン

![](https://miro.medium.com/max/960/1*0dQAwo81gL3yVX7rkeVKWQ.gif)
[デモ](https://trello-copy-ddiaorohmd.now.sh/)

[Trello](https://trello.com/en)クローンを開発することで下記のことが学べます。

- ルーティングの仕組み
- ドラッグアンドドロップの実現方法
- 新しいオブジェクトの生成方法（ボード、リスト、カード）
- 入力とバリデーションの操作
- クライアントサイド
 - ローカルストレージの使用方法
 - ローカルストレージへのデータの保存方法
 - ローカルストレージからのデータの読込方法
- サーバサイド
 - データベースの使用方法
 - データベースへのデータの保存方法
 - データベースからのデータの読込方法


[React](https://reactjs.org/)と[Redux](https://redux.js.org/)で作成したサンプルは[このリポジトリ](https://github.com/wesharehoodies/simple-trello)にあります。

# プロジェクト2.ユーザー管理のダッシュボード

![](https://miro.medium.com/max/888/1*gpE3mjAG1U61rNYitET_NA.gif)

[Githubリポジトリ](https://github.com/wesharehoodies/laravel-5.4-crud-example)

これは、シンプルなCRUDアプリで、基礎を身に付けるのに最適です。

このアプリを作成することで下記のことが学べます。

- ユーザーの作成と管理。
- データベース操作（登録、読取、編集、削除）
- 入力検証とフォームの操作方法。
 

# プロジェクト3.暗号通貨トラッカー（ネイティブモバイルアプリ）

![](https://miro.medium.com/max/352/1*pytFB-9DYwg2QLFATM1-1Q.gif)
[Githubリポジトリ](https://github.com/wesharehoodies/react-native-redux-crypto-tracker)

[Swift](https://developer.apple.com/swift/)、[Objective-C](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html)、[React Native](https://facebook.github.io/react-native/)、[Java](https://www.java.com/)、もしくは[Kotlin](https://kotlinlang.org/)を使用してネイティブモバイルアプリとして開発してください。

この開発では下記のことが学べます。

- ネイティブアプリの仕組み
- APIからのデータ取得方法
- ネイティブレイアウトの仕組み
- モバイルシミュレーターの使用方法

APIは[こちら](https://coinmarketcap.com/api/)を利用してください。（もし他により良いものを見つけたらコメント欄に投稿してください。）
チュートリアルを別記事で書きましたので、このアプリがどのように作られたか興味がある場合は[こちらの記事](https://medium.com/react-native-training/bitcoin-ripple-ethereum-price-checker-with-react-native-redux-e9d076037092)を参考にしてください。

# プロジェクト4.独自のWebpackを一から設定する

![](https://miro.medium.com/max/2000/1*j7W5kPG0VMtLOaLyjVw7QA.png)

技術的にはこれはアプリではありませんが、webpackが内部でどのように機能するかを理解することは依然として非常に有益です。理解してしまえば、[webpack](https://webpack.js.org/)はブラックボックスではなくなり、あなたの強力なツールとして身になるでしょう。

学ばなければならないことは下記の通りです。

- ES7をES5にコンパイル（基礎）
- .jsxを.jsに、または.vueを.jsにコンパイル（ローダーについて）
- webpack-dev-serverのセットアップとモジュールのhot reload（vue-cliとcreate-react-appの使用方法）
- 本番用の設定を作成し、[Heroku](https://www.heroku.com/)、[now.sh](https://now.sh/)または[GitHub](https://github.com/)ページを使用してデプロイ（webpackを用いたデプロイ方法）
SCSS、[Less](http://lesscss.org/)、[Stylus](http://stylus-lang.com/)などの好みのCSSプリプロセッサをプレーンなCSSにコンパイル
- webpackで画像とSVGの使用方法

まったくの初心者の方には[こちら](https://codeburst.io/easy-guide-for-webpack-2-0-from-scratch-fe508a3ce44e)がとても参考になるでしょう。

# プロジェクト5.HackerNewsクローン

![](https://miro.medium.com/max/960/1*OIoUV7yOSax5rWAW2R5tXQ.gif)

HackerNewsのカスタマイズは誰しもが通る道でしょう。"例外"になってはいけません。

学ぶことは次のとおりです。

- HackerNewsAPIの利用方法
- SPAの作成方法
- コメント一覧や一行コメント、プロフィールの表示などの機能実装方法
- ルーティング

Hacker News APIのドキュメントは[こちら](https://github.com/HackerNews/API)です。

# プロジェクト6. ToDoアプリ

![](https://miro.medium.com/max/788/1*drjNSKLZgdszWikcdeObdQ.gif)
[サンプル](http://todomvc.com/examples/react/#/)


「本当に？ToDoアプリですか？もうすでに沢山のToDoアプリがありますよ？」
ええ、知っていますが、最後まで聞いてください。ToDoアプリには、その人気の理由があります。

ToDoアプリを開発することは、基礎を確実に学習するための優れた方法です。まずピュアJavaScriptで一度開発して、その後お気に入りのフレームワークまたはライブラリを利用して開発してみてください。

あなたが開発することと学ぶことは次の通りです。

- 新しいタスクを作成
- 入力値のバリデーション
- タスクのフィルタリング（完了、アクティブ、すべて）
 - `filter`および`reduce`関数を使用すること
- JavaScriptの基礎

# プロジェクト7.ソート可能なドラッグアンドドロップリスト

![](https://miro.medium.com/max/814/1*QbeyTnZLPpDD0kdWfWgCrQ.gif)
[Githubリポジトリ](https://github.com/atlassian/react-beautiful-dnd)

[Drag and Drop API](https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API)を理解することは非常に有益です。このような複雑なアプリを作成することができれば、あなたは他の開発者から大きく差をつけることができるでしょう。

学ぶことは次のとおりです。

- Drag and Drop API
- リッチなUIの作成方法

# プロジェクト8.メッセンジャークローン（ネイティブアプリ）

![](https://miro.medium.com/max/692/1*hZqV8xf0uY8C0HYWN3afQw.png)

ネイティブアプリとWebアプリがどのように動作するかを理解すると、他の大勢の開発者から群を抜いた存在になるでしょう。

学ぶことは次のとおりです。

- Webソケット（リアルタイムチャット）
- ネイティブアプリの仕組み
- ネイティブアプリでのレイアウトの動作
- ネイティブアプリのルーティング

# さいごに


これらの開発をするのに1,2ヶ月は忙しくなるでしょう。すべきことはどれかを選んで開発するだけです！
始めるにあたり、少しでもモチベーションを高めたい場合は「[How To Stay Motivated As A Developer](https://medium.com/@indreklasn/how-to-stay-motivated-as-a-developer-810ca49ae287?source=post_page---------------------------)」をご覧ください。

JavaScriptについてさらなるレベルに上げたい場合は、「[You Don’t Know JSシリーズ](https://amzn.to/2LSDpG6?source=post_page---------------------------)」を読むことをお勧めします。
読んでくれてありがとう！❤
 
# 翻訳協力
　
Original Author:  **[Indrek Lasn](https://medium.com/@indreklasn?source=follow_footer--------------------------follow_footer-)** 
Thank you for letting us share your knowledge! 

この記事は以下の方々のご協力により公開する事が出来ました。
改めて感謝致します。
選定担当: yumika tomita
翻訳担当: @rokumura7 
監査担当: @nyorochan 
公開担当: asuma yamada