メインコンテンツへスキップ

「インデックスファンド比較サイト」をリリース

·1353 文字·3 分
目次

はじめに
#

「インデックスファンド比較サイト」をリリースしました。サイトの概要と、使用した技術についてまとめています。

公開したサイト
#

「インデックスファンド比較サイト」というそのままの名前です。 https://fund.helve-blog.com/

Home画面
#

サービスのHome画面です。TOPIX, S&P 500などの指数に連動するインデックスファンドの年間リターンを表形式で比較できます。 データは営業日の翌日(基本的に火曜~土曜)の早朝に更新されます。

インデックスファンド比較サイト Home
インデックスファンド比較サイト Home

指数の詳細画面
#

画面左側のメニューなどから、指数の詳細画面に移動できます。

インデックスファンド比較サイト Topix
インデックスファンド比較サイト Topix

詳細画面ではファンドのリターンの差や、純資産額の変動などをグラフで比較できます。

インデックスファンド比較サイト return
インデックスファンド比較サイト return

開発のモチベーション
#

「インデックスファンド比較サイト」を制作した動機は、インデックスファンドを比較しているサイトが少なく、また更新頻度が低いことです。 常に最新のデータで比較をしているサイトがあれば便利だと思い、開発しました。

また、HTML/JavaScriptに疎かったため、これらの勉強も兼ねています。

技術面の話
#

以下は開発に使用した技術の話です。

使用した技術
#

使用した主な技術は以下の通りです。

  • スクレイピング:Python, GitHub Actions
  • ホスティングサービス:Cloudflare Pages, GitHub
  • JavaScript: Chart.js
  • CSSフレームワーク:Semantic UI

Pythonを使って、ファンドデータをスクレイピングし、公開用のJavaScriptファイルに加工しています。このPythonスクリプトをGitHub Actionsで定期実行しています。 GitHub Actionsについては、以下の記事も参考にしてください。 GitHub Actionsに入門する – Helve Tech Blog GitHub ActionsでPythonスクリプトを実行する – Helve Tech Blog

HTMLやファンドデータを全てGitHub上で管理して、Cloudflare Pagesを使って公開しています。運用を簡単にするため、Mongo DBなどのデータベースは使用していません。

データをグラフで表示するためChart.jsを使用しています。

レイアウトを整える手間を省くためにSemantic UIを使用しましたが、サイトのロードが長くなったのは反省点です。時間に余裕があれば、CSSは自分で書いた方が良いですね。

運用費用
#

サイトの運用費用は0円です。 サイトの転送量はCloudflare Pagesの無料枠に、スクレイピングの実行時間もGitHub Actionsの無料枠にそれぞれ納まっています。 また、このブログのサブドメインを割り当てたので、ドメイン代も0円です。

制作期間
#

制作を開始したのが2021年8月、リリースが12月上旬なので、制作期間は4か月弱です。ただし、並行してブログ運営も行っていたので、実質の制作期間は1か月ほどだと思います。

また、GitHub Actionsによるスクレイピングの安定性を確認するため、上とは別に1か月程度様子を見ていました。

おわりに
#

つみたてNISAなどが整備され、インデックス投資がしやすい環境になっています。 「インデックスファンド比較サイト」をファンド選びの一助に活用していただければ、開発者冥利に尽きます。

※くれぐれも投資は自己責任でお願い致します。

Helve
著者
Helve
関西在住、電機メーカ勤務のエンジニア。X(旧Twitter)で新着記事を配信中です

関連記事

GitHub ActionsでPythonスクリプトを実行する
·1527 文字·4 分
GitHub Actionsでリポジトリ内のPythonスクリプトを自動実行する方法をまとめた。
可視化ツールDashで作成したWebアプリをPythonAnywhere上で公開する
·1965 文字·4 分
Pythonの可視化ツールDashで作成したWebアプリを、Webアプリケーション公開用プラットフォームであるPythonAnywhere上で公開する手順をまとめた。
可視化ツールDashで作成したWebアプリをHerokuで公開する
·2118 文字·5 分
Pythonの可視化ツールDashで作成したWebアプリを、Webアプリケーション公開用プラットフォームであるHeroku上で公開する手順をまとめた。
【Python】定数を持つ関数の実行を高速化する
·1522 文字·4 分
Pythonの関数において毎回決まった値(定数)を必要とする場合、どのように記述すれば処理が速くなるか検証しました。
scipy.interpolate.interp2dによる2次元データの補間を解説
·1625 文字·4 分
Pythonの数値解析ライブラリSciPyのinterpolate.interp2dクラスを使って、2次元形状のデータを補間する方法を解説する。補間オプションや、実際の補間例も示す。
静的サイトをブログ村に登録するならNetlifyがオススメ
·1250 文字·3 分
静的サイトをブログ村に登録する場合、Netlify以外のホスティングサービスを使用すると最新記事を取得してくれない可能性がある。