ニッポンの数字ブログ

統計情報のポータルサイト「ニッポンの数字」の開発日記。

退屈なことをPythonに任せる前にPythonの勉強が退屈だ

「詳細!Python3入門ノート」(大重美幸著)に取り組んで1週間。途中1日だけサボってしまったが、何とか勉強を継続できている。

入門と銘打っているだけあって丁寧にPythonの文法を説明してくれているが、「これができると一体何ができるの?」という疑問に答えてくれないので、めちゃくちゃ退屈。1日サボったのもこれが原因だ。

基礎部分の学習というのはこういったものなのだろう。退屈なことを机に向かってバカ真面目に勉強すると長続きしないので、勉強で寝っ転がって、ラジオを聞きながら勉強するようにした。本を丸暗記するわけではないし、「こんなふうにPythonではデータを処理するんだ」ということを何となく知っておきさえすればいいのでそんな力む必要はないじゃない?

最初から完璧を目指し時間をかけて勉強するより、一度さっと目を通しておいて全体を把握し、気になるところを後でまた勉強したほうが効率いいだろう。たぶん。ということで、当初の予定通り明日までに一通り終わらすぞ!

 

Python 1日目

Pythonを勉強しようと一念発起し、早速昨日「詳細Pyshon3 入門ノート」に取り掛かった。著者は大重美幸さん。「WEBとプログラミングのきほんのきほん」の著者でもあり、自分は以前これを読んだことがあるのだけど、大変分かりやすく感銘を受けた。

さてPython。未だにPythonで何ができるのか分からないが、「こんなことができたら仕事楽なんだけどなあ」という願いを叶えてくれるのがPythonなんだと思っている。自分ごときが思いつくようなことは、たいてい誰かが既に考え抜いている事柄で、しっかり解決している。これがITの世界というものだ。

「詳細Python3〜」をパラパラめくると、データの処理に優れた機能がたくさんありそうだ。多様なデータを扱う自分にとって、きっと役立つところがあるはず。機械学習を学ぶセクションもあり、さすがにここまでPythonを使いこなせる自信はないが、せっかくだから読むだけでも挑戦してみよう。

本は10日間ぐらいで読破できそうかな。10日間でPythonマスターとはいかないだろうが、まずは何ができるのかをきちんと把握できるようになろー。

行き詰ったからPythonを勉強してみよう

サイト作りをしていて一番面倒なのは、データをWEBページ用に整形すること。データがexcelやcsvならまだ楽なのだけど、PDFだとどうしようもなく時間がかかる。

大抵の統計データは整形しやすいファイルで提供されているのだけど、有価証券報告書などはPDFで提供されている。過去20年近くの決算データを200社以上に渡って抽出したが、今考えてもよくこんなことできたなと思う。

そこで出会ったのがPython。オライリーから出た「退屈なことはPyshonにやらせよう」という書籍を本屋で見かけ、「これだ!」とインスピレーションを感じた。

「PDFからもっと楽にデータを抽出できたらなあ」とずっと考えていて、たぶんその願いを叶えてくれるのがPythonなんだろうと思う。実際にPythonで何ができるのか全然わかっていないのだけど、ネットでざっと調べたところPDFからのデータ抽出に対応できそうだった。

この夏はPython勉強してパワーアップしよう!

年収データの入力終わり

前回記事を書いてからだいぶ時間が経った。この間、JavaScriptを活用したサイト運営の効率化を図っていたら、腰痛を再発してしまい、30分以上座った姿勢を保てない症状になった。おかげでマッサージグッズが増えた。

JavaScriptを活用したサイト運営の効率化がある程度できるようになったおかげで、ミスは減ったと思う。今週は有価証券報告書の提出ラッシュだったけど、それにも対応できた。プログラミングができるとミスも作業量も減る。実装するのは大変だけど、やったかいがあった。良かった。

はてなブログをカスタマイズして、もうちょっとオリジナリティのあるサイトに仕上げてから更新しようと思っていたら、1年の半分が過ぎてしまった。完璧を求めると実行に移せないということを改めて学んだので、しばらくこの格好悪いサイトのままブログを更新しようと思う。

 

JavaScriptを通じてわかった文字の型の重要性

JavaScriptに限らず、プログラミングをやっていると、このデータは数字なのか文字なのかと必ず意識する。ようやく自分のやりたいことをプログラミングで表現できるようになり、「データの型」の重要さを痛感するようになった。

自分はプログラミング初心者なので、これがプログラミングの王道なのか定かではないが、プログラミングをしていると、とにかく変数を多く使う。変数というのは、数学の文字式に出てくる「x」や「y」のことだ。

この変数に入っているデータが文字型なのか数字型なのかがとっても大切。なぜなら、文字型にしか適用されない関数、あるいは数字型にしか適用されない関数があるからだ。これはエクセルにも言えることなので、エクセルで関数を使いこなせる人には馴染みがあることだと思う。

プログラミングをしていると、「ちゃんとコードを書いたのに動かない」といったことがしょっちゅうある。そこでGoogle Chromeのデベロッパーツールでコードにエラーがないか確認し、その原因が数値として処理していたデータが文字列だったということもめちゃくちゃある。

HTMLの数字を変数に代入しても、それは数字ではなく文字列として認識される。だから、console.logで確認すると、"1234"のように、ダブルクオーテーションで数字が囲まれているはずだ。

見た目は数字では、データの型が文字列なので、これでは足し算も引き算もできない。数字として認識するためには、Numberオブジェクトで「Number(1234)」と囲う必要がある。

自分の場合、JavaScriptにおけるプログラミングのエラーは、半分以上がデータの型についてだ。「動かない…(泣)」という事態に陥ったら、データの型を確かめてみるといいかもしれない。灯台下暗しで、案外上級者でも見落としていることがあるかも

JavaScriptとの格闘。変数、ループをやっと理解

ニッポンの数字を作成するに当たって、いろんなコードを見よう見まねで試して、何とかサイトを動かすようにできたのだけど、JavaScriptはコンテンツのタブ表示など、最低限の機能にとどめていた。

とどめていたゆうか、それしかできなかった。文法とかは理解できるのだけど、functionとか、()とか、{}とか、$とか、varとか、プログラミング独特の記号や文字がとっつきにくく、これが理解の妨げとなっていた。

コードを書いて書いてようやく書き終わって、いざブラウザで開くとレイアウトが壊れていたり、該当場所が余白になっている。そして、コードを書いた以上の時間を割いてエラーの原因を探して、見つからなくて、ストレスになって、酒を飲む。

翌日またエラー探しをしていると、セミコロンが一箇所欠けていただけだった…。

サイト制作当初はそんな状態だったから、JavaScriptを使いこなすのにはまだまだ時間がかかるんだろうなと思っていた。

そんな状態からサイト制作に取り組んで約1年経ち、いい加減プログラミングで効率化できそうなところをJavaScriptで実装してみたら、意外にも作業が進む。

取り組む前に、これまで何度もお世話になった西畑一馬氏の「jQueryデザイン入門」を読み返したのだけど、発見がたくさんあった。初めて読んだときはjQueryとは何ぞやを理解するだけで大変だったんだろう。

今読んでみたら「このセレクタを使えばあれができるな」とか、いろいろと気づけるようになっていた。本を読んで勉強するのもいいけど、合わせて実践しないと理解が深まらないんだな。

プログラミングを勉強したら、変数とかループという用語が出てくるのだけど、こいつらの役どころも理解できた。ニッポンの数字もようやくサイトっぽくなってきた。

サイト制作の初心者から初級者くらいになったかな。

JavaScript グラフ作成の簡略化に向けてはじめの一歩

統計情報を分かりやすくきれいに表示するため、JavaScriptを取り入れているのだけど、これまでHTMLで作る表組み用のデータとJavaScript用のデータを別々に書いていた。同じデータなのに別々に入力するため作業は2倍。入力ミスの確率も上がるので、どうにかHTML上のデータを流用できないかと思っていた。

サイトの更新作業に慣れてきたので、今のままでもいいのだけど、企業の決算が集中するとさすがに気分が滅入る。3月期末の決算発表が5月にあるから、それまでには何とかしたいと思い、ようやくJavaScriptをいじる決心をした。

グラフ以外にもJavaScript/jQueryを使っているので、基本的な部分は理解しているのだけど、ほとんどは本やWEBサイトに書かれたものを参考にしたもの。自分がやりたいと思っていることをコードで表現するのはほとんど初めてだ。

やりたいことはtableにあるデータを、Google chart に読み込むこと。WEBエンジニアの人にも至極簡単なことなんだろうけど、ちょっとホームページを作れるくらいの人間には大仕事なんだよね。

findメソッドとtextメソッドを使って、tbodyの中のtdデータを取得し、それを空の配列が入っている変数にぶち込む。うまくいったと思ったら、取得したデータが「2%」など、「%」が入ってしまっていた。

単位はいらないんだよ。でも、こうした問題は数々のプログラマーが直面してきたはず。だったら既に解決策はあるだろう。ということで、配列の中の要素をいじれる方法を探してみる。

すると手元にあるオライリー・ジャパンの「JavaScript」から、parseFloatという関数を発見。これは先頭にある数値のみを小数点付きで取り出してくれるメソッド。何とマニアックで何とタイムリーな。ありがたく頂戴して無事解決。

これでようやくはじめの一歩。