ビジネスエアポート各店舗の営業時間と会議室

ビジネスエアポートの営業時間と会議室料金をまとめ(自分用)

日祝もやってほしい&会議室はあと二割ぐらい値段が下がると使い勝手がいいんですけどね。

 

店名 営業時間 休館日 会議室(¥/時)
青山 平日 8:00~21:00

日曜祝日 10:00〜18:00

土曜、年末年始 8名 ¥3,500
16名 ¥7,000
6名 ¥3,500
4名 ¥3,150
品川 平日 8:00~20:00 土日、祝日、年末年始 8名 ¥7,000
4名 ¥2,800
東京(パレス横) 平日 8:00~21:00
日曜祝日 10:00〜18:00
土曜、年末年始 6名 ¥ ¥3,500
※ 机が狭い
丸の内 平日 8:00~20:00 土日、祝日、年末年始 8名 ¥5,600
8名 ¥4,200
六本木 平日 8:00~20:00
土曜 10:00〜18:00
日曜祝日 10名 ¥9,100
6名 ¥4,900
8名 ¥7,000
神田 平日 8:00~20:00
土曜 10:00〜18:00
日曜祝日  8名 ¥5,600
6名 ¥4,900
新橋 平日 8:00〜21:00
土曜 10:00~18:00
日曜祝日 8名 ¥7,700
6名 ¥6,300
6名 ¥4,900
8名 ¥5,600
渋谷 平日 8:00~20:00
土曜 10:00〜18:00
日曜祝日、年末年始 8名 ¥4,900
8名 ¥4,900
6名 ¥4,200

 

 

投資効率がすこぶる良かった英語学習

ソフトウェア開発やら海外マーケティングを進める上での最大のネックは、英語です。

コニャックなどのカジュアルに利用できる翻訳サービスもかなり増えてはきていますが、翻訳までのタイムラグや翻訳結果の検証コスト(ほんとに合ってるのかなーこの翻訳?をどう確認するか?!)などを考えると、どうしてもボトルネックとしての英語が浮かび上がってきてしまいます。

革新的な翻訳システムも待たれるところですが、自分の思考回路と同等スピードのアウトプット力と翻訳結果の検証コストが0にならない限り、今後もビジネスの現場で使えるものとしては広がらないでしょう。(AIだって所詮は99%が限界で最後の担保は人間の脳が行う必要がある)

ではどうするか、「これはもう自分の脳みそに英語回路を作るしかない」わけで、人生何度目かの英語学習ウェーブがやってきた私は「勉強する英語」は卒業し「活用する英語」のステージに登るべく学習を再開したのでした。

結果的には最高の自己投資といっても過言ではない果実を得ることができました。TOEICは500点台から850点まで上がり英検準一級などの資格面はもとより、ソフトウェア分野や投資分野での情報を直接得ることで、情報鮮度が桁違いにあがり、海外旅行もかなーり楽しくなったのでした。

みっちりした学習期間は2年弱ぐらいかけましたが、十分に投資回収できたと思っています。

特に最初の半年間は単語に集中しました。

単語の暗記というと「単語は基礎的なものさえ覚えれば、あとは前後の文脈で推測すればよい」ということが言われたりしますが、これは通訳級の超上級者の言葉であって、我々初学者には残念ながらあてはまりません。

なぜなら、学習の効率化を図る上では単語の意味を推測している時間が無駄になるからです。また、例えば文法を学習する目的なのにいちいち例文に出てきた単語に脳がひっかかっていては、本来鍛えるべき分野に集中できるはずがありません。

ですので単語の暗記は野球を始めるのにバットとグローブを揃えるのと同じで、最低限の基礎をつくる作業だと思って、コツコツではなく一気に単語のベースを作るべきなのです。俗に言うボキャブラリービルディングです。

私はこのボキャビルを毎日30分ひたすらiKnow!で単語を脳にインストールすることに集中しました。単語学習を30分毎日続けるのは正直苦痛以外なにものでもありませんが、iKnow!というアプリはこの苦痛をかなり低減してくれました。

iKnow! ぜひおすすめします。

whileループを使って対話式アプリを作る

書籍「退屈なことはPythonにやらせよう」を教本にした「投資家のためのプログラミング勉強会(投プロ)」第6回目です。

本日は、whileループ(2章7.4) を使って、対話式に処理をしてくれるアプリを作ってみます。

前回開発したアプリ「アメカブくん」は、ティッカーコードを入力すると米国のニュースサイトを検索&翻訳して表示してくれるお便利アプリでしたが、続けてティッカーコードを入力しようとすると、いちいちアプリを起動する必要がありました。

今回はwhileループを使って、ティッカーコードを対話式に入力できるように改善していきます。

whileループは、第四回で学習したforループの親戚みたいなもので、使用頻度はforループが多いのですが、便利な機能なのでぜひ覚えておきましょう。

forループとの使い分けは、whileループは「終わりなく処理させ続けたいケースで利用する」と覚えてください。

例えば今回のように、ティッカーコードを繰り返し入力したいといったケースが該当します。またユーザーに選択メニューを表示して、そのメニューにそったプログラムを実行する(対話型アプリ)を実装する際などに利用する機能です。

ではまず最初にシンプルなwhileループから

以上のコードを実行してみましょう。

だーーーーっと同じ文が表示され続けているかと思います。

このまま放っておいても止まりことはありませんので、Ctrl + Cやcmd + Cなどで強制終了してください。(実行環境アプリそのものを終了してもよいです)

このようにwhile True: と記載すると次に書かれた処理(今回の場合はprint()関数 )を永久に繰り返すのがwhile文の機能です。while の後ろには条件を記載して、それがTrueの間中、繰り返し処理(ループ)を続けます。今回はTrueと直接記載していますので人が外側から強制的に止める必要がありました。

プログラムの世界では、プログラム自身にループを止める構造がないことを無限ループと呼びます。無限ループに一旦陥るとアプリとしては暴走状態に入ってしまい、今回のように止めるのにも一苦労といったことになります。
意図しない無限ループは、コンピュータに不要な負荷を与えることになり、通常は重篤なバグとしてみなされます。
例えばファイルを生成する処理で、無限にファイルを作成し続けてディスクが一杯になってしまったり、ウェブサイトへのアクセスが集中してサーバーをダウンさせてしまうなどです。(今回の例は print()関数のみの無限ループなので実害はありません)
このように、whileに限らずforなどのループ処理を実装する際は、無限ループに陥らないかどうか、慎重にロジックを検討する必要があります。

それでは、ループを抜ける命令 breakを使って、3回ループしたら終了するロジックに変更してみましょう。
使用するのは演算子のプラス+ (教本の1.4)と条件分岐の if (同2.7.1) です。

では先ほどのコードを改造してみましょう。(目安時間:5min)

いかがですか。

やり方はいろいろありますが私は上記のように書きました。

ループした回数を入れてる変数 countを用意し、初期値として0をセットしておきます。

whileループに入ったら、条件分岐の if でcountが3かどうかを調べます。count が3に達していたらbreakでループを抜けます。

3に達していなかったら、print()関数を呼び出し countに1を足したものを新たにcount変数にセットし、次のループ処理に入ります。

最後の表現 count = count + 1 は初めて出てきましたが、このように元の値に何かをした(今回の例では1を足した)結果を、同じ変数にセットし直すことができます。これによりcountという変数を使いまわすことができるのです。

変数は値を入れる箱でしたね。変数についは教本の1.4を参照してください。

whileを使ってよく実装するのが対話式アプリを作るときです。

通常のアプリは一度実行すると自動的に終了してしまいますが、前回作成したアメカブのように、いちいちプログラムを終了せずに、繰り返しティッカーコードを入力したい場合に対話式アプリを実装します。

例えばこのようなプログラムを実行させてみましょう。

前回学んだ辞書型変数 us_stocks で米国株のティッカーと会社名を定義しています。

さらにwhileループを使って、入力したティッカーに対する会社名を表示するアプリとなっています。
このように、ユーザーと対話式で繰り返し処理を行わせたい場合にwhileループがよく使われます。

ついでにプログラムを終了する処理も追加してみましょう。

ティッカーコードに”end”を入れるとbreakしてアプリが終了する処理を追加してみてください。

では、ここまでの知識を使って、前回開発したアメカブくんをバージョンアップしましょう。

ティッカーコードを繰り返し入力できるような対話式の作りに変更してみてください。

またティッカーコードに”end”が入力されたら終了する機能もつけてみましょう。(目安時間:10分)

いかがでしたか?

どんなに複雑なプログラムも結局は「ユーザの何らかの入力に従って処理を行い、それを条件分岐しながら繰り返す」ということを行なっています。ですので今回の構造を理解できれば、プログラミングのベースはマスターといっても過言ではありません。

アメカブくんを自分なりにいろいろ改造するなりして、繰り返しと条件分岐をじっくり理解してきましょう。

 


退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング 退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

こちらの本を教本にした「投資家のためのプログラミング勉強会(投プロ)」を主宰しています。
そもそもプログラミングとはなんぞや、Pythonを実行させる環境をどのように用意するか、などプログラミングにおける超基本的な内容が、我々のような非ソフトウェアエンジニア向けに分かりやすく記載されています。はじめの一歩にはこれ以上ない教材です(^^)

目次: 投資家のためのプログラミング勉強会 #投プロ会

米国の注目株 MSFT / AMZN / TEAM / MO / PM

私が現在保有している米国株は、MSFT / AMZN / TEAM / MO / PM あたりです。

中でも注目株はオーストラリアのベンチャー企業アトラシアン(TEAM)です。この会社はソフトウェア開発者向けに様々なサービスを提供しており「自身がソフトウェア企業でその顧客もソフトウェア企業」という餅は餅屋的ビジネスが大好きな私としては、昨今の業績向上と相まって買い増しへの欲求がフツフツきています。

自身が欲しいものを作り、その結果として収益をあげるというのはひとつの幸せな形ですね。

かつてMicrosoftも”Eating our own Dogfood”といって自社ソフトを自部門でも使って改善していくようなことを言っています。

In 1988, Microsoft manager Paul Maritz sent Brian Valentine, test manager for Microsoft LAN Manager, an email titled “Eating our own Dogfood”, challenging him to increase internal usage of the company’s product. From there, the usage of the term spread through the company. (Wikipedia)

ちなみにこれはdogfoodingという言葉で特にソフトウェア業界では有名な言葉になっています。

自社で開発しているソフトを自社の業務でも使うことは一見当たり前のようなことですが、顧客に販売している商品を自社で使っていない企業って意外と多くあります。

アトラシアンのティッカー名:TEAMも企業姿勢を表していていい感じです。

ちなみにAMZNはもちろんDogfoodingを実践しており、AWSが自社のECサイトの運用技術を転用することから始まったビジネスなのは有名な話です。

AMZNは、数年前からEC企業というよりもAWSを核とした世界のインフラ企業という位置付けで投資を開始しました。

実際にAWSのサービスに触れてEC2やS3の技術に感動してしまったのがそもそもの始まりです。そのころから米国の国防省などの公的機関でもAWSが採用され始め、金融業界などの高度セキュリティが求められる顧客への浸透も進み、電気やガスなどと同等の新しい分野のインフラ企業としての地位を築いていきました。

一時期は私の全ポートフォリオの半分ほどをAMZNが占めてしまいましたが、2018年中頃の大きな下げの際に日和ってしまい一部を売却し、2018年末の暴落時には、配当銘柄へのシフトと合わせてほとんど売却しました。。。びびったトレーディングの割にはまぁまぁラッキーな売却タイミングだったのかもしれません。

ここ最近ではほとんどのアナリストからAWSの利益や成長性が言及されつつあるので、成長エンジンであるAWSへの期待値は相当程度織り込まれてきているともいえそうです。

MSFTはAWSの対抗馬としてAzure(あじゅーる、と読みます)の台頭が大きいです。AmazonやGoogleと比較してかなり出遅れたクラウド事業もOffice365を武器にいまではトップランナーの位置にきています。株価もここ2年ほど盛り上がっており、このタイミングでインするのは怖い気もしましたが、Azureの今後の伸び率についてははAWSよりも高いと期待してAMZNからスイッチしています。配当の伸び次第で長期保有を検討しますがIT業界は全般的にクラウドの次のビジネスが見えないこともあり不透明感がありますね。

ちなみにMSFTの日本法人は、AWSと違って外資のにほいが薄く、和風な対応が受けているようです。日本のほとんどの大企業におけるIT部門は時に官僚以上におそろしく保守的なので、経営から「クラウドを使え」と迫られてもリスクを重視しすぎてなかなかAWSを採用できたりしません。(AMZNは日本でもド外資の特徴よろしく和風でウェットな対応はしません。ですので主な顧客は日本のスタートアップや大企業の中でも超大企業のキャッシュを沢山払ってくれるところがほとんどではないでしょうか。これはこれで一概に悪いことではありませんが。)

MSFTは日本法人の社名を「日本マイクロソフト」にしているだけあってか、いろいろと柔軟に旧来型の日本企業へも導入が進んでいるようです。このあたりの対応も日本でAzureの存在感が増しているところにつながっていると考えます。日本以外の地域は正直わかりませんが、営業力という意味では昔からすごい企業だと思います。そこが技術者には嫌われる所以ですがw

とはいえここ最近ではGithubの買収とプライベートリポジトリの無料解放、プログラミングエディタVSCodeの高い評判など、開発者目線での投資も目立つことから、もう一段の成長も期待できますね。

残りの銘柄MOとPMはタバコメーカーです、そうです、配当狙いです (^^;)

私自身はずいぶん前にタバコをやめてから、エレベータ内のタバコの残り臭だけでも「オエー」となってしまう超嫌煙家です(^^;)。タバコ株を買うまではいつも「JTなんて早く潰れろよ..」と呪いをかけていた人間なのですが、ホルダーになってからは明らかに意識が変わりました。

タバコメーカーが仮に潰れたとしても、あの強烈な依存性を知る身としては、地球上からタバコがなくなることは無いと断言できます。

禁酒法時代と同じく闇タバコは生き残り、今より悪い方向に進んでしまうでしょう。そうならないためにも、株式を通じてタバコ会社に資本参加し、株主として、経営監視や分煙政策の推進などを求めつつ、日頃被っている多少の迷惑料として末長く配当を得る、という大人の考えに至ったのでありました。

指定したティッカーの米国株関連ニュースを翻訳して表示する

書籍「退屈なことはPythonにやらせよう」を教本にした「投資家のためのプログラミング勉強会(投プロ)」第5回目です。第1回〜第4回までは以下の項目を学びながら、指定した銘柄コードの関連サイトを一気に開いてくれる「一発くん」アプリを開発しました。

第1回:変数とは
第2回:文字列の結合、print()関数、input()関数
第3回:条件分岐
第4回:リスト、forループ

本日は、教本の第1部5章に沿って下記の内容を学んでいきましょう。

  • 辞書型変数(キーと値をセットで管理できる変数型)
  • 関数とは(組み込み関数と独自関数)

今回から「一発くん」とは別の新しいアプリを作っていきます。機能としては、自分がウォッチしたい米国株の様々な情報を自動的に収集をしてくれるアプリです。アプリ名は「アメカブくん」です(^^)

アメカブくん第一弾は、指定したティッカーに関する米国サイトのニュースを収集すると同時に翻訳してくれるアプリを作っていきます。イメージはこんな感じです。(最後のニュースが非常に気になる...)

辞書型はその名の通り、キーと対になる値を定義できる型です。

例えば「銘柄コード」と「会社名」のように値をセットで管理したいケースにはこの辞書型を使うのが常道です。

実際の記載はこのように書きます。

{キー:値, キー:値 …. } というようにキーと値をコロンで対にして全体を波括弧{}で囲みます。

これで、変数stockに銘柄コードと会社名をセットにした変数のできあがりです。まさに辞書ですね。

さっそく試してみましょう。キーに対する値を得るにはget()関数を使います。

いかがでしたか?キーに対する値が表示されましたか?

ちなみにキーの部分に変数stockの中に存在しないキーをいれてget()を呼び出したらどうなるでしょうか?

さらに、stock変数の宣言時に、キーを重複して定義したらどのようになりましたか?

このように、色々と試して動きを見ながら辞書型の特徴を掴んでいきましょう。

プログラミングは書いてあることをなぞるだけではなく、手を動かして色々試してみることが理解への早道です!
プログラミングはエラーになってもパソコンが壊れるわけではないので、安心してどんどん間違えましょう。
トライアンドエラーが多いほど、つまり間違える数が多いほど学習が進んでいる証拠です。
そしてプログラミングの間違いは、一度直せば二度と同じことを繰り返しません。
当たり前ですがプログラミングは書いた通りにしか動きませんので、人間のように指示した内容と異なる動きはしません。
これは修正後の確認コストがゼロであることを意味しており、ものすごいメリットです。

もうひとつ、辞書型で使える関数keys()をみていきましょう。

keys()関数は辞書型変数のキーの全てをリスト型で返してくれる関数です。

上記は変数keys に辞書型stockに存在する全てのキーをセットしています。

変数keysはリスト型なので、全てのキーを表示するには以下のように書くのでしたね。

これがわからない場合は前回の復習をしてくださいね。教本では4.1のリストの項目を見てください。

ちなみに前回学習したリストは角カッコ[]で囲むのでした。

辞書型もリストと同様に複数の値をセットできますが、使い方はまったく異なりますね。

これらの違いは自分で説明できるようにしておきましょう。

また、リストは文字列だけではなく「辞書型変数」を値としてセットできますよ。

例えば、東証一部の銘柄で、金融セクター、製造セクター、サービスセクターの銘柄を定義するとこんな感じです。

辞書を値にもつリスト変数 tosho を定義しました。

ではこの中身を表示してみましょう。リストの値は添字でアクセスできるのでしたね。

辞書型変数 service の中身を表示します。さらに service のキー”2181″を指定するとそれと対になっている企業名を表示します。

辞書型を値としてもつリストは慣れるまで頭がこんがらがるかもしれません。今回完全に理解できなくても徐々に慣れていきましょう。

さて、ここまで学習できたところで冒頭の「アメカブ」くんを開発していきましょう。

キーボードからティッカーコードを入力すると、銘柄名で米国のGoogle Newsを検索し、関連ニュースを取得します。さらに英語を日本語に翻訳して表示するアプリです。うーん、なかなか便利そうですね。

ニュースの検索や翻訳は中級編の範囲なのでここでは詳しく説明しませんが、プログラミングでこんなこともできるんだー、と知ってもらえればOKです。

以下は私の監視銘柄の一部です。
PEP / JNJ / PG / GIS / KO / MO / PM / BUD / CL / UL / XOM / GILD / T / HRL / IBM / XOM / V / OKTA / TEAM

これらを辞書型としてリスト変数us_stocksに入れていきましょう。キーはティッカー、値は会社名です。

では最初に、復習を兼ねて、前回作製した「一発くん」と同様に、キーボードからティッカーを入力をして、それが上記のリストにあるかどうかをチェックするロジックを作ってみましょう。入力したティッカーがリストにあれば「有効なティッカーです」なければ「有効なティッカーを入れてください」と表示するアプリにしてみましょう。

前回はforループでリスト内の銘柄コードと比較するチェックするロジックでした。

今回はリストの中に辞書型が入っていますので、キーボードからの入力値と辞書型のキーの値を比較する必要があります。

キーの値を全て取り出すにはkeys()という関数を使うのでした。では書いてみましょう(目安時間:15分)

さてどうでしたか? keys()関数はキーのリストを返しますので、forループを使って順番にそれと比較することでチェックできますね。

実は、辞書のキーの中にある値があるかをチェックするにはもっと簡単な方法があります。

以上たったの5行で同じことができてしまいます。随分すっきりしました。

” 文字列 in リスト型 変数 ” とすることで文字列がリスト型変数に含まれるかをTrue or Falseで返してくれるのです。

ここでひとつ関数について第1回のおさらいを兼ねて学習しましょう。

関数とはつまり中学生で習ったf(x) = a x + bの世界です。これだけで頭がクラクラしてしまう方もいるかもしれませんが、要するにxという値を入れた結果を返してくれるファンクションが関数です。

プログラミングの世界でも同じ関数という概念があります。

そして関数はあらかじめPythonによって用意された関数(組み込み関数)とプログラミングで独自に作成した関数があります。
前者はこれまで習ったlen()関数やget()関数です。(関数については教本の3.1も参照してみてください)

本日は以下の独自関数を作成しますが、中身については中級編で解説しますので、今日は何も考えずコピペしておけば大丈夫です。

  • get_stock_news() :銘柄名を入れると、それに関連する英語のニュースをリストで返す関数
  • translate_en_jp() :英文を入れると、それを日本語に翻訳して返す関数

なお、この関数を使うにあたっては、下記のライブラリをインポートしておく必要もありますので合わせてやっておきましょう。
> pip install requests
> pip install beautifulsoup4

これあっさり書いてしまいましたが、インポートのやり方はそれぞれの開発環境によって異なります。当勉強会では開発環境はPyCharmというフリーソフトを推奨しています。PyCharm自体のインストール方法やライブラリのインポート方法はググると沢山出てきますのでそちらを参照してください。リアル勉強会の場では環境セットアップからサポートもしたいと考えています。

ではさっそく2つの関数を使ってみましょう。

どうですか?

このget_stock_news()関数はGoogle Newsにアクセスして会社名で検索したニュースをリスト型変数に入れて返してくれる関数というわけです。

もう一つの関数translate_en_jp()はどうでしょうか?

newsはリスト型変数なのでそれをforループで取り出しながらこの関数で翻訳した結果を表示しています。下記は”TEAM”とキーボードから入れた場合の表示です。

アトラシアンは今後数週間でより高く指される
これが2月に買うべき私のトップストックです
ソフトウェア会社アトラシアンがインド事業を強化したいのはなぜですか
アトラシアン:美しいビジネスだが過大評価 – アトラシアン(ナスダック:チーム)
停止し、コラボレーションし、そして耳を傾けてください:マイクロソフトチームはアトラシアンの輝きを得ます
アトラシアン、クラウドターゲティングソフトウェア、Tech Teamsに移行
Atlassian:これらのレベルではまだ高価そう – Atlassian(NASDAQ:TEAM)
アトラシアンの株価は、収益と収益の最高見通しを受けて急上昇
Atlassian Corporation Plc – Cla – Consenusは9.4%の上昇見込みを示しています
アトラシアン:史上最高値を記録したリスキー

日本語が少々怪しいですが翻訳としてなかなかではないでしょうか?この関数はget_stock_news()関数で取得したニュースをGoogleの翻訳に渡して日本語の結果を返してくれています。

それでは2つの関数の動きを理解したところで、キーボードから入力したティッカーに関連するニュースを表示するアプリを作ってみましょう。

先ほど作製したティッカーが有効かをチェックするコードに2つの関数を追加してアメカブくんを仕上げていきましょう。

  1. ティッカーをキーボードで入力する
  2. ティッカーが有効かどうかをチェックする
  3. ティッカーと対になっている会社名を変数companyにセットする
  4. 変数companyをget_stock_news()関数に入れて、リスト変数newsに返り値をセットする
  5. リスト変数newsをforループで取り出してtranslate_en_jp()関数で翻訳した結果を表示する

プログラムの流れとしては以上となります。それでは Let’s coding time ♬ (目安時間:20分)
(最初にget_stock_news()関数とtranslate_en_jp()関数の2つをコピペしてから上記1〜5を実装してみてください)

どうでしょうか?ちゃんと動きましたか?

ここまでできるとかなりアプリっぽいことができるようになりました。

もちろん、ご自分の監視銘柄をリストに追加すれば、どんどん拡張できます。自分が決めたキーワードを含むかどうかをチェックする機構をいれても面白いかもしれませんね。

ちなみにこのTwitter botはこのようなプログラミングを駆使して作っています。

それでは本日はこのあたりで終わります!

次回は学習内容

  • whileループで対話型アプリをつくる
  • ファイル操作の基礎(HTMLファイルの作製)

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング 退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

こちらの本を教本にした「投資家のためのプログラミング勉強会(投プロ)」を主宰しています。
そもそもプログラミングとはなんぞや、Pythonを実行させる環境をどのように用意するか、などプログラミングにおける超基本的な内容が、我々のような非ソフトウェアエンジニア向けに分かりやすく記載されています。はじめの一歩にはこれ以上ない教材です(^^)

入力したコードが東証銘柄かチェックする

書籍「退屈なことはPythonにやらせよう」を教本にした「投資家のためのプログラミング勉強会(投プロ)」第4回目です。今回は、第1部4章に沿って下記の内容を学んでいきましょう。

  • リスト(大量の変数を簡単に扱う方法)
  • forループ(繰り返し処理)

「リスト」と「forループ」および前回学習した「条件分岐」が理解できれば、プログラミングにおけるベース部分をマスターしたと言っても過言ではありません。じっくり習得していきましょう。

前回作成した、複数ウェブサイトを一気にオープンするアプリ「一発くん」は、入力した銘柄コードが4文字かどうかをif文の条件分岐でチェックする機構を実装しました(プログラムコードを書いてある機能を実現することを「実装する」と言ったりします)。

今回はさらに「入力した銘柄コードが東証一部銘柄であるかないか」をチェックできるロジックに変更していきます。これによりさらに厳密に入力値のチェックが行えますので、アプリらしくなってくると思います。

ではまずは前回のおさらいから。

上記ソースでは、キーボードから入力した銘柄コードをinput()関数で変数 stock_code に入れ、さらに stock_code の文字列長をlen()関数で取得して変数 m に入れています。最後に m と 数値の4 を比較した結果(TrueかFalseでしたね)をhantei に入れ、if文の条件分岐でTrueかFalseの判定結果で処理を分岐しています。

今回は、入力された銘柄コードを、文字列長ではなく、実在する東証一部銘柄(2000以上あるはずです)に合致するかどうか、というチェック方式に変更してみましょう。

「銘柄コード」のような大量の塊(かたまり)である変数を扱う際は「リスト(配列)」に入れるのが常道手段です。

例えば、複数の銘柄コードをリストではなく別々の変数にセットしようとすると、このように銘柄コードの種類分の変数が必要となります。(私の好きな高配当株を例にとります(^^) )

このままでは銘柄が増えるたびにズラーっと変数の定義が並んでソースコードの可読性が落ちてしまいます。しかも、どの変数を使えばいいかをいちいち大量の変数の中から探す必要が出てきます。

このように「種類が同じで何パターンもある変数を定義する」ときにはリスト型の出番となります。

リストは変数の箱が鎖のようにつがったイメージです。ひとつの変数を定義すれば、それにぶら下がる複数の値を保持できます。(「変数」の考え方は第1回を参照してください)

stock_codesという一つの変数で、上記のように複数の値を定義できました。全体を中括弧で囲み、それぞれの値をカンマで区切るのがリストの文法となります。

銘柄コードの他にも、例えば銀行名や動物の種類など「種類が同じで何パターンもある変数を定義する」には、いちいち変数を定義するのではなくこのようにリスト型を使います。

リストの中の値は添字番号で呼び出します。
stock_codes[0]であれば1番目の値を呼び出すことができ、stock_code[2]は3番目の値となります。

では実際に表示してみましょう

添字で指定した銘柄コードは表示されましたか?

0や3以外にも色々な添字を使ってどのような値が返ってくるか試してみてください。

いかがでしたか?

-2の表示結果は「なるほどーっ」といった感じだったと思います。これに限らずですが、Pythonは直感的な理解のために、あたかも英文法のように分かりやすい文法が設計されています。

なお、リストの添字はゼロから始まることに注意してください。Pythonに限らずプログラミング言語の世界では、数字は1ではなく0から始まるのが普通です。

さてここで一つ質問です。このリストに入っている要素の数を知るにはどうしたらいいでしょうか?

前回学習したlen()関数を覚えていますか?

これは変数 company の文字列長を取得している例です。

同様に、len()関数にリスト変数を入れると、今度はそのリストの長さ(要素の数)を返してくれるのです。

無事に6が表示されましたか? さらに理解を深めるために、上記の配列の要素の数を増減させ、len()関数がどのような値を返すか試してみてください。(例えば空のリストを入れたらどうなりますか?)

ここまでがリストに関する解説です。詳細は第1部4章を読んでみてくださいね。

 

それではいよいよ実際に東証一部の銘柄をリストで定義してみましょう。

銘柄コードのリストは中級編で学ぶ「スクレイピング」という技術で東証のウェブサイトからサクッと取得でますが、今回は取得済みの下記データをご自分のソースコードにコピペしてください。

それでは、さっそく先ほどのlen()関数で要素数を数えてみましょう。

2117と表示されましたか?

そうです、東証一部には2117種類の銘柄があるということが分かりました。(上記の配列の定義は表記上 「….」 で省略していますが、実際には省略せずに最後の要素までコピペしてください)

ここで話は少々逸れますが、同様なことを手動でしようとすると「東証のウェブサイトを検索して訪問し、銘柄コードの一覧画面を目でカウントするか、エクセルにコピペする」なんてことが必要となります。

これがプログラミングなら、たった三行で同等の結果を得られるわけで、プログラミングの凄さここにありなのです。さらにこのすぐ後で学ぶループを使えば2117種類の銘柄との付け合わせ作業も一瞬で終わらすことができます。

しかも、一度コードを書きさえすれば、半年後や一年後でもこのコードを実行するだけで、最新の銘柄情報をいつでも同じ品質で取得できてしまうのです。

プログラミングの素晴らしさの一端がお分かりになるかと思います。

さて、「キーボードから入力した文字列と、あらかじめ取得していた2117種の東証一部銘柄コードとを一つずつ比較する」のが今回のゴールでした。

上記を実現するために、これまでの知識だけでコードを書くとすると、このようになります。

配列にセットされている2117種類の証券コードを、このように一つずつ呼び出して比較するコードを書こうとすると目眩がしてきますね...でも安心してください、もちろんプログラミングの世界ではこんな書き方はしません。

このような大量の繰り返し処理を行う際の強力な機能が「forループ」です。

forループは様々な繰り返し処理で活用できる機能ですが、今回のようにリストを扱う際には必ずと言っていいほど使われますので、セットで覚えておきましょう。

forループの動きを理解するために、リストにセットされている全ての銘柄コードをprint()で表示するプログラムを書いてみましょう。

forループを使うことによって、リスト変数 stock_codes に定義されている各要素を、変数 c に順番にセットし後続の処理( print(c) )を行い、それをリストの要素数分(2117回)繰り返すことができます。書き手はリストの中身がいくつあるかなどを意識する必要はなく、勝手にforループが処理を回してくれます。便利ですね。

ちなみに英単語のforには「時間や距離の範囲」という意味があります。

working here for two years

cooking for a few minutes

forループのforはまさにこの感覚だと思います。stock_codesの中身(in)の範囲で繰り返し処理を行いなさい、という命令を意味しているわけです。

リスト変数とforループを学んだところで、「一発くん」のバージョンアップに取り掛かりしょう。
前回までは「入力された証券コードが4桁以外ならNG」とするチェック機構でしたが、これを「実在する東証一部の銘柄コードならウェブサイトを開く」というようなロジックに改善します。

みなさんが書いたコードはどのようになりましたか?

上記は答えの一例ですが、入力された銘柄コードとリスト内の要素と比較して、それらが一致したら該当のウェブサイトを開くアプリに改良されました。

ちなみにこれだと入力した銘柄が東証一部の銘柄リストに該当しない場合NGメッセージが出ませんので、さらに以下のように改良します。

breakはforループの途中で抜ける命令です。flagという変数を設けることで、一度もリストの値と合致しなかった場合にはNGメッセージを出力しています。これも条件分岐ifの使い方の一例です。

このように、プログラミングは「条件分岐」と「ループ」を何度も繰り返しながら、目的の値を探したり、分析を行っていきます。この考え方はぜひ頭にいれておいてください。

第1回から今回までの内容を習得すれば、これまで手動で行なっていた様々な処理をプログラミングで自動化できることがお分かりになると思います。そして、ご自身が普段何気なく行なっているPC上での繰り返し作業を、プログラミングに置き換えられるようなアイデアがきっと出てくるはずです。

もちろんまだまだ学ぶべきことがたくさんありますが、自分が実現したいことをイメージしながら学習を進めることで、より効率的な習得ができると思います。そんな近未来を頭に描きながら引き続き学習していきましょう!

次回は、入力した銘柄コードに関連する英語ニュースを検索し、自動的に翻訳した結果を一覧表示するアプリを作っていきます。米国株の情報収集で使えるような実用性の高いアプリを作っていきましょう!

次回学習予定

  • 辞書型(第1部第5章)
  • HTTPリクエストの基礎

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

こちらの本を教本にした「投資家のためのプログラミング勉強会(投プロ)」を主宰しています。
そもそもプログラミングとはなんぞや、Pythonを実行させる環境をどのように用意するか、などプログラミングにおける超基本的な内容が、我々のような非ソフトウェアエンジニア向けに分かりやすく記載されています。はじめの一歩にはこれ以上ない教材です(^^)

入力した証券コードの妥当性をチェックする

書籍「退屈なことはPythonにやらせよう」を教本にした「投資家のためのプログラミング勉強会(投プロ)」第3回目です。

  • 第1回 複数の株情報サイトを一度に表示してみよう
    • プログラミング初めの一歩
    • 変数とは?
  • 第2回 指定した証券コードの関連サイトを表示する
    • 文字列の結合
    • print()関数でディスプレイに変数を表示する
    • input()関数でキーボードから文字を変数に入力する

今日はプログラミングの超重要要素である「条件分岐」について学びます。この条件分岐と後日学習する「ループ」を理解すると、プログラミングで実現できることが一気に拡がりますので、頑張って学んでいきましょう。(書籍では第1部2章の内容となります)

なお、投プロは現在オンラインのみでの勉強会ですが、近い将来は実際の勉強会方式でも開始します。独学ではなかなかできないプログラミングの勉強を投資家仲間とワイワイできると楽しいですよね。(平日夕方以降、五反田〜恵比寿あたりの貸会議室で行う予定です)

さて、前回は指定した証券コードの関連ウェブページを一気に開くアプリを作りました。
本日は条件分岐と文字列の長さを取得する関数を使って、クリック一発ウェブページ表示アプリ 「一発クン」のバージョンアップをしていきましょう。


こちらは前回のソースコードです。

証券コードを入力すると、その関連ページを一気に表示してくれる機能でしたが、実在しない証券コード(例えば “ABS76” など)を入力すると、「ページが存在しない」というエラーがブラウザ上に表示されてしまいます。

そこで今回は、入力した値が証券コードとして有効かどうかのチェックを行う機能を追加したいと思います。

「有効な証券コードが有効かどうか」は「入力文字が4桁の文字列かどうか」で判定します。(より厳密にチェックする場合は、実在する証券コードとの付け合わせ処理が必要ですが、これは4章の「リスト」を勉強した際に実装しますのでお楽しみに)

ある値が有効かどうかを判定するロジックは「条件分岐」という方法を使います。Pythonではifという命令で表します。もちろん英語のifです、わかりやすいですね。
使い方はこうです。
今回判定したい条件は、入力された証券コードの文字列の長さが4かどうかなので、YESならばウェブページを開き、NOならばエラーメッセージを表示するようにプログラミングしていきます。
ここで文字列の長さを計る関数 len() の登場です。
lenは()の中に長さを測りたい文字変数を入れるとその文字列長を返してくれる便利な関数です。(lenはlengthの略ですね)
では実際に使って動きを確認してみましょう。(プログラミングはこのようにとっとと自分の手を動かしていろいろ試してみることが理解への早道です!)

上記を実行すると、キーボードから入力した文字の文字数が表示されたはずです。

stock_codeという変数にキーボードから入力した文字列がセットされて、その文字列をlen関数に入れると文字列の数が変数mにセットされます。さらにprint関数にmを渡すと、その文字数が表示されるのです。

文字列長の取得方法が理解できたところでいよいよ条件分岐に進んでいきましょう。
今回判定したい条件は「mが4かどうか」ということでした。
これをPythonではこのように判定できます。

==は両側の変数が同じかどうかを判定してくれる命令です。変数に値を代入する=(イコール)とは関係ないので注意してください。==という命令だ、と覚えてください。

==の判定結果はTrueかFalseで返してくれます。(True/FalseはPythonの世界でYes/Noを表します)

では実際に判定結果を変数hanteiに入れてprint()関数で表示してみましょう。mに6を入れた場合と4を入れた場合で試してみましょう。

どうなりましたか?(読むだけではなく実際に手を動かして実行してみてくださいね!)

と表示されましたか?

=の記号が並んで表示されるので違和感があるかもしれませんが、上記の意味を押さえていれば理解できると思います。Pythonでは==の他にも下記の判定機能が用意されています。

上から「mが4でなければTrue、4ならば False(==と逆の判定をする)」「mが4より大きければTrue」「mが4より小さければTrue」という判定となります。
他にも判定機能がありますが詳細は「退屈なことはPythonにやらせよう」の2.2比較演算子を確認してみてください。

繰り返しますが、= と==は似て非なるものですので混乱しないように!

それでは今回勉強したlen関数と==を頭にいれつつ「入力された証券コードの文字列の長さが4かどうかを判定し、YESならばウェブページを開き、NOならばエラーメッセージを表示する」というように if を使って前回のソースコードを改造してみましょう。(答えを見る前に皆さんも実際に書いてみてくださいね)

どうでしょうか?できましたか??

ifの使い方で注意したい点は、
  • 条件部分にはTrueかFalseがセットされる変数を記載する
  • ifとelseのすぐ後ろにコロンが必要(これはPythonのお約束で記載しないとエラーになります)
  • ifとelseの後の処理はインデント(文字下げ)が必要(これもPythonのお約束)
です。特に後の二つは忘れるとハマりやすいので注意しましょう。ifの詳細は「退屈なことはPythonにやらせよう」の2.7.1も参照してください。
なお条件式は下記のような記載も可能です。

ifの条件部分にはTrueかFalseが来さえすれば、このように様々な方法で記載できます。

本日はここまでです。
条件分岐は、
  • 株価が1,200円を超えたら自分にメール通知する
  • 損失が100,000円を超えたらツイッターに「うぎゃー!」っとメンションする

などなどプログラミングで実現したい機能を考えた時には必ず必要な処理となりますので、しっかり勉強していきましょう!

次回は、入力された証券コードをさらに詳細にチェックできる機能を追加して、一発クンをバージョンアップしていきます。

次回の学習予定

  • forループ(2.7.7)
  • リスト(4.1)

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

こちらの本を教本にした「投資家のためのプログラミング勉強会(投プロ)」を主宰しています。

そもそもプログラミングとはなんぞや、Pythonを実行させる環境をどのように用意するか、などプログラミングにおける超基本的な内容が、我々のような非ソフトウェアエンジニア向けに分かりやすく記載されています。はじめの一歩にはこれ以上ない教材です(^^)

指定した証券コードの関連サイトを表示する

「投資家のためのプログラミング勉強会(投プロ研)」第2回目です。当勉強会は「退屈なことはPythonにやらせよう」を教本にして、我々投資家にとって必要となるプログラミング技術を習得していきます。

前回はよく見るウェブサイトをワンクリックで一気に表示する方法を学びました。本日は、証券コードがあらかじめ固定して書くのではなく、自分で自由に変更できるように改造してみましょう。

この記事で学べること

  • 文字列変数の結合
  • print()でディスプレイに文字を表示する
  • input()でキーボードから文字を変数にセットする

それではまず前回のおさらいから。

前回作成したのは、私の大好きな高配当株2914に関連する3つの情報サイトをワンクリックで開くプログラムでした。

ただ、この状態ですと、8058や8591というように他の高配当銘柄の関連サイトを見たくなった場合には、いちいちソースコードに命令文を追記する必要が出てきてしまいます。

こんな無駄な作業はもちろんノーサンキューですので、今回はより使いやすいプログラムに改造していくことにしましょう。

改造にあたっては、まずはprint()関数と文字列変数の結合を理解しましょう。

1〜3行目は、str1とstr2の変数にいれた文字列を+という「演算子」で結合しstr3の変数に入れています。文字列変数は+という演算子で結合することができるのです。(strは文字列stringの略でプログラミングでよく出てくる略称です)

一般社会での「+」は数値の計算でのみ使われるものですが、プログラミングの世界ではこのように文字列に対しても「足す」という概念を+で導入しているわけです。(プログラミング言語は日本人以外の世界中の人が使う言語なので、できるだけ直感的に理解できるように設計されています)

そして4行目のprint()関数は()の中に変数を放り込むと、その中身を表示してくれる便利な関数です。

関数とはなんぞや、ということですが、これは中学生の算数で習ったあの関数と同じく、ある値を関数に入れると計算結果を返してくれる機能(ファンクション)のことです。

print()はカッコの中にある値を入れると、コンピュータのディスプレイにその値を表示してくれる関数、という説明となります。

さて、上記ソースコードの実行結果はどのようになりましたか?(実際に手を動かして確認してくださいね)

ソースコード上では、str3という変数にstr1とstr2を結合したものを入れています。そしてprint()にstr3を放り込んでいますので、もちろんディスプレイには “abc456” と表示されているはずです。

もう一つ、input()という関数も理解しておきましょう。この関数はキーボードから入力した文字列を変数に入れてくれるファンクションを持っています。

以上を実行してみてください。

例えばオリックスの証券コード8591とエンターをキーボードで入れると、入力された証券コードが変数stock_codeにセットされ、さらにその変数stock_codeがprint()に放り込まれていますので、結果としては8591がディスプレイに表示されたと思います。

(print()とinput()の解説は「教本」の1.6.2/1.6.3もご覧ください)

では、今回学んだ「変数の結合」と「input()関数」を使って、前回作ったプログラムをより便利に作り変えたいと思います。

具体的には、固定された証券コードのページを表示するのではなく、キーボードから証券コードを入力すると、該当するウェブサイトを開いてくれるようなプログラムに改造してみましょう。(答えを見る前に皆さんも実際に書いてみてください)

いかがでしょうか?

ヤフーとカブセンサーとバフェットコードのURLの証券コードにあたる部分をstock_codeという変数に変更して、その変数部分をキーボードから指定できるように改造しました。

これにより、見たい銘柄が増えてもソースを変更することなく様々な証券コードに対応するウェブサイトを開けるプログラムとなりました。

ちなみに、冒頭に証券コードを入れるように促すメッセージを表示するprint()関数を入れると、ユーザーにとってさらに分かりやすいプログラムになりますね。

しかし、まだまだ問題もいくつかあります。

このプログラムでは、入力者がちゃんとした証券コードを入れるとは限りませんので、次回は数字4桁以外の証券コードを入れた場合に、エラーとしてチェックができるように改造していきます。

次回の学習内容

  • 条件分岐の基本
  • 文字列変数の長さを得る方法

 


退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

こちらの本を教本にした「投資家のためのプログラミング勉強会(投プロ)」を主宰しています。

そもそもプログラミングとはなんぞや、Pythonを実行させる環境をどのように用意するか、などプログラミングにおける超基本的な内容が、我々のような非ソフトウェアエンジニア向けに分かりやすく記載されています。はじめの一歩にはこれ以上ない教材です(^^)

投資家がプログラミングを学習する意味とは

私がプログラミングを勉強してきてよかったなぁと感じたことの一つは「銘柄情報の収集整理が一瞬で完了し、その後の分析作業にのみに頭を集中できるようになった」ということが挙げられます。

株式投資の売買は、自分が欲しいデータの収集/整理/記録/分析/評価、の繰り返し作業が必要ですが、これらの時間コストや作業品質のバラつきって考えてみると相当ありますよね。

  • 「様々なウェブサイトで指標値を調べる」
  • 「将来の予想配当収益をエクセルで計算する」
  • 「複数企業の増配実績をグラフで表示する」
  • 「過去3ヶ月間に出たプレスリリースを会社のHPでチェックする」
  • 「持株リストの収益を定期的に計算する」

などなど投資家の数だけ様々な情報分析を行っているわけですが、あーだこーだと調べたりしながらも結局最後は何がいいの分からなくなって「えいやっ!発注!」みたいなパターンの個人投資家さんも多いはずです。(かつての私もそうでした)

でもこれだと結局は「猿がダーツで銘柄を選ぶ」のと同じで、投資銘柄の評価プロセスが平準化ができていないために、気がつけば毎回行き当たりばったりの売買になってしまうんですね。ただでさえ再現性の確保が難しい投資活動ではじめの一歩からつまづいているわけです。

銘柄選定プロセスを平準化できない理由の一つは、調査工程のほとんどが「手作業」で行われていることが挙げられます。

情報収集において、ウェブサイトを複数回カチカチとクリックしながらデータをエクセルに転記してまとめるといった作業は「この作業そのものが大好物」な人を除けば、苦痛と時間の浪費でしかありません。
そしてこのような作業を繰り返し、同じ品質で定期的に実施し続けるのはかなり難しいことです。

しかし、自分が行いたい作業をワンクリック、もしくは毎日決まった時刻に自動的に行うことができるとすると、どんな世界が広がるでしょうか。

我々投資家はそのアウトプットを吟味することのみに自己の頭脳を集中することができるようになれるわけです。

この結果、毎回均質な情報をベースに銘柄選定が行えるようになり、投資結果の成功や失敗の評価が定量的になることで、結果として自分が納得のいく投資活動ができるようになるのです。

「プログラミング」はこれまで無用にかけていた情報収集作業をコンピュータに行わせることができる手段です。コンピュータに「こういった条件で情報を収集して、その分析結果をこのような形でアウトプットせよ!」という命令をかけることができる言語、それがプログラミングなのです。

プログラミングは英語などの外国語と同様にコンピュータと対話するための言語の一つなので、その文法を覚えさえすれば、自由自在にコンピューターを働かせることができます。(しかも人類の自然言語よりも遥かに簡単でいて、何度同じ命令をしても文句も言わず、夜中でも深夜でも、毎日いつでも無料で働いでくれます!)

つまりプログラミングは、銘柄情報の収集や分析にかけていた作業を、コンピューターに精緻かついつ何時でも実行させることができる手段なのです。さながら特定の富裕層しか雇えなかった投資分析ができる超スーパー秘書を雇うような感覚です。

プログラム言語はこれまではエンジニアリング要素が強すぎることで、我々のような一般人が扱うには敷居が高い代物として考えられてきました。しかしここ最近は、プログラミング言語そのものが進化することで学習コストが劇的に下がり、徐々にエンジニアリング以外の分野、特に金融関係などではその有用性からソフトウェアエンジニア以外の職種であるアナリストなどにも普通に使われ始めています。

我々のような非エンジニアでもかつての算盤が電卓になったときのような感覚でプログラミングを身近に活用できる環境はすでにきています。

これからの10年20年の投資生活を、これまで通り紙と算盤で過ごすのか、今後も進化し続けるソフトウェアサイエンスを活用していくのか、投資家としてどちらに価値を見出すのかは明白のはずですね!


退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

こちらの本を教本にした「投資家のためのプログラミング勉強会(投プロ)」を主宰しています。
そもそもプログラミングとはなんぞや、Pythonを実行させる環境をどのように用意するか、などプログラミングにおける超基本的な内容が、我々のような非ソフトウェアエンジニア向けに分かりやすく記載されています。はじめの一歩にはこれ以上ない教材です(^^)

Social media & sharing icons powered by UltimatelySocial