2025

規模別株価指数

JPXはTOPIX 500銘柄や、TOPIX Core 30銘柄を毎年10月末日に入れ替えている。銘柄リストはJPXの株価指数ラインナップ・ページから辿る事で、PDF形式で入手できる。TOPIX 500銘柄はそれ以外の銘柄と異なり呼値が異なる。だから、模擬売買を行う際にストップロスの値を専用の値を設定しないと損切りが遅れる事になる。

1 min read

東証から8本値(午前4本、午後4本)を得る

東証からは毎日各銘柄の8本値が公表されているが、pdfで記載されているのが困ったところ。しかも時期によって記載内容が異なっている。例えば、2024-07以降は銘柄毎に売買株数、売買代金が記載された日報が公表されている。しかし、2020-01 ~ 2024-07では月報が公表され、そこには売買株数、売買代金の記載がない。

1 min read

pdfファイル構造

Rubyのpdf-reader GemだとJPXの日報からTextを取り出せるのに、SwiftのPDFKitでは問題が発生する。 表からTextの取り出しは出来るのだが、レイアウトが酷く壊れてしまうのだ。しかもその壊れ方に規則性を見いだせずにいる。そこでpdfのファイル構造を調べ始めた。 独自Text Extractorを実装する第一歩は、圧縮されたStream(FlateDecoder)からPDFオペレーターとオペランドを抜き出すことだ。

1 min read

サーバーレスのバックエンド

数年前(2017頃)にサーバーレスなる謎用語がバズっていた。GoogleのFirebaseを指していたのだが、今ではFirebase似のサービスのローカルで実行可能だ。Pocketbaseがそれなのだが、この記事では認証サービスを例にサーバーレスとは何なのかを調べたので記録しておく。以下の情報はGrokに尋ねて得た。

1 min read

日本株を模擬売買やってみた

模擬売買とは売買シミュレーション、システムトレードと言われてるヤツである。コードで記述可能なルールで銘柄を選び、買い取引、売り取引のタイミングも選び、ルールを過去の株価に適用する。適用した結果、利益率(収益: 利益‐損失を取引回数で割る)が大きいルールの発見を目指す。ルール、コード、実行結果を以下に示す。

5 min read

決済代行サービス利用時のフロント/バックエンド実装

アプリを開発してマネタイズする方法の一つにActivation Codeの販売を行うのがある。その際のバックエンド、フロントエンドの実装を調べてみた。なお、以下に掲載するコードの内、Code生成、Codeの正当性検証のコード(Swift, Ruby)以外は実際に動作を確認していない。

  • 開発者の口座に入金がなされる仕組み
1 min read

KeyPath<T, V>で作る汎用関数

多数のメンバを持つタイプのメンバへのアクセスを抽象化(汎用化)した下記のsortBy関数は、KeyPathで実現されています。時にはname, 時にはageで配列をソートしたい場合にsortBy関数がどちらの場合でも利用できます。なお、People型のInt型プロパティへのKeyPath<T, V>は\People.ageと表記されます。

~1 min read

macOS AppのタイトルバーにMenuボタンを設置

タイトルバーにメニューボタンを設置してみた。メニューにButtonを設置することは出来るが、Text, Pickerの設置してもコンパイルエラーは発生しないがPreview Canvasに表示されない。もちろん、Debug実行しても表示されない。(俺的メモ: ToolbarContent@FloatingTabBarワークスペース)

~1 min read

App起動前にDialogを表示する

macOS Appの場合App起動前に、SQLite3のDBからデータを取り出す処理に失敗した時にApple Scriptのdisplay dialogを使って失敗を通知できる。ネットを漁って見つけたコードを残して置く。

~1 min read

依存性注入の2つの手法を比較

ContentViewにCounterクラスのインスタンスを注入する際にインスタンスを1つだけ生成する場合と複数生成する際の振る舞いの違いを比較する

~1 min read

Shape vs ShapeStyle at SwiftUI

どちらもTextの背景を設定する際に用いるのだが前者は図形、後者は図形の塗りを指定する。次のコードではTextの背景が同じ3つのButtonを表示している。背景は灰色青で塗った角丸四角を3通りのコードで表現している。

~1 min read

Observation Frameworkでアプリ環境変数をViewで監視する2つの方法

Appleのデバイス上で動くアプリで使われる値監視メカニズムは、かつてはCombineフレームワークと共に導入されたObservableObjectプロトコルを使ったものだった。今はObservationフレームワークが使われる。これはSwiftUIをインポートすれば同時に利用できる。

1 min read

Package.swiftの書き方

Package.swiftとはAppleの開発環境でLibrary, App作成のためのProjectファイルっぽいものである。

3 min read

ScrollView-SingleView画面遷移

NavigationLinkを使ったListViewとDetailedView間の画面遷移と似た画面遷移を実現する方法を見つけた。

~1 min read

SQLite.swift の使い方

SwiftからSQLite3を扱うためのFrameworkは複数ある。Swift Package Indexで検索するとダントツに星が多いのがSQLite.swiftだ。 stephencelis/SQLite.swift: A type-safe, Swift-language layer over SQLite3. RepoのREADMEを見るとExpressionオブジェクト, Tableオブジェクトなど見慣れないオブジェクトを生成しなければならず取っ付き悪そうだが、実は生のSQLを書いてDBを操作できる。

~1 min read

pdf, 7z, zip, xls, xlsxファイルからtext抽出

Rubyで日本取引所グループ(JPX)から入手できる規模別株価指数、構成銘柄リストを読んでみる。やってみると、pdfは27pagesもあって全ページ検証したわけでは無いが一見すると上手く読むことができた。ところどころ謎の改行が含まれている。popplerコマンド(brewでinstall可能)だと壊れた表のレイアウトが維持されている。構成銘柄一覧は、呼値がTOPIX500銘柄が特別細かく設定されて取引されるので、株式売買シミュレーション(バックテスト)を厳密にやりたい時に必要となる。

1 min read

homebrewで意図せずRubyのバージョンが変わってしまって時にやったこと

Rubyでpdfファイルの中の表からCSVファイルを作ろうとした。結局は失敗するのだが、brew install popplerを実行するとbrew updateが走り出してvim, ruby,…がupdateされてしまった。するとvim-lspが動かなくなってしまった。後から解るのだが、solargraphがRubyのVersion Upにともない動かなくなってしまったのだ。そこでvim-lspが再度動くようになるまでの格闘記録を残す。

1 min read

Pointerを受け取るC言語関数(ta-lib)をRubyから呼出す

株価分析ソフトを作る際に利用されるTA-LibをRubyから活用する方法を説明する。この記事では移動平均を算出するTA_MA関数を例にまずはC言語から呼出すコードを掲載し、更にRubyからも呼出すコードも示す。

1 min read

Xcode Build Numberを自動更新

この記事では、日付とカウンターに基づくカスタム フォーマットを使用して、Xcode でビルド番号をビルド毎に自動で増やす手順を説明します。下図の様にmacOS AppのAbout Menuで表示されるカッコ内の数字1がビルド番号です。

1 min read

macOSアプリのWindow Size変更

SwiftUIはmacOSアプリのWindow Sizeを変更する手段を提供していない。ViewのLayoutの制御手段が主でWindow管理は別物だ。View.frameモディファイアでWindow Sizeを制御出来るようにも思えるがやってみると上手く行かない。

1 min read

youtube

This post tests YouTube video embeds.

~1 min read

JavaScript: Clousure

lunr.jsの動作を理解するためにJSのClousureについて調べてみた

~1 min read
Back to Top ↑

2024

Observable Macro

Observable Object protocolからObservable Macroへの移行ガイドを参考にmacOS App Projectを作ってみた。PreviewでData Bindingが機能している。 Apple DocumentationではObservable MacroとはデザインパターンのSwift版実装だと紹介されている。SwiftUIに組み込まれたCombineとは違い、Windows, Linuxでも動作するのだろう。
Migrating from the Observable Object protocol to the Observable macro | Apple Developer Documentation

~1 min read
Back to Top ↑

2023

最近思うこと

26年続けた(1992 - 2018)サラリーマンを無計画に辞めたオッサンの生き様を綴る。 Jekyllでブログを書き始めた。昨日の夕方から作業を開始して今ようやく記事を掛ける用になった。今使っているmimima themeはcategoriesが表示されない。 適当なのを探すことにする。それからlangの設定を変更する方法も! site.langをいじるのかな? Variables | Jekyll • Simple, blog-aware, static sites

~1 min read
Back to Top ↑

2019

RxSwift

RxSwift

1 min read

Swift5.1 Tips

初見殺しのSwiftヘンテコ構文

1 min read

How to push

トラブル解消だよね

pushしようとすると[rejected]となる場合、pull(merge)してみる。

1 min read
Back to Top ↑

2017

Syntax Highlighting Test

Jekyll uses Rouge by default for syntax highlighting, here are some tests.

~1 min read
Back to Top ↑