週末プロジェクトネタ

休みの日にプログラミングしたいなぁ,新しい言語で何か作ってみたいなぁ,と思った時に,「さて,何を作ろうか?」で悩むことがある。 ということで,よくあるお題などを気づいたら書いていく。

注意点としては,ここではあまり言語に依存しない問題を上げているけど,WebをやってみたいからJavascriptとか,AndroidやってみたいからKotlinとか,そもそも得たい知識が先にある程度決まっている場合は,その応用例を実際にやってみるのが一番良い。それが具体的に無い場合でも,下の例と組み合わせると例が浮かぶかも知れない,WebのテトリスAndroidテトリスとかね。

趣味系

何か趣味があるなら,その趣味の中であったらいいな,と思うものをメモしておく。

  1. 音楽関連  タブ譜作成ツール,コード解析,バックトラック作成ツール。

  2. DIY関連  強度の簡易計算ツール

  3. チャットボット  チャットと言うか,特定の名言集を状況に合わせてつぶやく。

Web系

  1. Twitter-bot  web-apiの使い方を練習するのには良いかも知れない。

  2. Blogサイト  HTTPサーバからDBから一通り触れる。

  3. HTTPサーバ(FTPクライアント)  ライブラリを使わずにHTTPサーバを書いてみるのはHTTPの良い勉強になる。

  4. Webスクレイピング  特定のサイトをスクレイピング出来るとやれることが増えて楽しい。でも,攻撃にならないように気をつけること。株価や特定の商品の値段とか。

  5. チャットアプリ  オンラインチャットアプリをもサーバの練習になる。

シンプルゲーム

  1. ボードゲームエンジン  チェス,碁などのボードゲームや,Tic-Tac-Toe,ポーカーなど。

  2. ライフゲーム  GUIも付けてインタラクティブにやれるようにすると面白いかも。

  3. 迷路ゲーム  単純な迷路だけでなく,倉庫番にしてみたり,ボンバーマンみたいなものを作ってみたりも面白い。迷路のマップ生成も面白い。

  4. レトロゲームクローン  テトリス,Pong,Breakoutなど。最近だとOpenAIのAPI付けておくと強化学習の環境としても使える。

  5. Sudoku  問題を作って,ソルバーを書いて。特にソルバは良い勉強になる。

  6. ピクロス生成  画像からピクロス問題を作る。解ける問題かどうかを判定するのが難しいのかな?数独みたいにソルバーも書けるのかな?英語だとピクセルアートとかノノグラムとかイラストロジックとか言うのかな。

その他

  1. シンプルチャットボット  すごいチャットボットを作るのは難しいけど,会話内容を限定(ニッチ領域)すれば,それなりに動くようにみえるものは意外と作れたりする。あくまでも,そう見えるだけだけど。

  2. 統計アルゴリズム  カルマンフィルタとかパーティクルフィルタなどを書いてみる。

  3. 離散アルゴリズム  ここは問題の宝庫。いきなり難しい問題に取り組まず,時間に合わせて適時問題の難易度を考えてチョイスすると良いかも。

  4. 処理系・言語作成  チャレンジしては途中でやめてしまう系No1な気がするテーマ。僕も最後までやったことはない・・・。いつかやりきってみたいな。

  5. Unixコマンドの再実装  これもよくある例かな。オプションとかも含めて完全なものを作ろうとはしないほうが良い。

  6. プログラミングサイト  Project EulerとかRozetta Codeの例とか。