プログラミングは最近社会的に要求されているスキルの一つになってきていると思う。
NHK教育でもプログラミングの番組をやっているくらいだ。
ちなみにこの番組はすごくて、厚切りジェイソンが人力クイックソートみたいなのやったりして見ているだけで結構面白い。
インターネットも発達し、情報が手に入りやすくなり、パソコンも安くなったので始めやすい環境になっていると思う。
プログラミングを意欲的に学習できるものとして個人的な目標設定が必要だが、やはり何かを作りたいという思いが重要なモチベーションになる。
しかし、最近は技術が進化したので初学者が習うことが実際の製品にどう役に立つのか想像しにくい。
twitter や youtubeなどのサイトや、3DのCGを多用した実写のようなゲーム、人間が勝てないような思考をする人工知能などなど、やりたい人が思う山は相当高い。
プログラミングが上達するコツは、やはり作りたいものを決めてそれを実際に作っていくことで、教科書通りに作ったってそのうち飽きる。
でも、初学者にはどれくらいの目標が適切なのかわかりづらいし、目に見えるものは非常に難しい(技術的にも時間的にも金銭的にも人員てきにも)ものばかり
ということで、何を作りたいか分からない人のために
一人の人間がそれほど時間をかけないで作れるものを一覧にしてみた。
プログラミング言語は限定していないが、PythonやJava、Rubyなどを想定している。
家計簿 or お小遣い帳
エクエルでいいじゃないかと思うけれども、それだけでは物足りない機能が色々あるはずだ。
例えばリマインダー機能などだ。
お金の計算が四則演算の練習にもなるし、
データを保存する方法も習得できる。
スマホには無料のが色々あるけれど、自分だけの必要な機能が欲しかったら作ってみたらどうだろうか
何かに特化した計算機
計算機はいまやどこにでもあるけれど、
自分がやりたい計算に特化したものなんか作ってはどうだろうか。
割り勘とか、時給計算とか、貰えるはずだった残業代とか、
数値の計算の練習になるぞ。
ウェブページを巡回するクローラ
ウェブページを巡回するだけなら結構簡単だ。
URLからHTMLをGETしてきて、中身を読み込んで、次のページに行く。
情報収集に使える。
HTMLやネットワークの勉強になるぞ。
特徴語抽出など、一歩先をいけば自然言語処理(普通の人間の言葉の処理)の勉強にもなる。
ただし、短い時間でアクセスしないこと。
ウェブページの負荷になるので、数秒程度スリープをいれること。
また同じサイトに集中しないように分散させるようにすること。
Twitterのボット
ボットとは自動でツイートしたりするアプリのこと。
TwitterにはAPIというアプリケーションから呼び出す仕組みが用意されている。
そのまま使うのは面倒くさいが、色々な言語用にライブラリが公開されていいる。
自分のTLも取得できるので、取り逃がしたツイートを保存しておくとかそういうこともできる。
これらの目標を助けるアイテム
家計簿や計算機はパソコンで動かすようにするか、Androidアプリをつくるようにすればいい。
クローラやTwitterボットは常時動いているパソコンが必要になってくる。
そのためにはラズベリーパイがおすすめ。
ワンボートパソコンと言われる名刺サイズの小さいパソコン。
6千円くらいで売っている。
OSはLinux系になるけれども、サーバー系は大体Linuxなので学習のためにも触って起きたいところだ。
初学者向けの目標まとめ
- 人に公開するものではない
- 機能が限定されている
- コアになる機能のライブラリがある
- 手順を頭の中で考えられる。
- 自分が使いたい物
これらの条件をクリアしていたら、目標にしていい。
自分だけのものだったら荒削りでも許せるが、人に公開する前提で作ってしまうと大変なことのほうがおおくなる。
アレもこれもと機能をつけてしまうと、完成できなくなる。
機能を一つか二つかに絞って実際に使いはじめることが大切。
Twitterに接続する機能、メールを送受信する機能、画像を編集する機能、WEBページにアクセスする機能などなど、
プログラミング言語が持つ機能には無く、自分で作るにはどうしていいかわからないものは、大体誰かがライブラリを作っている。
これを使えば自分が欲しい機能のところだけ作れる。
ライブラリや機能の選定が決まったら、実際にどういう手順で動かすか考えられれば作れる。
逆にどう実現していいかわからないものは、今はまだ早いということ。
最後だが、なにはともあれ自分が使いたい、必要としているものを自分で作るということが大切。
自分で作って育てていくことで愛着も湧くし、機能追加していくときに色々なことを知ることになる。