タクマ松下のブログ

情報科学科の学生が書く記録。フロントエンドとサーバサイド練習中!です!

個人的なプログラミングの楽しみ方、勉強法

プログラミングを勉強する上での障壁は色々ありますね。

例えば僕は
既に存在するものはプログラムしたくないタイプ
なので、
技術書を読んでサンプルを見て写経する
とかいうのはすごくイヤなんです。

これでは手を動かせないので、言語を習得することはできません。
やはり手を動かさないと身に入らないようです。僕の場合は。

存在しないものなんて五万とあるんですが、
人間のアイデアは知識ベースで思い浮かぶものなので、
何があって何がないのか、最初はわかりません。

以下個人的な存在しないもの探し+楽しみ方です。

簡単編

ステップ1: アイデア探しの旅というか好きな物探しに出る

ずーっとプログラミングしてても思い浮かびません。
そんなときはアートや映画、アニメなどのクリエイター様が創られたものを眺めています。

僕は攻殻機動隊Serial Experiments Lainカウボーイビバップエヴァンゲリオンとか
ジェイソンステイサムが出てる映画を見たりしました。

特に攻殻機動隊にはたくさん技術系の話が出てくるのでお勧めです。
Serial Experiments Lainも違う観点から見ればオススメ?です。

好きなものをみます。

ステップ2: 出来そうなものを見つける

好きな物が見つかったら出来そうなものを探します。

僕は攻殻機動隊が好きになりました。
攻殻機動隊でいうとさすがにタチコマは難しいです…
いきなりは難しいですよね。

というわけで僕はGhost in the Shell(1995)に出てくるオープニングのスクリーンを実装したいな、と思いました。
ターミナルで動かします。

ステップ2.9: 考える

実装イメージなんですが、
公式の動画が見つからなかったので完成品でご容赦ください。

https://raw.githubusercontent.com/cs14095/cs14095.github.io/master/ghost-in-the-shell-op.gif

アルゴリズムや実装方法を模索します。
実際には手を動かしながらやってました。

今回はGoを使うことにしました。
数字をランダムに表示したいのでなんか格納場所作って、
シャッフルのアルゴリズムはフィッシャーイェーツとかいうのを使って、
スクリーンの表示はライブラリでーとか色々調べます。

ターミナルに座標指定して文字を出力するにはncursesというCのライブラリが有名です。
「Go ncurses」とかで調べてterm-boxというライブラリを使いました。

ステップ3: 実装

できました!
すごく単純なんですが楽しかったです。

github.com

3時間ほどで出来たものです。
グローバル変数だらけ+ポインタがないプログラムなんですが、
見た目重視なので気にしません。


ステップ4: 繰り返す

新しい言語を覚えるときに上の手順を無限ループしてます。
アルゴリズムとかライブラリも組み込めるといいですね。
今は上のやつをPICO-8上でLua使って書いてたりしてます…

API

ステップ1: APIを探す

世の中にはAPIがたくさんあるんですよ。
本当に。
好きなサイトを見つけたら「サイト名+API」で検索してみてください。
ネットワークに興味を持ったら色々APIをたたいてみます。

ステップ2: 市場を探す

実は写真共有とかのサイトはたくさんあってAPIも結構公開されているんです。
でもそれを使ったアプリとか全然見つからなかったりするんですよね。
特にiOSアプリは全然アプリがなかったりで結構オンリーワンになれそうです。

ステップ3: 実装

iOSアプリ実装は結構大変です。知識が必要になります。
僕は3つくらい同時に手を出して手一杯です。
いつか公開できるといいな…って感じです。

まとめ

好きなプログラムを探して書いて、覚えたい言語があったらそれで実装する。
APIを探してたたきまくったりすればオンリーワンが創れるかも?
楽しい!