月間300km達成!

Garmin先生の奴隷となりながら走り続け、時々休めと言われながらも走るときもあったりで頑張った結果、1月は特にレースに出るとかなかったにも関わらず初めて月間300kmを超えることが出来ました!

2025年、幸先のいいスタートです。

グラフを見てわかるように、特別長く走ったということはなく最長でも22kmちょっと。
言ってしまうと、平均的に日々コツコツと積み重ねていった形ですね。
まさに継続は力なりと言うやつです。

走力は少しは上がっているのでしょうか。
実感としてはそれほどあるわけではありません。

こちらは昨日のプログレッション・ラン。
途中まで5:25/kmのペースで最後に4:00/kmペースを10分というメニューだったのですが、最後まで持ちませんでした(ちょっとグラフの目標ペースが変ですね)。

もちろん、フルマラソンをサブ3.5目指すとすると4:58/kmなので4:00/kmはオーバースペックなのですが、10分持たないか~と思うと力の無さを感じます。

先日のNike Ginzaで行われたNRC Liveで教えてもらった、ゆっくりペースのときの走りかた。
ピッチを上げつつ細かく進むということを少し意識してイージーペース中は走っていますが、全行程で意識するということはまだ出来ていません。
なかなか難しいです。

私は、フルマラソン後半にバテるので、ピッチを上げて走るというのは、足の上げ下げ回数を増やすことでその部分の筋肉を鍛えるということにつながるのではないだろうか?と考えたので、あっているかどうかはわかりませんが、取り組みを続けていきたいと思います。

サブ3.5もままならぬ状態ですが、夢は大きくGarmin先生にはサブ3を目標にしているんだ!と、仮で横浜マラソンを登録してメニューを作ってもらっています。
追いつけるように頑張っていきたいです

プロテインを変えてみた

運動をしたあとにはプロテインを飲んでいます。

プロテインを接種する目的としては筋肉を作るというイメージが合ったのですが、実際のところランナーにとっては疲労回復の役割のようですね

なんとなく、運動している=プロテインという感じで飲んでいるのですが、何気にプロテインは・・・高いんですよね

ザバス(SAVAS) アドバンストホエイプロテイン100 ココア味 1kg 

これまで私は、”なんとなく名前を知っている”ということでSAVASを長年愛用していました。
しかし、タイムセールでもAmazonで4000円弱。地味に来ます。
コストコに行ったときに大きいパックを買ったりもしますが、ボディブローのように財布へダメージが入ります。

筋肉をつけるという意味では、ランナーに取ってはそれほど必要なわけじゃないのではないか?とか思わず考えたくもなるくらいです。

マイプロテインに変えてみた

後輩に筋トレが趣味になりつつある人がいるのでその話をしたら、マイプロテインいいですよ。と言われた

https://www.myprotein.jp

Amazonでも売って入るのだが、公式ストアがそれなりの頻度でセールをやっているようで公式がおすすめのようだ。

思い切って、2.5kg*2という、後戻りできない分量をいきなり買ってみた。
注文して2~3日経って配送手続きが進んでいるとメールが飛んできたのだが、Amazonに慣れていると随分と時間がかかっている。

そして、なんか見ていると。。。

おいおい、どこから届くんだ・・・?
このマイプロテインという会社。イギリスの会社のようだが、発送としては多くの場合シンガポールから発送しているようだ。

とはいえ、無事に到着

何やら変なボールがついていた。
これは、シェイカーに入れて使うことで、粉をより溶けやすくしてくれる効果があるようだ。ありがたい。

正直言って、飲んだときと飲まなかったときの差が測れないので効果はわからないのだが、効果があると信じて頑張っていきたいと思う。

「箱根駅伝を伝える」を読んだ

原島由美子著「箱根駅伝を伝える テレビ初の挑戦」を読んだ

箱根駅伝を伝える テレビ初の挑戦

箱根駅伝といえば正月の楽しみであり、特に駅伝というスポーツ自体に強い興味がなくてもテレビ中継を見ている人は多いのではないでしょうか。

私自身も子供の頃から見ており、母が山梨出身だったこともあり山梨学院大学の順位にはいつもドキドキしながら応援していたことを覚えています。
オツオリ選手が各校の並みいるエースをごぼう抜きしていく姿は衝撃でした。

概要

本書はそんなお正月の風物詩とでも言う存在になっている箱根駅伝をテレビ生中継を初めてするということを成し遂げた、日本テレビのクルーたちの物語です。

もはや、プロジェクトXでした

今では当たり前に中継されている箱根駅伝も、1987年当時では技術的に難しく。
特に山岳地帯からの生中継というものがいかに大変だったかということが語られています。

そういう意味では、来年の箱根駅伝はちょっと違った視点でのものの見方ができるかもしれないな、と思った。

しかしながら、このプロジェクト。かなり無茶苦茶である。
プロジェクト期間としては、1年以上を費やして進めていっているように見えるのだが、いろいろな漏れが出てくる。

クルー用の宿の確保が出来ていない
弁当のことを考えていなかった
機材を山に届けるのはいいけれど、下ろすことを考えていない

ワープロすら十分に普及していなかった時代のことを考えると、プロジェクト管理という概念自体が怪しいのかもしれないな、と思わなくもない。
そう思ってしまうほどだ。

美談なのか

プロジェクトXにしても、悩ましいのは現代でこれをやると間違いなく一発アウトだ。
労基に入られたらもはや何も言えなくなるくらいアウトだろう。

そう考えると、これを美談のように感じられるのは、そういう時代を少なからず経験したことがある世代。そしてそれを乗り越えられた人だけで、若者からしたらドン引きな内容なのではないだろうかと思ってしまう。

オーバーワークが人を成長させることはあると私自身も思っている。
一方で、オーバーワークが人を壊してしまうこともよくある話だし、一度壊れてしまった人がなかなかその後も苦しんでしまう状況に追いやられることもままある。

実際のところ、本書の中でも主導したメンバーは夢中でやっていたかもしれないが、かき集められたメンバーからしてみたら扱いの酷さに文句も出ているし、ついていけなかった人もいるのではないだろうか。

どうしてもそういうことを考えてしまい、こういう物語を見たあとは、素直に感動したとは思えないんですよね。すごいとはもちろん思います。
悩ましいところですが。

そんなことを、改めて考えさせられた一冊でした。

ObsidianでKindle Highlightを管理する

Kindleで本を読んだときに、いいなと思っている機能の一つがHighlightをWebで見ることができる点だと思っています

Kindle Highlight
https://read.amazon.co.jp/notebook?ref_=k4w_ka_notebook

過去に自分がどういうことに興味を持ったのか?ということを確認することが出来ますし、ブログに記事を投稿する際にも参考にしたりしています。
Audibleにも似たような機能があるといいのですが、音声だと文字起こし範囲の指定が難しいですよね。

最近のAIは賢いもので、これらの”自分が何に興味を持ったのか?”という情報は、これから大事になってくるのではないかと考えています。
そういう意味では、それを再利用可能な状態にしておく方が良いと。
であれば、Obsidianに取り込んでしまおうかという話です

Kindle Highlights

特に何も考えることなくそのものズバリ、「Kindle Highlights」というPluginがあります

プラグインのプロパティとしては下記のものがある

Templatesで、同期したあとにどういう形でノートとして保存するのかを定義可能。
デフォルトでも大きな問題はないのだけれど、自分用に少しいじったものをここに公開しておきます。

FileName

{{title}} - {{author}}

File Content

---
tag: 📚Book
title: "{{title}}"
author: [{{author}}]
---
{% trim %}
{% if imageUrl %}![image]({{imageUrl}}){% endif %}
{% if authorUrl %}
* 著者: [{{author}}]({{authorUrl}})
{% elif author %}
* 著者: [[{{author}}]]
{% endif %}
{% if asin %}* ASIN: {{asin}}{% endif %}
{% if isbn %}* ISBN: {{isbn}}{% endif %}
{% if pages %}* Pages: {{pages}}{% endif %}
{% if publicationDate %}* 出版日: {{publicationDate}}{% endif %}
{% if publisher %}* 出版社: {{publisher}}{% endif %}
{% if url %}* Reference: {{url}}{% endif %}
{% if appLink %}* [Kindle link]({{appLink}}){% endif %}
{% endtrim %}

## 概要・要約

## Highlights
{{highlights}}

Highlight

## location: {{location}} : {{ text | truncate(20) }}
{{ text }} — [link]({{ appLink }})

{% if note %}{{note}}{% endif %}

---

このテンプレートでやるとこんな感じになります。
Highlightされた場所をより見つけやすくするために、位置情報と冒頭の数文字を出している形ですね。

このあたりはもう少し運用して手を加える場所があれば都度見直していこうかと。
ノートを削除してもう一度同期をすれば作られるので、テンプレートの改造を試すのには比較的敷居が低いと感じています。

最後にプラグインのプロパティでSync on Startupがありますが、Obsidianの起動が遅くなるので結局オフにしました

Obsidian起動してから主導でSyncする形で頻度としては十分かと。
思ったよりもこの時間がかかるのが気になってしまうので。

Obsidian の LiveSync を Fly.ioで

Obsidianはだんだん手に馴染んできているもののDynalistと違ってふと手元でメモを取ってそれをPCで確認するということが出来ないのは、正直おもしろくない。

Obsidian公式としてもSync機能は提供されているものの、せっかくデータをローカルに持ってきているという特性。
それを再び相手に明け渡すというのも面白くない

調べてみると、Syncサーバーを自分で立てる。。というか、Obsidianは内部的にCouchDBを使っているようでそれをホスティングしてくれるものを利用するSelf-hosted LiveSyncというプラグインが存在しているので早速試してみる

例によってコミュニティプラグイン一覧からlivesyncと検索すれば出てくる。

プラグインの説明を読むと、Amazon S3でも行けるっぽい。
SetUpの方法は基本的にはGithubにかかれている通りの手順となります。

Setup CouchDB on fly.io
https://github.com/vrtmrz/obsidian-livesync/blob/main/docs/setup_flyio.md

ColabでFly.ioの設定をスタートする

下記ページへアクセス

https://github.com/vrtmrz/obsidian-livesync/blob/main/setup-flyio-on-the-fly-v2.ipynb

”Open in Colab”ボタンを押下するとGoogleアカウントが正しく設定されていれば、GCPのColabを利用してFly.ioをセットアップするためのノートブックが開かれる。

これは、Fly.ioがGUIを基本的に提供しておらず、CLIでセットアップを進める必要があるからである。

下のGithubに「Choose a region and run all blocks」と書いてあったので、”ランタイム”メニューから”すべてのセルを実行”を選択するを最初選んでしまったのだが、最後にサーバーを削除するスクリプトがついているので必ず一つずつ実行してください

セクション[1]が完了するとセクション[2]に移るわけだが、ここではFly.ioへのログインが求められる

上記URLをクリックしてFly.ioへサインアップする必要がある。
ここで注意なのが、Fly.ioはCouchDBを1GB無料枠があるけれど、利用するためにはクレジットカード登録が必要になってしまうというところ。

ここで、Payment Methodを登録しておかないと、Colabのスクリプトは失敗してしまう。

セクション[3]まで完了すると、LiveSyncプラグインへ入力するための情報が表示される。
これが出れば、Colab側の作業は完了。
表示されているURIとPassPhraseは使うので必ずローカルに保存しておく。
そのうえで、画面は閉じずに一旦そのままにして、Obsidianに戻る

ObsidianでLiveSyncプラグインを有効化すると、Setup-URIをすでに保持しているのかを聞かれるので”Yes”を選択する

Colabで指定されたSetup uriを入力する。
これに関してはColab上に”Copy setup uri”というボタンがあるのでそれを押下した値をペーストすればOK

次にPassphraseを入力する。
Colabのセクション[3]を読むとPassPhraseという文言が2つ出てくるのだが、先のキャプチャで書いた、最初に提示されたフレーズを入力する

コンフィグをインポートするか聞かれたので”Yes”を選択した

続いて、この端末をどう扱うかを聞いてくる。
一番上はFly.ioに立てたDB上のデータでローカルを更新するとなっているので、2番目の「initialize new server data」を選択して、サーバーを初期化する形を選ぶ

この設定で進めるかを問われるので、下の選択肢を選択

隠しファイルをどうするかを問われているので、一旦デフォルト設定の”Disable”を選択する。

ちょこちょこ選択肢が出てくるが一旦はデフォルトにしておいてこれで設定は完了。

スマホ側

私が試したのはiOSだが、Obsidianをインストール後、Self-hosted LiveSyncのプラグインを入れて同様に入力。

新規クライアントとして登録する事で無事に同期を取ることが出来た。
いいね。

Deepseekをローカルで

少し前からDeepseekの名前は見かけていましたが、先日の発表から一気に広がりましたね。
というわけで、早速試してみようと思います。

参考にさせていただいたのはこちら

DeepSeek R1をほぼ準備なしからローカルGPUで動かす
https://note.com/cppp_cpchan/n/n3c1039c80dd0

CUDAの確認

私の環境では、CUDAは12.3だった

llama.cppをダウンロードしてくる。
https://github.com/ggerganov/llama.cpp/releases

見る限り、この2つなのだが、ローカルがCUDA 12.3で行けるものなのか。
試してみてから考える

試してみた

common_init_from_params: setting dry_penalty_last_n to ctx_size = 4096
common_init_from_params: warming up the model with an empty run - please wait ... (--no-warmup to disable)
ggml_cuda_compute_forward: ADD failed
CUDA error: the provided PTX was compiled with an unsupported toolchain.
  current device: 0, in function ggml_cuda_compute_forward at D:\a\llama.cpp\llama.cpp\ggml\src\ggml-cuda\ggml-cuda.cu:2230
  err
D:\a\llama.cpp\llama.cpp\ggml\src\ggml-cuda\ggml-cuda.cu:71: CUDA error
sh: ./llama-server.exe: このアプリケーションで、スタック ベースのバッファーのオーバーランが検出されました。このオーバーラン により、悪質なユーザーがこのアプリケーションを制御できるようになる可能性があります。 Error 0xc0000409

実行してみると、エラーとなってしまった。
エラーメッセージからは、「unsupported toolchain」ということで、12.3環境で12.4を動かしたことによるエラーではないかと推察する。

そこでCUDA 12.8(最新)を入れようとするもエラー・・・。

しょうがないので、llamaとバージョンを合わせた12.4を拾ってくる

CUDA Toolkit 12.4 Update 1 Downloads
https://developer.nvidia.com/cuda-12-4-1-download-archive?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_local

同じエラーになった。。。

Nsight Coputeというものが原因のようだが、これは使わないっぽいのでカスタムインストールで設定を外してみる

とりあえずインストール出来たっぽい

smiで確認してみると、ちゃんとバージョンが上がっている

さて、実行です。
実行パラメータとしては以下を行っています

./llama-server.exe -m ../DeepSeek-R1-Distill-Qwen-14B-Q6_K.gguf -ngl 26 -b 2048 --temp 0.6

最初、nglの値を49にして実施してみたが、メモリが足りないというエラーとなってしまい、26でやるとエラーにならずに出来た。

このあたりのパラメータの加減は環境ごとに見極める必要がありそう。
言われているURLへアクセスすると

それっぽい画面が出来ている!

早速問い合わせてみたのだが、「Thinking」からかなりの長時間が経過しているが変化ない

GPUのパフォーマンスをタスクマネージャで確認して見ると、「専有GPUメモリ使用量」は張り付いていて、「3D」となっているところはギザギザの波形が出ている。

かなりの時間が経過した後に応答があった。

とりあえず、動くには動いたが、パフォーマンスはというとひどいものである。
パラメータを見直してなんとかなるものかはちょっとわからないが、試してみるだけ試してみようとは思う

NRC Live in Nike Ginzaに参加してきた

NRCのアプリを開くと何やらメッセージが。。。

ご当選のお知らせ。。。ナンだっけ。。。

そういえば年末に、何かしら変化をつけたいと思って応募したんだっけ。。すっかり忘れてました。

いざ銀座へ

集合時間が朝の8時ということで、千葉から行くとなると6時台前半の電車でいかなければいけません。
実際のマラソン大会でも似たような時間ではあるので対応は出来ますが、眠い。

流石に朝7時台の銀座は人が少ないです
銀座に来たの、すごい久しぶり。

この日は写真で見てわかるようにすごいいい天気でした!
サイコー!

Nike Ginzaへ行くと待っている人が。
時間にならないと開けてくれないので、私のように遠方から早めに来ている人は寒い!
でも待つしかありません

1F受付で、ウィダーインゼリーとInプロテインバー、荷物用バッグを受取り、3Fへ移動。
そちらで着替えがある人は着替え、そしてトライアルシューズを借りることが出来ます。

この日のトライアルシューズはペガサスプレミアム!!

ナイキ ペガサス プレミアムがAirでのランニングを一新
https://www.nike.com/jp/a/pegasus-premium-release-info

ペガサスシリーズの最新作。
発売日は1/30ということでこの時点では未発売のものです。
ペガサスは38を使っていた時期はありますが、通常モデルの最新は41。そしてこのプレミアムモデルといろいろとありますね。
そしてお値段は29,700円という事で、高い。。。ぐぬぬ

でも、シューズがかっこいいというのは走るモチベーションとしては大事ではあるんですよね。

セッション

セッションは箱根駅伝も走ったことがあるというコーチの方主導で進みました。

Nike Ginza の3Fでストレッチをしたあとに、みんなで馬場先濠の方へジョギング。
少し開けた場所で、ラダーやミニハードルを使った俊敏性を高めるためのトレーニングを教えてもらいました。

こういうトレーニング。
陸上競技を部活動などで経験している人には当たり前なのかもしれませんが、私にとってはとても新鮮でした。
このあたり、写真を全然取ってなかったんですよね。。。失敗です。

ひとしきりラダーとミニハードルのトレーニングを終えたあとは少し大回りして再びNike Ginzaへ。

みんなで集合写真を取ってセッションとしては終了です
(もちろんその後クールダウンはありましたが)

Nike商品

NRC Live 参加者は当日限定で10%OFFクーポンがもらえたので物色します。
靴は。。かっこいいんですが、先日HYPER SPEEDを買ったばかり。

それにしてもカラフルです。
やっぱりこのNikeのロゴはいいなぁ

走るときのウェアは今欲しいものランキングのかなり上位です。

シンプルでいいなぁと見ているわけですが、ご多分に漏れずお値段もかっこいい感じです。
10%OFFがあるとはいえ、、、
シンプルであるならば、もっと安いものもあるわけで、機能性はもちろん違えど。。。うぐぐ

心の底まで染み付いてしまっている貧乏根性が抜けません。
アウトレットのNike店舗を見て型落ちのモデルを物色しようかな。。

感想

毎回のNRC Liveがこういうメニューなのかはわかりませんが、ただ走るというだけではなく、トレーニングが入っていたのは非常に満足でした。

言ってしまうと走るだけで終わるのであれば、別にこの枠組みである必要はそれほどないですしね。

トライアルさせていただいたペガサスプレミアムの、弾むような感触も非常に面白い経験でした。以前履いていたインヴィンシブルランも楽しかったな、ということを思い出しました。

朝、家にいないのは子どもの世話をするうえで妻に迷惑をかけてしまうので心苦しいのですが、タイミングと機嫌を見ながらまた参加できればと思います。

そして、早速ではあるけれどラダーを買ってしまいました!
ミニハードルは、正直邪魔になりそうなの。。。
今年、頑張っていきます!

トレーニングラダー ラダー

GHB ミニハードル 10個セット

Obsidian使用1週間

Obsidianを仕事でも使い始めて1週間ほどが経過した。

まだ目覚ましい成果というほどのものが出ているわけではないが、デイリーノートを起点として業務をまとめていく形が徐々に作られている気がする。

タグとかそういうものを利用していくと、これまで散らばっていた情報が整理され、集約されていくので生産性が上がっている気がする。

一方で弊害も出始めている。

疲れるのだ。

これまで結構適当に過ごしていたので、何かの情報が抜け落ちていることがよくあった。
特に先週はいろいろなことが連続しておき、かなり頭を使うことを要求される感じだった。
その中で、デイリーノートを中心にやることを書いてあるので、抜け漏れが少なくなったせいでずっと頭を働かせているような感じ。

違う。
そんな真面目なキャラじゃないんだ、私は。

Obsidian。。。恐ろしい子

Fly.io のAppを削除する

Obsidian の Self-hosted LiveSync をFly.ioで作ろうとしたものの、App作成スクリプトの使い方を誤っていたようで、作り直す必要が生じてしまった。

基本的にFly.ioはCLIからの操作になるのだが、削除自体はDashboardからできるようだった

ログインすると、登録されているAppが表示されている。
Obsidian用に1GBのDBが構築されているのがわかる

Appを選択して、左下の「Settings」を選択する

「Delete app」を選択すれば削除ができる。

アプリケーションの削除が設定ページにあるという発送に思いつかず、結構探し回ってしまった。

これで削除が完了して、余計なインスタンスを維持する必要もなくなって安心。安心。

Software Design 2月号

Software Design の2月号が発売されました!

ソフトウェアデザイン 2025年2月号

今月の特集はPython。

ちょこちょこと書いてはいますが、しっかりと勉強したことはなく、なんとなくなのでこれを機会として基本を抑えておきたいところ。

そしてちょっとおもしろかったのは「実践データベースリファクタリング」の連載。
このあたりのテーブル設計に関しては、どの段階でどこまで考慮するのか?
どの段階で見直すのか?は非常に悩ましいところですね。

コードのリファクタリングと異なり、DBのリファクタは正直言って想像したくない作業です。
規模によってはそれこそ現実的には思えないものの、そもそもアプリケーションが目的を達成しないのであれば存在する価値がないわけで、やらなければいけないシーンは出てくるのでしょう。

頭の体操として、こういったケースを考えるのは面白いです。