日々ブログ

当サイトは、アフィリエイトプログラムにより商品をご紹介しています

【プログラミングのお話】GMO FXで為替価格を取得する(python)

最近知ったのですが、GMOがFXの価格取得APIを公開していたので早速使ってみました。

OWANDA JAPANがAPIでは先行

余談になりますが、今まではOWANDA 証券というアメリカのFX会社がAPIを公開してたんですが、月間で10万円くらい取引していないと使えなかったりと制限があったんですよね。 なので、口座開設してから使えるようになるまで数ヶ月かかったりと正直使い勝手が悪い。 GMOは公開してすぐに使えるので、かなり便利です。

早速価格を取得してみる

公式ドキュメントにかかれている通りですが、requestsのモジュールでURLにGETリクエストを送信するだけです。

import requests
import json

endPoint = 'https://forex-api.coin.z.com/public'
path     = '/v1/ticker'

response = requests.get(endPoint + path)
print(json.dumps(response.json(), indent=2))

実行すると、取引できる通貨の価格がjson形式で返ってきます。
これ以上無いというくらい扱いやすいAPIですね。
python だけでなく、javascriptHaskellまで取得方法が公開されているので、お好きな言語で自由に注文アプリが作れそうです。

ドルについて保存してみる

これだけだと物足りないので、1分ごとに保存してみます。
取得した保存結果は日かつ1時間ごとにフォルダ分けします。
記事を書いときながらなんですが、サーバーは共有物なのでむやみに負荷をかけるようなAPIの使い方はせず、マナーよくご使用ください。

時刻ごとに保存フォルダを作成するので、フォルダ名は下のような感じ。

import datetime

# 現在時刻を取得
target_time=datetime.datetime.now()

# 現在時刻から保存フォルダ名を作成            target_folder="./static/currency/"+target_time.strftime("%Y")+"/"+target_time.strftime("%m")+"/"+target_time.strftime("%d")+"/"+target_time.strftime("%H")

target_path=str(target_time.strftime('%Y%m%d%H%M%S'))+'.json'

上のフォルダがない場合は作成したいので、osモジュールでフォルダ作成

if not os.path.exists(target_folder):
                os.makedirs(target_folder)

あとは、60秒ごとに紹介したAPIを実行する処理と組み合わせるだけです。
完成形はこんな感じです。

import requests
import json

import time
import datetime
import os

if __name__=="__main__":
    endPoint = 'https://forex-api.coin.z.com/public'
    path     = '/v1/ticker'
    while(True):
        try:
            target_time=datetime.datetime.now()
            target_folder="./static/currency/"+target_time.strftime("%Y")+"/"+target_time.strftime("%m")+"/"+target_time.strftime("%d")+"/"+target_time.strftime("%H")
            if not os.path.exists(target_folder):
                os.makedirs(target_folder)
            target_path=str(target_time.strftime('%Y%m%d%H%M%S'))+'.json'
            response = requests.get(endPoint + path)
            with open(target_folder+"/"+target_path, 'w') as f:
                json.dump(response.json(),f, indent=2)
        except Exception as e:
            print(e)
    
        time.sleep(60)

基本的には標準モジュールしか使用していないので、上のコードをコピーして使えば問題ないかと。
Linux とかだとdaemon 化すれば何かエラーが起きても放っておけるようになります。

【暮らしのお話】ラゴウのガンプラを作ってみた

ガンダムSEED FREEDOM公開されましたね。 といっても、早1ヶ月ほど経ちそうですが。
最近すっかりガンプラにハマってしまいました。

原作見ながらガンプラ作るの楽しい

映画のために原作をamazon prime で見返していたのですが、ただ見かえすのもあれなのでガンプラ作りながら見てました。
作っているガンプラが作中に出てくるとテンション上がる。
懐かしさもあるし、子供のときはお金も無いので自由に買えなかったですからね。
映画公開もあって毎週色んなSEEDのガンプラが出てきてお店に通うの楽しいです。

ラゴウのガンプラ作った

近くのジョーシンで売ってたので買ってしまいました。
パッケージがカッコいい。
アニメでは5話くらいしか登場しなかったんだけど、ちゃんとガンプラ化してるんですね。

完全な素組みですが、組み立てるとこんな感じです。

アニメ観るだけでは気づかなかったんですが、ヒヅメがちゃんとあるんですね。
プラモデル作ると、こういった細かな点に気づけるのが楽しい。


四足歩行で背中にビーム砲がついているのが特徴の期待ですね。
写真で取ると、切り取りあとが結構目立つ。
肉眼だと光の加減もあってあまり目立たないんですが。
きれいに切り取れるようになりたい。

裏側はこんな感じ。
この機体ひっくり返されると何もできなくなりそう。
足ジタバタするしかないんじゃないかな。
自分の組み方が悪かったのかもしれないけど、結構足が取れやすい。
上手に組めばそうならないんだろうか。


関節部分のキャタピラで走行するポーズも取れます。

ガンプラは品薄が続いている

ガンプラですが品薄が続いているようで、なかなか買えない商品も多いんですよね。
たまたま、ジョーシンに行ったらラゴゥがあったので良かったですが、次に訪れたときにはなかったので人気なんだろうな~。
amazonで見ても、品切れみたいだから。

【プログラミングのお話】 ReactElectronboilerplateを使ってexeアプリを作ってみる

デスクトップアプリケーションを作る必要があったので、そのときの開発環境構築メモです。
boilerplateをつかってみたのですが、reactを使ってexe化するまで、10分とかからず非常に便利でしたので、その内容をまとめておこうかと思います。

boilerplate とは

boiler plateは小さな変更を加えるだけで作れるものですね。
テンプレート(template)とほとんど同じですが、テンプレートは中身をいじることを想定しているけど、boilerplateは中身はいじらず外側だけをいじればいいというニュアンスがあるらしい。
設定をいじらずに使い回せるというくらいに理解しました。

electronは自力で設定すると大変

electronを使うとwebアプリのような表示UIを搭載しつつOSのコマンドを使ったスタンドアロンアプリを作成することができます。 中身としては、chromiumとNodejsの両方を組み込んでいるわけですね。
開発環境を自作しようと思うと、chromiumとNodejsの連携を上手に設定してやる必要があるのがこれが結構面倒です。
というのも、chromiumはブラウザなのでセキュリティの関係からOSの機能だったりPC上のアクセスできるフォルダ領域に制約がかけられているのですが、これをかいくぐらないといけないんですよね。
具体的には、ipc 通信を利用してブラウザから実行できるようにするのですが、webアプリエンジニアが設定するには少々骨が折れる。
今回のboilerplateを使えばほとんど気にすることなく作れるのが個人的に好きなところです。

早速使ってみる

使い方は簡単で、githubをクローンするだけです。
今回は、windows10 のNode.jsはv20で作っていきます。

git clone --depth 1 --branch main https://github.com/electron-react-boilerplate/electron-react-boilerplate.git your-project-name
cd your-project-name
npm install

github.com

実行完了したら次のコマンドを実行したら開発環境が立ち上がります。

npm start

これだけで終わるとあまりにも寂しいので最低限の設定を書いていきたいと思います。

github情報を書き換える

デフォルトだとリモートブランチ情報がboilerplateになっています。

git remote -v

自分の新しいリモートブランチを登録するか、削除しましょう。
自分の場合は、家でお遊びで使うので削除します。

git remote remove origin

package.json周りも調整

ついでにpackage.json周りも変更しましょう。
OSSが由来なので、デフォルトはopenな記述になっています。
下図はとりあえず削除でよいでしょう

こちらも削除でしょうか。
資金集めもしているようですが、推奨の環境構築を行うとこちらの資金ファンドがデフォルトに入るのはOSSコミュニティ的に良くないのでは...

最後にexe化

exe化するのもワンコマンドです。

npm run package

初回のexe化は、必要なライブラリをダウンロードするので少々時間がかかります。

releaseフォルダ下に、インストーラー型とスタンドアロン型の2つが出来上がってます。
スタンドアロン型はこんな感じ。

このとき、webアプリ側も作成されるので、ipc通信に依存していなければそのまま流用可能です。

【投資のお話】NISAの仕組みはわかったのでどう投資すればいいか考えてみる

新NISAいよいよ始まりましたね。
新NISAについて制度は前回の記事で理解できたのですが、じゃあ実際に自分はどうするのかということについて考えてみました。
かれこれ、10年近く投資信託やらに手を出しているわけですが、こんなにもテレビなどで投資がという言葉を聞くのは初めてで、これから変化が大きそうなのでのちのちのためにも今の状況を自分なりの言葉で残したいので投稿しました。

xinformation.hatenadiary.com

年間360万円は使い切れそうにないし使う気がしない

まず、年間投資上限の360万円は使い切れる気もしないし、たぶんできたとしても使わないかな!
そもそも、そんなに余力あるなら投資よりも、実生活を豊かにするのに使った方が良い気がする。
言い方あれだけど、年を取ったあとだとお金の使い道がかなり減るだろうし。
投資は将来への不安を減らすくらいにとどめておこうかと。
そもそも資金効率を重視して投資に全振りしたところで、利益が出なければ非課税枠なんて意味無いし。 なんで貯蓄として使うのが個人的には良いのかと。

つみたては値動きに動じない精神力が必要

で、つみたてとなるとemaxisオルカンとか全米株といった投資信託を主軸にするつもりなんだけど、なかなか信用し切れない。
全米株に至っては、購入されて資金が増えてるわりに価格が上がらないし、そもそも年初に、全米株が不振なときにあまり値段が下がらなかったのが、なんだかな~。
値段が下がらなかったのはいいことなんだけど、この経済指標に沿って価格が変動します!という商品がその指標に沿って動かなかったってことは、そもそも異常なことが起きているんじゃないかと思うわけで。
ここ数年は、投資家と呼ばれる人たちがメインで投資していた状況から、新しく投資を始める人たちが多く出てくるわけで、値の動き方も変わってきそう。
新NISAの月あたり設定金額の総額が2000億円とかいう記事も出ている始末だし。
平均して月1万円積み立てた場合2000万人いるわけですから。
実際口座数だけでいえば、去年の9月に1000万以上に到達しているらしく、投資を新しく始める人が多くなりそうですね~。
この状況はチキンレースとなる日は近いのですぐに抜けられるようにしておかないと。

www.nikkei.com

https://www.jsda.or.jp/shiryoshitsu/toukei/files/nisajoukyou/nisaall.pdf

NISAが塩漬け製造工場にしかみえなくなってきた

ここまであまのじゃくをこじらせて来ると、NISAが塩漬け製造工場にしか見えなくなってくる。
NISAの最大のメリットである節税効果は利益が出てこそのもので、利益が出ない場合は損益通算ができないので通常の口座よりも分が悪い。
日経平均が最高値を記録してて、いわばここ数年で割高になったタイミングでこの長期投資前提の優遇制度を押し出してくるのはちょっとタイミング的に不自然な気がする。
去年くらいにバブル期に投資した株やらが30年の年月を経て、元の価格に戻って騒いでいたのを見ると、次は自分たちが塩漬け前提の投資商品を購入して、30年後に過去の自分の行動を無理くり正当化している姿しか見えんのよな~。
長期投資は開始タイミングと積立金額くらいしか調整できないんだから、せめて開始タイミングは価格が落ち着いた状態のときに始めた方が良い気がする。

暴落時に強いインバースを混ぜ込む

そんなこんなで、インデックス投資だけだと気持ちが落ち着かないので、経済指標に逆行して値動きするインバース商品を保険として取り込もうかと。
日経インバースあたりかな~。
とはいえ、インバースは長期的には下がることが多い商品なので買いすぎずというくらいで、オルカンの積み立てとインバースを3:1くらいにしようかと思ってます。

【暮らしのお話】Qrioに合う充電池をようやく見つけた

お久しぶりのスマート家電についてのお話です。
日常使いしているスマートロックのQrioについて、充電池をずっと探してたので今回はその内容を記載したいと思います。

メーカー推奨は使い捨て電池でしかも高い

Qrioのメーカー推奨はあくまで使い捨ての電池です。
メーカー推奨を使いたいという方は充電池は使わずに使い捨ての電池を使用しつづけたほうがいいのですが、正直言って高い。
日常使いする電池の製品はやっぱり充電池にしておきたいというところ。

BESTONの電池は警告が出ない

上のように苦い買い物経験をしながらダメ元で購入したのがこちら。
楽天の買い周りセールで購入しました。
充電器付きで2000円以内なら安い方な気がする。
前のものを購入した際は、充電器と電池は別々で4000円近くしましたからね~。


後日2セット目を購入

今では完全レギュラーです。
QrioのA面とB面の両方に採用しました。
今のところ、警告は出ないですし、鍵の開閉も問題無くできています。

繰り返しになりますが、安全志向の方は充電池は使用せずメーカー推奨の電池がいいと思います。
機器の破損などにつながる可能性はあるでしょうからあくまで自己責任の範囲ですかね~。
それにしても、Qrioは両面テープといい電池といい付属品を少し別のものにするだけでかなり扱い易くなる。

よくわからない充電池は警告が出た

余談になりますが、他の充電池も試したのですが使えませんでした
実際にqrioにはめてみたのですが、「正規の電池をお使いください」との文字が出てカギの開閉すらしてくれない。
こういう安全思考なのは日本メーカーだなと思いつつ、この充電池はお蔵入になりました。
正直言って苦い買い物経験。
単にQrioとの相性が悪かったんだろうな~。

【暮らしのお話】阪神優勝したので天体望遠鏡を購入した

阪神優勝しましたね。
生きている間に見れてよかった!
いや、本当に。
前回リーグ優勝したのが、18年前なのでめちゃくちゃ懐かしい。
当時は、自分は小学生で野球っ子だったのでよく試合をテレビで見てました。
桧山とか赤星の時代ですね。
プロ野球チップスが好きで、友達と購入して集めてました!。
来年はせっかくだし集めてみようかな~。
いわゆる大人買いというやつですね。
子供の頃は、コンプリートなんて絶対に無理!って感じでしたが、今となればやってやれないことはないですから。
しかも日本一になったのって39年前みたいですから、そう考えると生きているうちにもう見れないかもしれないと思うとせっかくが!って気持ちになります。

前置きがめちゃくちゃ長くなりましたが、今回は阪神優勝にあやかって天体望遠鏡を購入した!というお話です。

Joshin優勝セール

小学生の頃は、野球に興味があったのですが、最近はめっきりで、と言いつつもせっかくなので阪神の優勝にあやかりたいということでJoshin優勝セールで購入しました。
普段、家電量販店は高いので使わないのですが、流石にセールだと安いですね。
webでやってるやつですね。
色々サイトを見ていると家電以外にもたくさん売っていてどちらかというと、男のサラリーマンが好きそうなものが軒並み売ってるなと言う感じ。
昔は、ゲーミングPCなんて広告には出でてこなかったし、安い中華PCだらけだった記憶があるんだけどな~。
久しぶりにみると広告も面白い。

後日店頭に行くと、立て看板もありました。 なんともめでたい! 自分と同じように記念写真を取る人もチラホラいましたよ~。

天体望遠鏡が安かった

安いといっても3万円くらいするのですが、amazonなどとも比較しても安かったです。
単体では変わらないんでしょうけど、オプション品などもセットで売っているので1万円くらい安い印象でした。
まあ最安値なんて探し出すとキリがないんだけど、この価格なら公開はしないだろうということで購入。


スマホで天体を探せる望遠鏡 StarSense Explorer LT80AZ

気に入ったのはスマホのアプリで見たい天体を探してくれるところ!
天体についての知識はほとんど無いけど、天体観測してみたい!というのが、前からあったので購入しました。

早速組み立てる

腰ぐらいまでたかさのあるダンボールにつつまれて送付されてきました。
予想はしてたけど結構大きい。
膝の高さくらいまであったかな!
ダンボールから出すとこんな感じ!
スマホで星を探すイラストが格好良い!

組み立てたら満足したので実使用はまた今度

正直なところ組み立てただけでちょっと疲れちゃいました。
何より説明書が読みづらい。
元々英文で書かれていたものを日本語に機械翻訳したような感じの説明なので、ちょっとわかりづらい。 同じ部品なのに名称が変わっていたなんてこともありました。
まあ一度組み立ててしまえば、分解することはほとんど無いので困らないんでしょうけど。
何はともあれ出来上がるとやっぱり見栄えがいいので満足!。
大きなインテリアにならないように、しっかりと使いこなさねば!

【プログラミング】webpackが開発終了と聞いたので後釜探し

Node.jsがDenoに変わったりと最近、web界隈を支えてきたコア技術の入れ替わりが多い気がしますね。
一部界隈で、OSSの時代は終わったみたいな声がささやかれてますがその影響だったりするんだろうか。
もともと、OSSって自身のスキルを示すために開発している節があったので、そうした取り組みが破綻し始めてると考えると、web界隈の人気もしばらく低迷しそう。

webpackが開発終了

webpackが2023年初頭に開発終了しました。
理由は、「10年も前のニーズに合わせて作ったツールだからメンテナンスができないよ」とのこと。 詳しくは下のブログ記事を御覧ください。
英語ですが。
合わせて、後継のturbo packへの熱い想いも書かれているので見ると面白いです。

vercel.com

Internet Explorerへの対応する役割を完遂

半ば強引な形もありましたが、Internet Explorerへ対応しながら、モダンなwebに対応したwebアプリを開発する役割に一役買っていましたもんね。
その役割をInternet Explorerのライフサイクルが尽きるまで全うしたと考えると、めちゃくちゃすごい。
web業界に与えた影響は計り知れないと思います。
何だかんだ10年以上使われていますもんね。

webpackの開発者はturbopackへ

webpack の開発者はどうやらturbopack への開発に鞍替えしたようです。
turbopackはwebpackの後継にあたるようで、ソフトウェア寿命が尽きてしまったwebpackではできない主に性能面の課題を克服するために開発しているとのこと。
たしかに、webpackはソフトウェアが肥大化すると途端にバンドル速度が落ちてしまう。
とあるプロジェクトでは、一行コードを書き換えるだけで、トランスパイルするのに5秒くらいかかって、生産性がめちゃくちゃ落ちてた。
まあ、webpackはInternet Explorerにも対応するなど、かなり汎用性が高いものでしたから仕方無い気がしますが。
そんなwebpackの弱点を改善したいというのは個人的に期待のできる取り組み!

turbo.build

公式githubはまだまだ稼働していそう

自分は後釜を探しつつありますが、webpackの公式githubは現在もコミットが続いているのでしばらくはサポートがつづくんじゃないかと思ってます。
記事公開の時点で、7月13日に最新リリースが公開されていますからね。
開発終了と言いつつ、あまりにも広く使われているのでサポートを突然終了することはできないんでしょうね。
というか、終了したら色んなサイトの更新が止まりそう。

github.com

turbopack vs viteの争いへ

「webpack 開発終了」とかで検索すると、 turbopack とviteが検索にヒットします。 なので、基本的にはこの2つを比較検討しておけば問題ないかと思います。 OSSの流行は回転が早いので、あくまで2023年時点の話ですが、仕事に使うにしろ趣味で勉強するにしろ個人的にはviteの方が無難かなと。

速度重視ならturbopack

速度重視ならturbopackらしいです。
実際に試したわけでは無いので、公式サイトの受け売りです。
というか、速度を前面に押し出していて、 速度比較のページを設けてます。
更新速度は、圧倒的にturbopackですね。
10倍くらい差が出てます。

https://turbo.build/pack/docs/comparisons/viteturbo.build

とりあえず使いやすさの観点でviteが無難

viteの方が長年使われていたということもあって、現状はviteのほうが無難かな~。 使用している例も使いやすいし、トラブルが起きたときや設定をカスタマイズしたいときにも情報を収集しやすい。

turbopackはMPLライセンスであることに注意

turbopackの最大の難点はMPLライセンスなんですよね。
MPLライセンスは、複雑なんですけど、注意点が頒布するときにそのソフトウェアもMPLでライセンスしなければならないことなんですよね~。
turbopackは、バンドルツールなので、それを使って作成したwebアプリなどを公開するのはいいんでしょうけどね~。
turbopackを含んだ開発環境とかを公開するとなると、ソースコードを頒布可能にするなど少々手間がいります。
しかも、MPLライセンスを含んだソフトウェアはMPLでライセンスしなければならないという煩わしさ。
このあたりに配慮が必要な時点で少々煩わしいですね~。
比べて、viteは考えることも無いのでラクです。
というか、仕事として作成したソフトウェアをOSSとして公開しなければならないというリスクを管理しなければならないという時点で採用されることは少ないかと。

vite でreactの環境を作る方法

とりあえず、viteを自分の中では使って行こうと決めたのでreactプロジェクトの作り方を早速学んでみました。 といっても、めちゃくちゃ簡単でした。

npm create vite

上の処理が済んだあとは、

npm install

これだけでした。

reduxの場合

我らがredux-toolkitを使いたい場合は下記のコマンドです。 開発が進んだあとから、reduxを導入するのは骨が折れるので導入するなら早めがおすすめです。

npx degit reduxjs/redux-templates/packages/vite-template-redux my-app

以上です。

redux の方がコマンド一発で構築できて至れりつくせり感があって好き。