Python開発者のためのクールなPythonプロジェクト案10選

本記事は、[Claire D. Costa](https://medium.com/@harish_6956)氏による「[10 Cool Python Project Ideas for Python Developers](https://towardsdatascience.com/10-cool-python-project-ideas-for-python-developers-7953047e203)」（2020年9月5日公開）の和訳を、著者の許可を得て掲載しているものです。

#Python開発者のためのクールなPythonプロジェクト案10選
>Pythonで作れる面白いアイディアとプロジェクトのリスト

![Cool Python Project Ideas for Python Developers](https://miro.medium.com/max/1400/1*J4xsEISU9wuB237dgDfLNA.jpeg)
Photo by [Andrea Piacquadio](https://www.pexels.com/@olly?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels) from [Pexels](https://www.pexels.com/photo/focused-man-working-on-laptop-in-workshop-3844533/?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels)

##はじめに

>###「Pythonをコーディングする喜びは、少しのクリアなコードで沢山のアクションを表現する、短く簡潔で読みやすいクラスを見ることであり、読者を退屈させる、膨大なつまらないコードではない。」Guido van Rossum

[**Python**](https://www.python.org/)は世界で最も使われている[プログラミング言語](https://towardsdatascience.com/top-programming-languages-for-ai-engineers-in-2020-33a9f16a80b0)の1つで、その理由は、業界のさまざまな分野に適した**汎用性の高さ**にあると言えます。Pythonを使えば、**ウェブだけでなく、デスクトップやコマンドラインでも**プログラムを開発できます。Pythonは、学生から**中級者、上級者、プロまで**、さまざまなスキルレベルのプログラマに適しています。しかし、どんなプログラミング言語も常に学習が必要であり、Pythonも同様です。

もし本当に深い実用的な知識を得たいのであれば、空き時間に専念するだけでなく、Pythonのよりよい活用方法を教えてくれるクールなプロジェクトに取り組むのが、**Pythonに真剣に取り組む**には一番です。

**知っていましたか？**

>###Stackoverflowによれば、Pythonは最も好まれる言語であり、開発者の大半がPythonを使っています。

###

>**2020年の新人向けトップPython面接の質問と回答**
>​​最もよく聞かれるPython面接の質問と回答を新人向けにまとめています。
>[blog.digitalogy.co](https://blog.digitalogy.co/python-interview-questions-and-answers-for-freshers/)

##プロジェクトのプラットフォームの選択

Pythonは正しく使えば、とても汎用性の高いプログラミング言語になります。この言語で沢山の**気の利いたプログラム**を作って、能力を強化できます。特にPythonなどのプログラミング言語を学ぶには、理論より実践の知識に触れることが何よりも重要です。

しかし、今回用意している楽しいプロジェクトを始める前に、どのプラットフォームで作業するか決める必要があります。この記事で紹介するプロジェクトのプラットフォームは、以下の**3つに分類**されます。

###●ウェブ

ウェブアプリケーションを構築すると、インターネットを介して誰でもどこからでもアクセスできるようになります。そのためには、アプリケーションの視覚的な部分であるフロントエンドと、ビジネスロジックを実装するバックエンドの作業が必要です。[**Django**](https://www.djangoproject.com/)、[**Flask**](https://flask.palletsprojects.com/en/1.1.x/)、[**Web2Py**](http://www.web2py.com/)などの**ツールやフレームワーク**は、そのための沢山の選択肢の一部です。

###●デスクトップGUI

デスクトップアプリケーションもとてもよく使われており、かなりの数のユーザーが利用しています。Pythonの[**PySimpleGUI**](https://realpython.com/pysimplegui-python/)パッケージを使えば、必要なすべての要素を構築でき、とても容易に開発できます。[**PyQt5**](https://pypi.org/project/PyQt5/)フレームワークは、高度なGUIを構築する要素も提供しますが、習得には時間がかかります。

###●コマンドライン

コマンドラインプログラムは、コンソールウィンドウ上でのみ動作し、GUIは一切ありません。ユーザーとの対話はコマンドを介して行われ、プログラムと対話する最も古い方法ですが、GUIがないからと言って、有用性がないということではありません。何百ものトップ企業が、日常のビジネス活動をコマンドラインプログラムに依存しています。構築には、[**docopt**](http://docopt.org/#:~:text=Command%2Dline%20interface%20description%20language&text=docopt%20is%20based%20on%20conventions,Naval%20Fate.)、[**Python Fire**](https://pypi.org/project/fire/#:~:text=Python%20Fire%20is%20a%20library,it%20fires%20off%20your%20command.)、[**plac**](https://pypi.org/project/plac/)、[**cliff**](https://pypi.org/project/cliff/)などのツールが使えます。

>###「Pythonは、Google創業時から重要な役割を果たしており、システムが成長して進化しても変わりません。現在、何十人ものGoogleエンジニアがPythonを使っており、Python技術者をさらに求めています。」Peter Norvig（[Google](http://google.com/)検索品質担当ディレクター）

###

>**Pythonを使っている世界的企業10社**
>Pythonは、IT業界の巨人が積極的に使っています。
>[towardsdatascience.com](https://towardsdatascience.com/10-world-class-companies-using-python-26cde24919a8)

##Python開発者のためのPythonプロジェクト案

使うプラットフォームが決まったら、すぐにプロジェクトを始めましょう。以下では、すべての技術レベルの開発者を対象とした楽しいプロジェクトを紹介します。これらはPythonの技術と自信を次のレベルに引き上げる上で重要な役割を果たします。

##1. コンテンツ収集ツール

![content aggregator tool](https://miro.medium.com/max/700/1*sEgqZa0-cXwSHNLCG9p1IQ.jpeg)
Photo by [Obi Onyeador](https://unsplash.com/@thenewmalcolm?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)

インターネットは、常にオンラインで何かを検索している何百万人もの人々にとって、主要な情報源です。特定のトピックに関する**大量の情報**を探している人は、コンテンツ収集ツールを使って時間を節約できます。

コンテンツ収集ツールとは、大量のウェブサイトから特定のトピックに関する情報を1ヶ所に収集して提供するツールです。HTTPリクエストを処理するリクエストライブラリ、**必要な情報を解析してスクレイピングする**[**BeautifulSoup**](https://www.crummy.com/software/BeautifulSoup/)、収集した情報を保存するデータベースを使って作ることができます。

**例**

-   [AllTop](https://alltop.com/)
-   [Hvper](http://www.hvper.com/)

##2. URL短縮ツール

URLは、ウェブページやファイルなど、インターネット上のあらゆるリソースに導いてくれる主要な情報源です。URLはとても長く特殊な文字になることがあります。URL短縮ツールは、このようなURLの文字数を減らし、覚えやすく、扱いやすくするという重要な役割を果たします。

URL短縮ツールは、**randomモジュールとstringモジュールを使って**、入力された長いURLから短いURLを新しく生成するものです。その後、長いURLと短いURLをマッピングしてデータベースに保存し、ユーザーが将来的に使えるようにする必要があります。

**例**

-   [bit.ly](https://bitly.com/)
-   [TinyURL](https://tinyurl.com/)

**無料で参加できるコース**

>**無料DjangoチュートリアルーDjango1.10を試す｜URL短縮ツールを作る**
>すべてはあるアイディアから始まりました。私は自由が欲しかった…とても。仕事からの自由、退屈からの自由、そして何よりも…
>[www.udemy.com](https://www.udemy.com/course/try-django-1-10/)

##3. ファイル名変更ツール

![File Renaming tool created with Python](https://miro.medium.com/max/700/1*5YzaJ8MHMhaICRzvFHc_3w.jpeg)
Photo by [Brett Sayles](https://www.pexels.com/@brett-sayles?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels) from [Pexels](https://www.pexels.com/photo/web-banner-with-online-information-on-computer-3803517/?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels)

仕事で大量のファイルを頻繁に管理する必要がある場合、ファイル名変更ツールを使って大幅に時間を節約できます。要するに、定義した最初の識別子を使って、何百ものファイル名を変更します。これは、コードで定義するか、ユーザーが指定できます。

Pythonの[**sys**](https://docs.python.org/3/library/sys.html)、[**shutil**](https://docs.python.org/3/library/shutil.html#:~:text=Source%20code%3A%20Lib%2Fshutil.,see%20also%20the%20os%20module.)、[**os**](https://docs.python.org/3/library/os.html)などのライブラリを使って、ファイル名を瞬時に変更できます。最初のカスタム識別子をファイルに追加するオプションを実装するには、[**regex**](https://docs.python.org/3/library/re.html)ライブラリを使ってファイルの命名パターンを一致させます。

**例**

-   [Ren](https://en.wikipedia.org/wiki/Ren_(command))
-   [Rename](https://www.tecmint.com/rename-multiple-files-in-linux/)

##4. ディレクトリツリー生成ツール

ディレクトリツリー生成ツールは、システム内のすべてのディレクトリを視覚化し、ディレクトリ間の関係を識別するツールです。ディレクトリツリーとは、どれが親ディレクトリで、どれがそのサブディレクトリかを示すものです。このようなツールは、沢山のディレクトリを操作し、その位置を分析する場合に役立ちます。ファイルとディレクトリをリストアップする[**os**](https://docs.python.org/3/library/os.html)ライブラリと[**docopt**](http://docopt.org/)フレームワークを使って構築できます。

**例**

-   [Tree](https://en.wikipedia.org/wiki/Tree_(command))
-   [Dirtreex](https://github.com/mauriziodimatteo/dirtreex)

##5. MP3プレーヤー

![mp3 player built by Python](https://miro.medium.com/max/700/1*hkbPcPBD9E5eQIhJYIU2xA.jpeg)
Photo by [Mildly Useful](https://unsplash.com/@usefulcollective?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)

音楽を聴くのが好きなら、Pythonで音楽プレーヤーを作れると知って驚くでしょう。**再生**用の基本的なコントロールセットがあるグラフィカルインターフェースを持つMP3プレーヤーを構築でき、アーティスト、メディアの長さ、アルバム名など内部のメディア情報を表示することもできます。

フォルダ移動や、mp3ファイル検索オプションもあります。[**simpleaudio**](https://pypi.org/project/simpleaudio/)、[**pymedia**](https://pypi.org/project/PyMedia/)、[**pygame**](https://www.pygame.org/news)ライブラリを使えば、Pythonでメディアファイルの操作が容易になります。

**例**

-   [MusicBee](https://getmusicbee.com/)
-   [Foobar2000](http://www.foobar2000.org/)

##6. 〇✕ゲーム

〇✕ゲームは、有名な古典的ゲームです。シンプルで楽しく、必要なプレーヤーは2人だけです。目標は、**3x3の格子**上に、✕か〇が3つ連続するように縦か横か斜めの線を引くことで、最初にできた人が勝者です。このようなプロジェクトには、必要なグラフィックとオーディオがすべて含まれている、Pythonの[**pygame**](https://www.pygame.org/news)ライブラリを使うことができます。

![Tic tac toe](https://miro.medium.com/max/640/1*u2XGGg6fXafG1a5FAYoBNw.png)
Image by [OpenClipart-Vectors](https://pixabay.com/users/OpenClipart-Vectors-30363/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=150614) from [Pixabay](https://pixabay.com/?utm_source=link-attribution&utm_medium=referral&utm_campaign=image&utm_content=150614)

**チュートリアル**

-   <https://techvidvan.com/tutorials/python-game-project-tic-tac-toe/>
-   [Making Games with Python & Pygame](http://inventwithpython.com/pygame/)
-   [Game development with Pygame](https://pythonspot.com/game-development-with-pygame/)

**楽しいPythonゲーム開発プロジェクト**

-   [Snake](https://www.edureka.co/blog/snake-game-with-pygame/)
-   [Hangman](https://selftaught.blog/python-tutorial-build-hangman/)
-   [Guessing Game](https://djangocentral.com/creating-a-guessing-game-in-python/)
-   [Rock, Paper, Scissors](https://www.udemy.com/course/rock-paper-scissors-python/?LSNPUBID=JVFxdTr9V80&ranEAID=JVFxdTr9V80&ranMID=39197&ranSiteID=JVFxdTr9V80-F5d48vfiCCpJ8HwvuE4BRw&utm_medium=udemyads&utm_source=aff-campaign)
-   [Dice Rolling Simulator in Python](https://data-flair.training/blogs/dice-rolling-simulator-python/)

##7. クイズアプリ

Pythonで作れるもう1つの人気で楽しいプロジェクトは、クイズアプリです。[**Kahoot**](https://kahoot.com/)は学生が楽しく学べることで有名です。このアプリは、複数の選択肢がある質問を提示し、ユーザーに選択を求め、その後、正しい選択肢を表示します。

クイズで使う質問と回答を追加する機能を作ることもできます。クイズアプリを作るには、すべての質問、選択肢、正解、ユーザーのスコアを保存するデータベースが必要です。

**例**

-   [Kahoot](https://kahoot.com/)
-   [myQuiz](https://myquiz.org/)

##8. 電卓

![Developing a calculator with Python](https://miro.medium.com/max/700/1*1GjPI5ZkIE0BvdBSrv9K2Q.jpeg)
Photo by [Eduardo Rosas](https://www.pexels.com/@lalorosas?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels) from [Pexels](https://www.pexels.com/photo/gray-laptop-computer-showing-calculator-application-with-codes-907487/?utm_content=attributionCopyText&utm_medium=referral&utm_source=pexels)

もちろん、楽しみのためでも、新しいプログラミング言語を学びながら電卓を開発するという昔からのアイディアを見逃してはいけません。すでに電卓を開発したことがある場合は、**より優れたGUIを使って**改良し、現在のOSに搭載されている**最新バージョン**に近付けることができるでしょう。[**tkinter**](https://docs.python.org/3/library/tkinter.html)パッケージを使って、プロジェクトに**GUI要素を追加**します。

##9. バーチャルアシスタント

![Build a virtual assistant with Python](https://miro.medium.com/max/700/1*V8OVPld7l7G7Si-kV-BccQ.jpeg)
Photo by [BENCE BOROS](https://unsplash.com/@benceboros?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)

最近のほとんどのスマートフォンには、独自のスマートアシスタントが搭載されています。これは、音声やテキストでコマンドを受け取り、電話、メモ、タクシーの予約などを管理します。**Googleアシスタント**、**Alexa**、**Cortana**、**Siri**などの例があります。[**pyaudio**](https://pypi.org/project/PyAudio/)、[**SpeechRecognition**](https://pypi.org/project/SpeechRecognition/)、[**gTTS**](https://pypi.org/project/gTTS/)などのパッケージや**Wikipedia**を使って作ることができます。目標は、音声の録音、音声のテキスト変換、コマンド処理、コマンドに応じたプログラム動作です。

**無料で参加できるコース**

>**無料PythonチュートリアルーPythonを学ぶ｜バーチャルアシスタントを作る**
>私は独学で学んだプログラマで学習愛好家です。私の専門分野は主にAI、Ruby on Rails…
>[www.udemy.com](https://www.udemy.com/course/learn-python-build-a-virtual-assistant-in-python/?LSNPUBID=JVFxdTr9V80&ranEAID=JVFxdTr9V80&ranMID=39197&ranSiteID=JVFxdTr9V80-l6XGdgLohub6YYv8_fu5pA&utm_medium=udemyads&utm_source=aff-campaign)

##10. 通貨コンバータ

その名の通り、基本通貨で希望の値を入力し、ターゲット通貨で変換された値を返す通貨コンバータを構築します。より正確な変換を行うために、インターネットから最新の変換レートを取得する機能をコーディングすることをお勧めします。これも[** tkinter**](https://docs.python.org/3/library/tkinter.html)パッケージを使ってGUIを構築できます。

##構築すべきPythonプロジェクト案をもっと見る

-   [Djangoを使ったシンプルなウェブページ](https://simpleisbetterthancomplex.com/series/2017/09/04/a-complete-beginners-guide-to-django-part-1.html)
-   [パスワード生成ツール](https://www.101computing.net/random-password-generator/)
-   [Twitterボット](https://realpython.com/twitter-bot-python-tweepy/)
-   [年齢・性別の検出](https://data-flair.training/blogs/python-project-gender-age-detection/)
-   [乳がんの分類](https://data-flair.training/blogs/project-in-python-breast-cancer-classification/)
-   [居眠り運転の検知](https://data-flair.training/blogs/python-project-driver-drowsiness-detection-system/)
-   [音声感情の認識](https://data-flair.training/blogs/python-mini-project-speech-emotion-recognition/)
-   [仮想通貨アプリ](https://www.udemy.com/course/coinmarketcap/)
-   [スピードタイピングテスト](https://techvidvan.com/tutorials/project-in-python-typing-speed-test/)
-   [フェイクニュースの検出](https://data-flair.training/blogs/advanced-python-project-detecting-fake-news/)
-   [ウェブクローラ](https://www.educative.io/courses/grokking-the-system-design-interview/NE5LpPrWrKv)ー
-   盗用チェッカー
-   ファイルエクスプローラー
-   目覚まし時計
-   リアルタイム価格通知アプリ
-   サイト接続チェッカー
-   Regexクエリツール
-   経費トラッカー
-   Youtube動画ダウンローダー

##おわりに

Pythonを使って作れる面白いアイディアやプロジェクトを紹介しました。Pythonは、あらゆる種類や規模のアプリケーション開発にとても便利なプログラミング言語だと言えます。さらに、Pythonが提供するパッケージは、開発プロセスを大幅に簡略化するという点で、開発者に計り知れない価値を提供します。要するに、Pythonの可能性は無限で、唯一必要なのは正しいアイディアだけかもしれません。

**他にも提案やアイディアがあれば、ぜひ聞かせてください。**

##著者Claire D. Costaについて

**Claire D**は、**Digitalogy**のコンテンツ制作者でマーケティング担当者です。Digitalogyは、世界中の特定のニーズに基づき、厳選された一流の開発者やデザイナーと人々を結びつける、技術ソーシングとカスタムマッチングのマーケットプレイスです。**Digitalogy**は、**Linkedin**、**Twitter**、**Instagram**でつながっています。

##翻訳協力

この記事は以下の方々のご協力により公開する事ができました。改めて感謝致します。

Original Author: [Claire D. Costa](https://medium.com/@harish_6956)
([@ClaireDCosta2](https://twitter.com/clairedcosta2),
<https://www.digitalogy.co>)

Original Article: [10 Cool Python Project Ideas for Python
Developers](https://towardsdatascience.com/10-cool-python-project-ideas-for-python-developers-7953047e203)

Thank you for letting us share your knowledge!

選定担当: @gracen
翻訳担当: @gracen
監査担当: -
公開担当: @gracen

>**こちらもどうぞ**
>朝飯前に学べる！便利なPythonのヒント100選[【前編】](https://qiita.com/baby-degu/items/05cf809d4d992923020d) [【後編】](https://qiita.com/baby-degu/items/532bea7be058c35f61a8)
>[最近見つけたクールなPythonライブラリ6選](https://qiita.com/baby-degu/items/86e8881d3317da17617c)

##ご意見・ご感想をお待ちしております
今回の記事はいかがでしたか？
・こういう記事が読みたい
・こういうところが良かった
・こうした方が良いのではないか
などなど、率直なご意見を募集しております。
頂いたお声は、今後の記事の質向上に役立たせて頂きますので、お気軽に
コメント欄にてご投稿ください。[Twitter](https://twitter.com/BabyDegu?lang=ja)でもご意見を受け付けております。
皆様のメッセージをお待ちしております。