【入門者向け】プログラミングを覚えたいならテキスト処理からやってみよう
お金がなければプログラミングしよう
5分ぐらいやらされた後に先輩から「こういう時はスクリプトで処理するんや」と 言われるがままスクリプト言語をダウンロードしてきて導入しました。
ここでスクリプトの組み方の簡単なやり方を教えてもらいました。
それ以降は完全に放置です。
まずはこの10万行もあるテキストファイルをどう処理したらいいのかというところから考えて、 最終的にどうなったらいいのか導き出し、そこにたどり着くには何が必要か考えてみろとだけ言われました。
そこで色々試行錯誤して導き出したテキスト処理の手順を紹介します。
UWSCと言いましたが別にJavaScriptでもPythonでもRubyでも出来ますし、 むしろそっちの方がやりやすいですね。
まずはスクリプトでファイルを開く
Windowsならファイルをダブルクリックすると関連付けられているエディタ(デフォルトはメモ帳)でテキストファイルを開くと思います。
しかしプログラミング言語からファイルを開くと「ファイルID」が返り値として得られます(正確にはファイルポインタかな?)
そのファイルIDを使ってテキストを書き込んだり、テキストをコピーしたり切り取ったり様々な処理が出来るようになります。
しかしWindowsでもMacでもファイルを開いたら最後は閉じなければいけないように、 プログラミング言語でも編集したら閉じるという処理をしなければいけません。
例えば変数で保持している値をテキストファイルに書き込んだとして、 閉じる処理をしなければ保存されずに書き込む前の状態になっています。
それどころか、使う言語によっては目には見えていないがファイルを開いたままの状態となっているため パソコンのメモリを無駄に食っている状態になります。
なのでプログラミングでファイル操作をするときは「開く・編集・閉じる」はセットだと思っていてください。
テキストからURLが含まれている1行を取り出す
10万行以上あるテキストファイルを開いて、1文字取り出したりもできますし1行を取り出すことも出来ます。
今回は行にURLが含まれていたら「正しい」と判断したいので行で取得します。
どうやって取り出した行の中にURLが含まれているのか 何も知らない状態であればどうするかまったくわからないのですね。
ここでよく考えてみると、URLは基本的に「http~」で始まっている。
ということが見えてきます。
ここで「あたりまえじゃん」って思う人は頭が良いです。
その当たり前がプログラミングする上でとても大事になってくるので、慢心してはいけません。
次にどうやってその「http~」が含まれているのかを調べるのですが、 これは使う言語によって少し変わってきますので具体的な関数は説明しません。
どの言語も大体文字列に特定の文字列が含まれているかどうかというテキスト処理用の関数が用意されているはずです。
ここで「http」と指定するとその取り出した行にhttpという文字が続いて含まれていれば真、つまりTrueが返ってきます。
含まれていなければ偽、つまりFalseが返ってきます。
真が返ってきたらその行を取り出したテキストファイルとは別に新たなテキストファイルに書き込みます。
取り出した1行を新たなテキストファイルに書き込む
「http」が含まれる行を取り出すことが出来ました。
新たなテキストファイルに書き込みたいのですが、そんなファイルはどこにもありません。
Windowsで右クリックしてテキストファイルを作成してそれをまたプログラムから開いて~ってやってもいいのですが、 プログラミング言語ではそんなことをせずにファイルを作ることが出来ます。
まずは10万行あったテキストファイルと同じようにファイル名を指定してファイルを開きます。
ここで「存在しないファイルなんてどうやって開くんだよ」って思うかもしれませんが、開けてしまいます。
正確にはパソコンのメモリに「URL取り出したテキスト.txt」という枠を準備します。
これで仮想空間にテキストファイルが出来上がりました。
その後、取り出した1行を仮想のテキストファイルに書き込みます。
そしてファイルを開いたのだから閉じなければいけませんので仮想テキストファイルを閉じます。
そうすると、新たなテキストファイルが作成されるという仕組みです。
余談:理解できないところはすっとばして次へいこう
新たなファイル生成はプログラミングを進めていくと理解できる概念なので、 最初のうちは「なぜこうなるんだ!」ってことよりも「こうやったらこうなるんだ!」って覚えた方が良いです。
時々「なぜこうなるんだ!」ってなる人は「とにかくなんでそうなるか知りたいの!」と言い訳してきます。
私もそうでした。
そもそも理解できないのに教えたところで理解できないでしょって言いたいところですが、 教えてくれたらわかるんだよ!の一点張りです。どうしようもないですね(特大ブーメラン
それがわかったところで結果は変わらないので、プライドを捨ててわからないところはこうなるんだ!で済ましましょう。
この辺は数学とおなじで公式に当てはめたらこうなるって覚えるべきです。
ここで文系だからー数学アレルギーがーという言い訳をする人も多いです。
偏差値40もない理系でも文系でもない高卒超底辺の私が理解できているのでそんな言い訳は通用しないですね。
とにかくコードを書きましょう。
プロの真似をしましょう。
オリジナリティを出すのはその後でいいのです。
それでは。