週末プロジェクトネタ
休みの日にプログラミングしたいなぁ,新しい言語で何か作ってみたいなぁ,と思った時に,「さて,何を作ろうか?」で悩むことがある。 ということで,よくあるお題などを気づいたら書いていく。
注意点としては,ここではあまり言語に依存しない問題を上げているけど,WebをやってみたいからJavascriptとか,AndroidやってみたいからKotlinとか,そもそも得たい知識が先にある程度決まっている場合は,その応用例を実際にやってみるのが一番良い。それが具体的に無い場合でも,下の例と組み合わせると例が浮かぶかも知れない,Webのテトリス,Androidでテトリスとかね。
趣味系
何か趣味があるなら,その趣味の中であったらいいな,と思うものをメモしておく。
Web系
Blogサイト HTTPサーバからDBから一通り触れる。
HTTPサーバ(FTPクライアント) ライブラリを使わずにHTTPサーバを書いてみるのはHTTPの良い勉強になる。
Webスクレイピング 特定のサイトをスクレイピング出来るとやれることが増えて楽しい。でも,攻撃にならないように気をつけること。株価や特定の商品の値段とか。
チャットアプリ オンラインチャットアプリをもサーバの練習になる。
シンプルゲーム
迷路ゲーム 単純な迷路だけでなく,倉庫番にしてみたり,ボンバーマンみたいなものを作ってみたりも面白い。迷路のマップ生成も面白い。
レトロゲームクローン テトリス,Pong,Breakoutなど。最近だとOpenAIのAPI付けておくと強化学習の環境としても使える。
Sudoku 問題を作って,ソルバーを書いて。特にソルバは良い勉強になる。
ピクロス生成 画像からピクロス問題を作る。解ける問題かどうかを判定するのが難しいのかな?数独みたいにソルバーも書けるのかな?英語だとピクセルアートとかノノグラムとかイラストロジックとか言うのかな。
その他
シンプルチャットボット すごいチャットボットを作るのは難しいけど,会話内容を限定(ニッチ領域)すれば,それなりに動くようにみえるものは意外と作れたりする。あくまでも,そう見えるだけだけど。
統計アルゴリズム カルマンフィルタとかパーティクルフィルタなどを書いてみる。
離散アルゴリズム ここは問題の宝庫。いきなり難しい問題に取り組まず,時間に合わせて適時問題の難易度を考えてチョイスすると良いかも。
処理系・言語作成 チャレンジしては途中でやめてしまう系No1な気がするテーマ。僕も最後までやったことはない・・・。いつかやりきってみたいな。
Unixコマンドの再実装 これもよくある例かな。オプションとかも含めて完全なものを作ろうとはしないほうが良い。
プログラミングサイト Project EulerとかRozetta Codeの例とか。