Djangoでハッカソンに取り組んでみた!

投稿日:2024-08-27

Djangoでハッカソンに取り組んでみた!

夏休みにハッカソンに参加しました!

サポーターズ様主催のマンスリーハッカソンvol.12にてチーム「びんちりん」として学内の友人と二人でアプリ開発を行いました。

制作したアプリケーションの概要等

  • 発表時に使用したGoogleプレゼンテーション - Link
  • GithubRepository - Link
  • 技術スタック - Python,Django,SQL,GoogleAPI

このアプリケーションはYoutubeのプレイリストを爆速(当社比)で作成する事が出来ます。普段私はYoutubeのプレイリストを使って音楽を聴くのですが、不便な要素が多く、使いづらい印象があります。主に....ここら辺!

  • 新しく作るのに一つ一つ動画を探した上で複数回のクリックが必要で少し面倒
  • 動画を探すのに通信を使うので時間が掛かる
  • 絞り込み機能等が無く探すのに時間が掛かる

これらの要因等があり、自分自身でプレイリストを作るのが面倒で他人のプレイリストを利用している人も多いのではないでしょうか?
しかし、他人のプレイリストの中には苦手と感じる曲が混ざっていたりして萎えちゃう事もあります。
なので、これらの問題を解決する為にDjangoを使ってより良いプレイリストメーカーを作成することにしました!

デモ動画

このアプリケーションではこれらの事が可能です

  • 動画の追加(単品,リストどちらも対応!)
  • 動画の絞り込み機能
  • 選択した動画だけでプレイリストの作成

SQLiteに動画データを保存しているので爆速(当社比)で表示が可能になっています。
また、プレイリストの作成時にGoogleにログインする事でYoutubeに作成したプレイリストが追加されます。Happy~!

導入手順

.envにYoutubeData v3のAPIキーとOAuth2.0クライアントIDが必要です。

  1. GoogleCloudConsoleにアクセスし、新しいプロジェクトを作成します。(プロジェクト名はなんでも大丈夫です)
  2. 作成完了後に検索枠に「Youtube Data API v3」を入力し有効にします。
  3. 認証情報から+認証情報を作成をクリックし、APIキーを作成します。これでAPIキーは準備完了です。
  4. Oauth2.0クライアントIDを発行する為にOAuth同意画面をクリックし、UserType:外部を選択し、作成ボタンを押します。1つ目のページは必須項目の部分にメールアドレスやアプリ名を入れてください。(なんでも大丈夫です。)2,3,4つ目の欄も特に入力せずに作成します。最後にOAuth同意画面に戻り、アプリを公開します。
  5. 認証情報に戻り+認証情報を作成をクリックし、OAuthクライアントIDの作成を選択します。
  6. OAuthクライアントのJSONをダウンロードします。
  7. ダウンロードしたjsonファイルclient_secret.jsonに名前を書き換え、django_app配下(db.sqlite3と同じディレクトリ)に配置します。.envファイルも作成し、中にYoutubeAPIKey="xxxxxxxxxx"の様に書きこんでください
  8. Django-PlaylistMakerフォルダでターミナルを開き、以下のコードを上から1行ずつ実行してください。
    (※Pythonのバージョンは3.12想定です)
    python -m venv venv
    Set-ExecutionPolicy RemoteSigned -Scope Process #必要であれば
    venv\Scripts\Activate.ps1
    pip install -r requirements.txt
    cd .\django_app\
    python manage.py migrate
    python manage.py runserver  
  9. http://127.0.0.1:8000/にアクセスし、動作確認を行ってください。(二度目以降の起動はpython manage.py runserver のみで大丈夫です)

今後の機能追加

現在はローカル環境のみで動くWebアプリケーションですが、将来的にはネットに公開し、面倒な手順を踏まずに誰でも簡単にアプリケーションを作成出来るようになれば良いな~!と思っています😀

ハッカソン自体の感想

ハッカソンの期間が約1週間程で短い期間に集中して開発に取り組めたのが良かったです。また、初めてのGithubを用いた共同開発やアプリケーションの設計や資料作成を友達と行ったのが楽しかったです。
優秀賞は貰えませんでしたが周りの学生のレベルが高い事を知れたり、チームでの開発経験を得られた事が自分にとっての成長になったと感じました。

開発の中で難しかった部分

とにかくOAuth認証の実装が難しかったです。新しいアプリケーションを作っていたため先駆者の記事等が無く、大半の時間をその部分に費やしました。ですが、AIを使ったりGoogleAPIを利用している類似の記事を探し、なんとか実装まで辿り着く事が出来ました。