「投資家のためのプログラミング勉強会(投プロ会)」第1回目です。
投資活動において、各種データをいろいろなサイトから集めて収集、分析することはよくある光景ですね。
投資家は独自の視点で集めたデータを分析して売買を判断しているわけですが、これらのデータ集めにかかる作業は案外地道でアナログです。
ウェブサイトから経営データをエクセルにコピペして...といった作業は本来の投資活動の前準備でしかないはずなのに、実際には多くの時間をこのアナログ的作業に割いている投資家は多いはずです。
プログラミングというと「Webやスマホアプリを開発するためでしょ?投資家に必要なの?」という反応がありますが、そこまでの技術ではなく、初歩的なプログラミングスキルがあれば、投資活動に必要なデータ収集や分析を正確かつ効率的に行うことができるようになり、これまで延々と繰り返していたアナログ的作業をワンクリックで実現できるようになるわけです。
我々投資家にとって、こういったプログラミングのメリットはなんとなく理解したとしても、いざ勉強となると巷の教材やスクールは、どうしても職業エンジニアを対象にしたものがほとんどなので、我々のような非エンジニアにとって「程よい」内容の学習教材は皆無であるのが実状です。
投資家にとってデータベースの知識は必要でしょうか?ウェブサイトを構成するアーキテクチャーを理解する必要があるでしょうか?
投資活動を効率化するためだけのツール開発であればこのような知識は実はまったく必要ありません。
しかしながらプログラミングに関する情報の多くは当然職業エンジニア向けがほとんどなため、初歩的な部分はどうしても割愛する傾向があり、最初の一歩のハードルを越えるための機会に出会うことなく、やむなくスキル習得を諦めてしまうのも仕方のない話でした。
投プロ会は、このような背景のもと、投資家が必要な知識に限定したプログラミングの勉強会となっています。
投プロ会で学ぶ基本技術を習得することで、データの取得、集計、分析などを自動化し、投資家が本当に頭をひねるべき「判断」に集中できる環境を作れるようになります。
さきほど、我々投資家の目的にあった教材は皆無だと書きましたが、昨今のプログラミングの大衆化の流れを受け、少しずつ非エンジニア向けのプログラミング教材もでてきました。
その中でも我々の一番目的にあっている良書がこの「退屈なことはPythonにやらせよう」です。本の題名の通り、職業エンジニアではなく業務担当者向けのプログラミング指南書です。
本勉強ではこちらの本を教書として、投資家に必要なプログラミング技術を学んでいきます。
自分が気になっている銘柄を調べる時に、株価は「ヤフーファイナンス」各種指標は「株センサー」財務情報の詳細は「バフェットコード」なんて感じで複数のウェブサイトを渡り歩くことってよくありますよね。
ただ、あらかじめ決まったサイトを巡ることが分かっていれば、いちいちグーグルでサイトを検索したり何度もポチポチとブックマークをクリックするのは無駄とも言えます。
プログラミングができると、このようなルーティンワークを最小限の労力で実現できるようになります。
複数のサイトをクリック一発で起動させるプログラムは以下のように書けば実現できます。
1 2 3 4 5 6 7 8 9 |
import subprocess yahoo_url = "https://stocks.finance.yahoo.co.jp/stocks/chart/?code=2914.T&ct=b" kabusensor_url = "http://kabusensor.com/brand/?code=2914" buffetcode_url = "https://www.buffett-code.com/company/2914" subprocess.Popen(['open', '/Applications/Google Chrome.app', yahoo_url]) subprocess.Popen(['open', '/Applications/Google Chrome.app', kabusensor_url]) subprocess.Popen(['open', '/Applications/Google Chrome.app', buffetcode_url]) |
このプログラムを実行すると「ヤフーファイナンス」「株センサー」「バフェットコード」の2914(JT)のページが一度に表示されます。(実際にはここに書くべきな色々なお作法はありますが、我々が目指すのは職業プログラマではないので「動けばオッケー」精神でいきましょう)
さて、このコードの解説をしていきます。
1行目の import subprocess はChromeを起動するためのおまじないです。importについては第2章で出てきますので今は無視してもらってOKです。
3〜4行目の内容を理解するには「変数」という概念を理解する必要があります。変数とは今回のようにURLのような文字列を代入することができる箱のことです。
このように変数という箱を用意することで、この後のコードでその箱の値を呼び出すことができます。(変数についての詳細は教本の1.4に分かりやすく解説されていますので参照ください)
次に、6〜8行目は、Chromeを起動して指定されたURLを開く命令を呼び出しています。
1 |
subprocess.Popen('open', '/Applications/Google Chrome.app', yahoo_url) |
上記では、Google Chrome.appというアプリケーションをyahoo_urlという変数に入っている値(“https://stocks…..”)で開く、という命令となります。後ろの変数を株センサーやバフェットコードの変数に切り替えることで、最終的には3つのURLを開くプログラムとなっています。
ちなみに4番目にヤフーファイナンスの掲示板も開きたければ、そのURLを指定すればOKです。こんな感じで追記しましょう。
1 2 3 4 5 6 7 8 9 10 11 |
import subprocess yahoo_url = "https://stocks.finance.yahoo.co.jp/stocks/chart/?code=2914.T&ct=b" kabusensor_url = "http://kabusensor.com/brand/?code=2914" buffetcode_url = "https://www.buffett-code.com/company/2914" yahoo_keijiban_url = "https://textream.yahoo.co.jp/message/1002914/a3ja3t" subprocess.Popen('open', '/Applications/Google Chrome.app', yahoo_url) subprocess.Popen('open', '/Applications/Google Chrome.app', kabusensor_url) subprocess.Popen('open', '/Applications/Google Chrome.app', buffetcode_url) subprocess.Popen('open', '/Applications/Google Chrome.app', yahoo_keijiban_url) |
このように、書いてあるコードが完全にはわからなくても「なんとなくここを変えるとこう動きそうだな」という箇所を見つけて自分で改造していくのはプログラミング理解への早道です。
参考書のコードをそのまま書き写しているだけでなタイピング練習しているだけになりがちですし、何より楽しくないですよね。
ということで、みなさんが普段よく見るサイトのURLをこのコードに追加して実行してみましょう。
狙い通り、ワンクリックだけでWebページを開けるようになりましたか?
(このソースコードはMac OSを前提とした記述になってます。Windowsの場合は
subprocess.Popen(‘open’, ‘/Applications/Google Chrome.app’, yahoo_url)
の箇所を
subprocess.Popen(‘C:\Program Files (x86)\Google\Chrome\Application\chrome.exe‘, yahoo_url)
などブラウザのexeファイルのフルパスを指定してみてください。(この部分の詳細は教本の15.8も参照してください)
本日はここまでです。
第2回目以降はこのアプリをどんどん改造していって便利ツールに育てていきますのでお楽しみに!
こちらの本を教本にした「投資家のためのプログラミング勉強会(投プロ)」を主宰しています。
そもそもプログラミングとはなんぞや、Pythonを実行させる環境をどのように用意するか、などプログラミングにおける超基本的な内容が、我々のような非ソフトウェアエンジニア向けに分かりやすく記載されています。はじめの一歩にはこれ以上ない教材です(^^)