char型は符号ありでよかったか

以前のマイコンで使っていたソースコードを移植して、

コンパイラのWarningを調べていたら符号なしの数値と負数の比較をしていると出てくる。

なんでそんなことになってるんだ? と調べて判明したのはchar型の取扱だった。


移植後のコンパイラでは char型を符号無しとして扱う設定がされていた。

そんな設定した覚えないのだが……と確認したら、標準設定がそれだった。

で、元々のマイコンのコンパイラはchar型は符号ありだったそうで、

ここが食い違いの原因だったらしい。


Cで単にintとかlongとか書けば符号ありなのだが、

charというのは符号の有無は環境依存だと定義されている。

このため符号ありと明示するには signed char、符号なしと明示するには unssigned char と書くべきとなっている。

それぞれ int8_t, uint8_t と書いた方が意図は明確かもしれない。


なぜこういうルールなのかというので調べるとこんなのが見つかった。

char の符号が処理系定義な理由 (Zenn)

‘a’のような文字リテラルはchar型で負数ではないと規定されていて、

ASCIIコードの範囲であれば0~127なので符号付きの1byte型でも、符号無しの1byte型でも問題ない。

文字を表すという観点で言えば、0~255が表現できる符号無し型の方が有利である。

とはいえ、char型は文字の表現だけではなく1byteの数値表現にも使うことができる。

その観点では単にintと書けば符号ありになるのと同様、charも符号ありの方がよいという考えもある。


環境ごとにどちらが標準かというのはだいたい決まっているらしく、

確かに基本的にcharはunsignedと規定されていた。

旧来のマイコンは基本的にcharはsignedと規定されていたのだろう。

(少なくともコンパイラはそう解釈していたことは裏が取れている)

ゆえに流用コードをビルドするには signedと設定した方がよいようだ。


標準が符号なしというのは今まで気づいてなかったのだが、

char型が符号ありかなしか一意に決まらないということは知っていて、

Warningが出てる場所を少し調べたらすぐ見当は付きましたね。

くれぐれもご注意を。

往復乗車券がなくなる

かなり驚いたのだが、JR各社で往復乗車券と連続乗車券の発売が終了になる。

往復乗車券及び連続乗車券の発売終了について (JR西日本)

もっとも帰りの切符を同時に購入するということ自体は今後も可能とみられ、

その場合は片道乗車券2枚を購入することとなる。


ただ、往復乗車券と片道乗車券2枚はいくつかの差がある。

600km超に適用される往復割引が適用されないことはもっともわかりやすい差異である。

とはいえ、これは600km超乗らなければ関係ないこと。

そうでない場合でも差異があり、それは有効期限である。

往復ともに片道乗車券の倍の有効期限となる。

100km以内あるいは近郊区間完結の乗車券の有効期限は1日(途中下車不可)だが、

往復にすると往復ともに有効期限が2日となる。途中下車不可なのは変わらないが。


このルールはJRに限らず往復乗車券としては一般的なルールなのだが、

これと違うルールを持っている会社があって、それが近鉄である。

近鉄の往復乗車券は往路は1日、復路は2日と決まっている。

近鉄は途中下車制度を廃止していることも考えれば、実用上の差異はないといってもよい。

少なくとも往路は出発日に使い始め、当日中に使い終わるはずだからである。

復路は往路と当日に使うか、翌日に使うかの選択肢がありますよと。


途中下車制度のない近鉄にとってはそれで済む話なのだが、

JRなど途中下車制度のある会社にとってはそうとも言えない話で、

例えば、大阪~倉敷は片道だと有効期限2日の区間だが、

これを往復にすると往復とも4日間有効となる。

金曜に大阪を出て、姫路で1泊、岡山で1泊、日曜朝に倉敷に到着し1泊、月曜中に大阪に戻ってくるというのは、

大阪→倉敷で見れば3日かかるので片道乗車券なら期限が切れるが、

大阪→倉敷→大阪で見れば4日に収まっているので往復乗車券は成立すると。

大阪→倉敷を途中下車して3日もかけることに合理性があるかはさておき。


もう1つ廃止になる連続乗車券についてはこれいらんなとは思う。

典型例の1つが往復でルートが違う場合。

金沢~千葉を往路は長野経由と復路は米原経由とすると、往復乗車券にはならない。

ついでに東京~千葉あたりが往復で重なるから片道乗車券にもならない。

このような場合は往復まとめて連続乗車券とすることもできる。

もう1つが折り返し乗車になる場合。東京→京都→大津は折り返し乗車になるから片道乗車券は出ない。

このような場合は東京→京都→大津の連続乗車券とすることもできる。


でも、どちらも連続乗車券でなければならない理由はないと思う。

特に割引もあるわけではないので、片道乗車券2枚に分ければよい。

東京→京都→大津のような乗り方はごく一般的な使い方だと思うが、

東京都区内→京都市内のきっぷを持って、山科~大津の乗り越し運賃を払っているのではないか。

こちらも有効期限の計算は2つの片道乗車券の合計になる点が異なる。

金沢~千葉は長野経由が4日・米原経由が5日なので全部9日有効、

東京→京都→大津は東京→京都が4日、京都→大津が1日で全部が5日有効となる。

だからどうしたという話だけど。


往復乗車券の制度廃止はこれがチケットレス化の妨げになっているからという指摘があった。

EX予約では新幹線だけで600km超になる区間で往復割引タイプの商品を出しているが、

在来線とあわせて使う場合など、乗車券で往復割引が適用できる範囲とは必ずしも一致しない。

この600kmというのがけっこう微妙なラインなんですよね。


その上、往復乗車券・連続乗車券には有効期限など特殊なルールがあるが、

これを片道乗車券2枚にしても実用上の差異は少ない。

購入時に往復の出発日をそれぞれ指定しないといけないぐらいか。

片道2枚の方が区間変更などの対応もしやすいので、それでいいよねと。


それにしてもJRから往復乗車券がなくなるのは衝撃的だな。

と思ったけど、普通回数券ももはやなくなってしまったからなぁ。

(通信制の通学回数券は残っているが)

これも割引があるがためにチケットレス化の妨げになっていたのは確かだが……

バラ売りなど好ましくない使われ方もされていたわけだし。

一方でICカード非導入区間では有用性はあったと思うところもある。

大半がICカード非導入のJR四国では「6枚回数券」という独自商品は生き残ってるわけだしな。


近鉄の往復乗車券の話を書いたが、近鉄こそ往復きっぷは全然売れてないと思う。

近鉄は券売機で往復は出せないはずで、買えるとすれば窓口だけ。

昔は必ず窓口できっぷを買う駅もあったが、無人駅化で券売機のない駅になってしまった。

JRだと今でも窓口できっぷを買う駅は地域によっては残ってるかな?

そういう駅で「○○まで往復で」なんて買い求める人はいるかもしれない。

あと、JRだと近距離券売機でも往復きっぷが出せるのは案外あるんだよね。

今後も窓口では帰りのきっぷを同時に買うことはできるだろうけど、

近距離券売機ではそうもいかないでしょうから。

でも、そもそも近距離券売機できっぷを買う機会が激減しているというね。

成田空港国内線はどこにいる

成田空港といえば国際線が多くを占めるが、昔に比べると国内線の便数も増えた。

というのはほとんどがLCCによるものなのだが。

ジェットスタージャパンとPeach(旧バニラエア)によるところが大きい。


今まで何度か成田空港の国内線は使ったことがあるが、

第3ターミナルビルT3)開業後の春秋航空日本(Spring Japan)とジェットスターである。

T3はサテライト棟が国内線用になっている。

ここからエプロンルーフでの徒歩搭乗かバス搭乗ということになる。

成田空港の国内線専用に整備されたスポットというのはここぐらいである。


Peachはバニラエア統合後に一時T3を使っていた時期もあったのだが、

2020年に再び第1ターミナルビル(T1)に戻っている。

鉄道駅からのアクセスに難があるT3よりT1を使いたいということだったらしい。

T1の国内線というのは南ウイング、第5サテライトの一角に置かれている。

駅から直結とはいえ、改札口からはなかなか遠そうだ。

国際線55・56・57A番ゲートの真下あたりに国内線のゲートがあって、

これらのボーディングブリッジ経由で搭乗するか、バス搭乗するか。

意外とPeachはボーディングブリッジを使う便も多いらしい。


なお、T1の国内線施設というのはANAと共用である。

ANA自身の国内線は1日3往復で15時台到着・17時台出発に固まっている。

アメリカ線との乗り継ぎに便利にするとそうなってしまうのか。

で、この時間帯は国際線が忙しいのでバス搭乗になる便が多いようだ。

あと、もう1つ特徴的なのがラウンジで、これは国際線到着フロアに「ANA ARRIVAL LOUNGE」という名前で存在している。

その名前の通り、国際線到着客向けのラウンジなのだが、

一般エリアに設けられた国内線出発ラウンジという位置づけでもある。

利用実態としてはANA国内線出発客のほとんどは国際線到着客なので妥当ではあるのだが。


T1, T3とくれば、第2ターミナル(T2)にも国内線はあるのだが、

現在、これを使っているのはJALだけで、1日わずか3便となっている。

JALは成田空港発着の国内線の多くをジェットスターに委ねることになった。

このためジェットスター国内線にはJAL, カンタス他の便名が付与されている。

それでもJALに残るのは大阪(伊丹)が2往復、中部が1往復に限られている。

その割にはゲート数は多く、A,B,C,D,E,F,G,H,I,N,P,R,Sとある。

A~Hはバスゲート、I~Sは64, 66, 67A, 67B, 68番ゲートのボーディングブリッジに接続されているとのこと。

(このほか、到着のみボーディングブリッジが利用できるパターンもあるよう)


なんでこんなに多いんだ? と思うのだけど、いろいろ事情があったらしい。

成田空港~その役割と現状~ 2018年度 (成田国際空港)

「第2章 成田空港の施設」にこれまでの整備の経緯が様々書かれている。

1992年のT2開業後、JALとANAはともにT2を利用していた時期がある。

2002年にT2に国内線でもボーディングブリッジが使える施設が作られた。

これ以前は国内線は必ずバス搭乗になってたんですね。

ジェットスタージャパンも羽田空港の国際線も今ほどはない時代、

JALもANAもT2発着の国内線を今よりはだいぶ多く飛ばしていた。

その後、アライアンス別にターミナルを使い分けることとなり、

2006年に現在のT1の国内線施設ができ、ANAはこちらに移転した。

2011年にスカイマーク、2012年にジェットスタージャパンとエアアジアジャパン(→バニラエア)が就航、

いずれもT2を利用したので、一時的な増床も含め、国内線の拡張が図られた。

ただ、スカイマークは2014年に撤退、2015年にT3が開業して、一気に縮小。

JALの1日3往復にしても、国際線が忙しくてバス搭乗になることが多いようだ。


成田空港の国内線だが、トキエアが佐渡~成田を開設したいと言っている。

使用予定のATR42-600はまもなく日本に来るのではないか。

本当はATR42-600Sという短距離離陸性能の高い機材も買う予定だったが、

こちらは先日、開発中止が報じられている。

通常のATR42では佐渡空港の890m滑走路では乗客数の制限など必要とみられる。

(一方で佐渡空港では2000m滑走路の新設に向けた用地取得が動いている)

実現すれば成田空港に乗り入れる便では最小となるが、どこに発着するのか。

直接搭乗できるという点ではT3がよさそうな気もするけど、

やはりバス搭乗前提でT1かT2なのだろうか。なんとも言えませんが。

いずれにせよまだ時間はかかる話であろう。

手袋はめてスマートフォンを使えるように

長らく使っていた京セラ製のピーラーが壊れたのでイオンに買いに行くことに。

確かにセラミックのメーカーですね

刃の部分が悪くなったのではなく、その周辺のプラスチック部分が壊れたようで、

刃先の向きが定まらなくなったので、これは買い換えだなと。


今日は30日だから5%OFFということで大賑わい。

ブラックフライデーのキャンペーンも合わさって華やかである。

もっとも日用品・衣料品はサンキューパスポートなどで5%OFFで買うことが多く、そんなに特別感はないのだけど……

とお目当てのピーラーとあわせて食器を購入。

ついでに他の店も見ていくかと、イオンモール内を歩いて行く。


それでスポーツオーソリティの前に防寒着がいろいろとあったので、

比較的厚手のものでよさそうなのがあったので買うかと。

5%OFFの上、スポーツマイルというスポーツオーソリティのポイントが+5%とある。

というか、ここも20日・30日は5%OFFになるんですね。知らんかった。

それでスポーツオーソリティのアプリを開くと5000円以上購入で500円引きというクーポンがあり、

あと少し買えば5000円超えるので、そういえばと探しに向かったのは手袋である。

ランニング用のフリース生地の手袋があったので購入した。

ポイントは手袋を着用したままスマートフォンが使えるということである。


バイクで出かけるとき、地図を見たいことがある。

スマートフォンをハンドルに付けるキットを取り付けて使えるようにしたが、

手袋をしていてはタッチパネルが反応しないので、いちいち手袋を外さないといけない。

手袋を外したまま運転すればよいが、ずっと手袋を外しては寒い。

というわけでなかなか使いにくいなと最近思っていたのである。


実は手袋を付けたままだともう1つ問題があり、それが指紋認証できないことである。

しかし、こちらの問題については打開策があって、

それがBluetooth機器が接続されているときはロック解除を継続できる機能である。

指紋認証やPIN入力でロック解除した状態で設定した機器が接続されていれば、

それが切断されない限りは指紋認証・PIN入力なしにロック解除できる。


あとは指先が導電性になっている手袋さえあれば、

手袋をはめたままスマートフォンを操作出来てしまうわけである。

そんなことをスポーツオーソリティに来て思いだしたので探したと。

もっとも様々なスポーツ用の手袋はあるが、そういう必要性がある競技は限られる。

そんな手袋のニーズがあるスポーツがランニングだったというわけ。


そんなわけで帰り道ではめてみたのだが……

風を防がないので、特に走っているときだと冷たいなと。

ランニング用ということで汗で蒸れないように通気性がよいのだろう。

それでいて暖かさが保てるようにと、薄いフリース地のようだ。

バイク用の手袋としてはイマイチかもしれない。

ただ、それでも素手よりはだいぶ暖かいわけだし、これはこれで悪くない。


イオンモールとの往復でスマートフォンなんぞ見る必要は無いが……

帰ってきてBluetooth接続の骨伝導ヘッドフォンを接続して、

これが接続されているとロック解除が継続するようになっているので、

この状態ならば手袋だけでちゃんと操作出来ることを確認した。

ということで一応は目論見通りということで。


ちなみに指定のBluetooth機器が接続されていればロック解除が継続する機能だが、

この機器が接続されているとロック解除されるという意味ではない。

ロックされた状態で接続しても、指紋認証あるいはPIN入力が要求される。

接続後1回は指紋認証あるいはPIN入力を行わなければロック解除が継続する状態にはならない。

というわけで、単純に機器を奪われると危険という話ではない。

この機能は家などに設置したBluetooth機器を設定して使っている人もいるだろうが、

この場合でもBluetooth機器のある場所にスマートフォンを持ち込むだけでは足りず、

その場所で1回は指紋認証あるいはPIN入力でロック解除をしなければならない。

位置情報でロック解除を継続する設定も可能だが、その場合も同じはず。

読売333はなぜ必要か

こんなニュースが流れてきた。

日本企業への投資を後押し、経済の好循環図る…読売333「等ウェート型」で特定企業の値動きに偏らず (読売新聞)

新しい株価指数として読売株価指数ができるとのこと。

通称「読売333」で、日本の上場企業を333社選定して指数を計算する。

読売新聞のブランドが付いているが、実務は野村フィデューシャリー・リサーチ&コンサルティングが行うとのこと。


特徴は「等ウェート型」の株式指数であること。

算出開始時点の株価がA社:100円、B社20000円、C社4000円で、このときの指数を300とする。

等ウェートなので300をA社, B社, C社に100ずつ割りあてればよい。

すなわち 指数=A社株価×1+B社株価×0.005+C社株価×0.025 となる。

3ヶ月後の株価がA社:110円、B社19600円、C社5000円になったとする。

このときの指数は 110+98+125=333 となる。

読売333 では3ヶ月ごとにウェート調整を行うとのことだから、

これを3社に再配分すると各社に111ずつ割りあてて、

A社株価×1.01+B社株価×0.0057+C社株価×0.022 となる。


指数を計算するだけなら「経済の『体温計』」というだけにすぎないが、

指数があればそれに連動する投資信託が出てくるだろう。

読売333に連動する投資信託を買った場合には、上で書いたようなことが行われる。

すなわち資金は333社に等分に配分され、3ヶ月ごとにウェート調整される。

株価が大きく上がったC社は株価に掛ける係数が0.025→0.022と下がっているが、

これはC社の株式を売却することに相当する。その分は他の銘柄に再配分される。

あと333社は年1回入れ替えが行われるが、除外される銘柄を売って、新規採用銘柄を買うことになる。


日本の株式指数といえば、TOPIXと日経平均株価(「日経225」とも)が古くからある。

TOPIXは日本の上場企業の時価総額の合計を表す指標といってよい。

元は東京証券取引所第一部に上場する全企業の時価総額(株価×発行済株式数)を表す指数だった。

これ以外の市場だけに上場する企業は計算に入っていないものの、時価総額としてはごく小さい。

このため、TOPIXは日本株全てを表す指標といっても差し支えない。


2005年~2006年に浮動株の時価総額を基準とするようになった。

他の会社や役員・創業家などが固定的に保有する株は指数の計算対象から外すということである。

上場会社同士の株式持ち合いでダブルカウントされているのを除く意味もあるか。

さらに2021年~2025年で時価総額の低い439銘柄が順次除外されていった。

元々2168銘柄で計算していたのが2割ぐらい減ったわけだが、時価総額では99%以上カバーできている。

このため現在においても、TOPIXは日本株全てを表す指標と言える。


日経平均株価は上場企業の中から厳選された225社の株価の平均……というほど単純ではない。

現在は 225社の株価に会社別の換算係数を掛けたものの合計 を表す指標となっている。

この換算係数というのもあまり一貫性のあるものではなくて、

ファーストリテイリングだけで日経平均株価のウェートの10%超にも達することが知られている。

歴史ある指数なのはいいんだけど、投資対象としては考え物である。


TOPIXは日本株全体を代表する指数という点ではよくできているが、

投資対象として考えたとき、必ずしも優良企業ばかりではない点が欠点である。

2025年に2割減ったとは言え構成銘柄数が多すぎるという欠点もある。

日経平均株価は225社に厳選しているとはいえ、その比率はあまりに不規則。

そこで作られたのが JPX日経インデックス400 である。

TOPIXを算出してきたJPX(日本取引所グループ)と、日経平均株価を算出してきた日本経済新聞社がタッグを組んだわけだ。

まず、一定の基準で東京証券取引所に上場する優良企業を400社を選定する。

その400社の浮動株時価総額の合計に応じた指数がJPX日経400である。

この400社は年1回入れ替えが行われている。


話は戻って読売333の話である。

TOPIXの欠点と日経平均株価の欠点を踏まえた指数であることは明確である。

これに対して等ウェートの読売333ってのはどうなんだろうね。

時価総額の大きな会社の株価変動の影響を受けにくいことがまず書かれている。

後で書くのだが、実はJPX日経400もこの点は対策がされている。

もう1つの特徴が定期的なウェート調整でしょうかね。

相対的に株価が上がった銘柄から他の銘柄に配分されるという性質から、

「将来的な成長の余力がある企業の動きを取り込める特徴があり、中長期的に高いパフォーマンスも期待される。」

と言っているのではないかと思う。


JPX日経400にも時価総額の大きな会社の影響が大きいことへの対策が入っていると書いたが、

実は「400社の浮動株時価総額の合計」と書いたのは正しくなくて、

1社で1.5%以上のウェートになってしまう場合はキャップ調整比率を掛けるルールになっている。

このキャップ調整比率は年1回の入れ替え時に調整されるよう。

この結果としてTOPIXでのウェートが3.7%に達するトヨタ自動車も1.5%程度に抑えられている。

この調整が行われているのは400社中15社程度ではないかと思う。


もっともJPX日経400は様々工夫を凝らしてはいるものの、

全体的にはTOPIXの計算方法に似ているので、TOPIXとほぼ同じ値動きとなる。

さすがに厳選している分、若干よいリターンが得られているようだが。

TOPIXより少しよい というのがこの指標の最大の長所なんだろうな。

日本株全体の動きに対して悪い方向に乖離するリスクは低い。


読売333は時価総額が低い企業への投資が相対的に大きくなるのがどうかね。

「まず、売買のしやすさ(流動性)という観点から「売買代金」で絞り込み、その中から「浮動株時価総額」の上位333銘柄を採用する。」

とのことだから、ある程度は時価総額のある企業が選ばれるのだろうが……

TOPIXのウェート(=浮動株時価総額)が大きい順に並べると、

167位(中央値)が0.11%程度、333位は0.04%程度だった。

これらを全て0.3%ずつのウェートで投資するわけだから、

時価総額の大きな企業への投資をぐっと抑えて、広く配分することがよくわかる。

それが「将来的な成長の余力がある企業」への投資なのかはなんとも言えませんが。


本質的なことではないが、読売333の単位は「円」だそう。

とはいえ、この手の株価指数は基準日の数字をいくつと決めて算出を開始するもの。

JPX日経400では2013年8月30日の指数を10000(無単位)と決めている。

これを10000円と呼んでも、100ドルと呼んでも、10000kgと呼んでも、本質的な意味は変わらない。

日本企業の株価なんだから円単位の方が直感的だろうという程度か。

円単位なら小数点を使わないとうまく表せないような数字にはしないかなと。


あと、これこそどうでもいい話だけど「読売333」と聞いて、

読売ジャイアンツの長嶋茂雄終身名誉監督の名前を挙げている人がいた。

長嶋さんの背番号が3(現役時代)あるいは33(監督時代)というわけで、

読売と3と言えば長嶋さんだという話である。

特に関係ないと思うが、ジャイアンツにとって特別な数字であることは確かである。

不均一なセクタ構成

昨日、パラレルFlashのインターフェースを模擬する話を書いたが、

その後、いろいろ考えていたときに気づいたのがセクタサイズが不均一なことである。


そもそもFlashメモリというものは、消去は一定の範囲に一気に行うのが特色である。

ところでEEPROMとフラッシュROMの指すところは少し違うらしい。

EEPROMは電気的に消去・書き込みができるROMを表す言葉で、

今どきマスクROMやUV-EPROMなど作られることは少ないので、ROM=EEPROMと言っても間違いではない。

この点ではフラッシュROMもEEPROMに含まれるのだが、

部品としてのEEPROMはワード単位や比較的少量のデータ単位で読み書きできるものを指す。

これに対してフラッシュROMは一定のまとまりをもったページ単位で消去を行うものを指す。

(内蔵ROMはプログラム用では?)

ちなみにFlashの消去というのはビットを1にすることを指す。

書き込みコマンドではビットを 1→0 にする操作しかできない。

消去は時間がかかるが、書き込みは比較的短時間でできる。


消去を行う範囲で最も広いのがチップ全体である。

とはいえ、チップ全体を消去したいケースばかりではないはずである。

一部データを残しながら、一部データを書き換えたいというニーズもある。

このときに使われる消去単位がセクタである。

シリアルFlashでは1セクタ64kBとなっていることが多いようである。

ただし、後で書く通り、これより細かい単位での消去も可能である。


一方のパラレルFlashなのだが、2タイプのものが売られているそう。

1つはユニフォームセクタ型で、32Kワード単位で揃ったもの。

16bit幅の場合は32Kワードは64kBに相当する。一般的なシリアルFlashと同じだな。

こちらはわかりやすいのだが、もう1つがブート型と呼ばれるタイプで、

先頭あるいは末尾にこれより小さなセクションを設けている。

例えば最初の64kBを 16kB, 8kB, 8kB, 32kB と分けたりしている。

ブートプログラムの格納に適しているらしいが、一体どうやって使っていたんだろう?

小容量のセクションは管理情報の格納などに使っていたのかな?


このセクタ構成というのは品種により多種多様なようで、

Flashを書き換えるプログラムではこの構成を把握しておく必要がある。

そしてパラレルFlashをシリアルFlashに読み替えるときも問題になる。

パラレルFlashのxxxxxx番地からセクタイレースというのは、

必ずしも xxxxxx番地から64kBであるとは限らないからである。


それで次の疑問はシリアルFlashは8kB, 16kB, 32kB消去ができるのかということ。

これは可能でセクタを分割した、サブセクタのような単位があって、

4kB単位と32kB単位での消去にも対応しているようである。

8kB, 16kB消去は4kBサブセクタの消去を2回, 4回行えばよいようだ。

なお、メーカーによっては最小単位の4kBをセクタと呼び、

32kB, 64kBはセクタをまとめたブロックという呼び名を使っていたりする。


というわけで、なんともならないわけではないが、めんどくさいなと思った。

ブート型なんて構造のものがあるとは知らなくて、

現行のROMのアドレスマップを見て、おかしいなというところで気づいた。

パラレルROMに書いたフリ

今どきのFlash ROMと言えばSPIなどのシリアル接続のものが一般的だが、

パラレルバスのFlashというのもあって、今でも古い設計のものでは使われている。


設計変更の中で様々な事情から、シリアルFllashをデータ格納先としながら、

パラレルFlashを操作するプログラムはそのまま使いたいという話があった。

ただ、操作方法がまるで違うわけでパラレルFlashへのライトコマンドなどを、

単純にシリアルFlashのコマンドに変換するという手は取れなくて、

ライトされたデータは一旦RAMに格納するという作戦が採用されることに。

ベリファイ処理ではRAMに格納したデータを確認する形になる。

その後のあるタイミングで、別のサブシステムでRAMに格納されたデータを処理、

最終的にはシリアルFlashに格納するという形になる。


それにしてもパラレルFlashをライトする方法ってどうなってるんだろ?

マジックワードを書き込むとライトできるような話は聞いたけど……

それでデータシートを見ていたのだが、思っていたよりシンプルだった。


パラレルFlashの統一的なインターフェースをCFI(Common Flash Memory Interface)というらしい。

いろいろ調べてみるとU-BootのCFI用のソースコードがあった。

u-boot/drivers/mtd/cfi_flash.c (github)

INTELとかAMDと書いてあって、何かCPUに関係あるのか?

と思ったのだが、NOR Flashを世界に先駆けて投入したのがIntelで、

それに次いで投入したのがAMDと富士通だったらしいですね。


もっともこれらの会社は現在、Flash ROMの製造を行っていない。

AMDと富士通は2003年に両社の合弁会社のSpansionに移管、

その後2015年にCypressに買収、さらにCypressは2020年にInfineonに買収された。

S29……という型名が付いているが、SはSpansionのことでしょうね。

いずれにせよInfineonがAMD系の正統なんですね。

一方のIntelだが、STMicroとともにNumonyxを設立、同社は2010年にMicronに買収されている。

ただ、調べた限りではMicronの現在のFlashもAMD系のコマンドのようだ。


というわけでAMD系を考えればよいわけである。

flash_write_cfiword がライト、flash_eraseがセクタイレースに相当する。

いずれも最初にflash_unlock_seqで2つのマジックワードをライトしてロック解除する。

ライトはその後にもう1つマジックワードをライトして準備完了、

次にライトしたいアドレスにライトしたいデータをライトする。

その後、flash_status_pollで同アドレスをリードして、ライトデータが読み出せるようになるまでポーリングしている。

セクタイレースは、その後にマジックワードを3つライト(うち2つはflash_unlock_seqと同じ)して準備完了、

次にセクタアドレスにマジックワードをライトするとイレースを開始する。

flash_status_pollで同アドレスをリードして0xFF…が読めるまでポーリングしている。


普段はリードするとそのアドレスのデータがリードできるのだが、

ライト・イレース中は特別なデータが読めるようになっている。

ポイントは7bit目がライト中はライトデータの7bit目の反転、イレース時は0であること。

ライト・イレースの完了後は通常のリードができるモードに戻って、

正常にライトが完了すると、ライトデータが読み返せるはずだし、

正常にイレースが完了すると0xFF…が読み出せるはずであると。

ライト・イレース中は少なくとも7bit目は完了後の期待値と違うはずだと。


シンプルに言えばこれで終わりである。

冒頭に書いたのだが、ライトコマンドをRAMへのライトにすり替えるとすれば、

マジックワードがライトされた後のライトアクセスをRAMに投げて即完了、

次にリードしたときにはRAMからデータがリードできればOKということになる。

イレースも少なくともセクタ先頭アドレスに0xFF…をライトしてやれば、

以後はそのデータが読み出せればOKということになる。


ライト・イレース中は少なくとも7bit目は最終結果と不一致になる仕組みだが、他のbitにも意味はある。

6bit目はライト・イレース中はトグルすると記載されている。

リードするたびに6bit目のデータが反転するそうである。

トグルが止まったことを確認することでライト・イレース完了を確認する考えもあるらしい。

5bit目はライト・イレース中は通常0だが、時間制限を超過した場合に1がセットされるとなっている。

7bit目が不一致で5bit目が1だったらエラーという意味なんだろうな。


ピン数削減などの考えもありシリアルFlashを搭載するというのを最初に考えたときは、

パラレルFlashのコマンドをシリアルFlashのコマンドに変換すればいけるはずと本気で考えていたらしい。

しかし、いろいろ無理があったようである。

RAM容量に余裕があったのが救いだろうか。

0とか1と書くよりも

マイコンのプログラムを静的解析にかけるといろいろ指摘が出てくる。

アライメントについての指摘は真面目に検討した記録を残さないとなとか、

符号あり/なしとかビット幅に関する指摘はほとんど空振りだなとか考えて見ていたが、

その中で気になったのがNULLポインタと_Bool型についての指摘である。


C言語でNULLポインタは 0 と書けばよいと理解していた。

(void*)0 をNULLと定義して使っている例も多いが、

本質的には 0 でNULLポインタの意味になるので問題ないと。

これは間違いではないのだが、単に0と書かれると数値なのかポインタなのか判然としない。

なので直接0と書かずに、定数NULLを使いなさいという指摘だった。


_Bool型、C99で導入された論理型である。

C言語に後から追加された型ということで、互換性の問題からアンダバーはじまりの型名になっている。

_Bool型も同じような話があり、真は1、偽は0で表すことができる。

ただ、これも一見するとただの数値型に見えるのでわかりにくい気がする。


例えばJavaとかだと null, true, false というのは予約語となっている。

しかし、Cにはこの手の予約語は存在していない。

なのでCでそれに相当するものは 0, 1 というただの数字だと考えていた。

でも、そんなコーディングしてると危険ですよと指摘されてしまったと。


調べたところ判明したのは所定のincludeを記載すれば、そのための定数が使えるということだった。

#include <stddef.h> とすると、NULLポインタを表す定数NULLが定義される。

#include <stdbool.h> とすると、定数true, falseが定義され、それぞれ_Bool型で真・偽を表す。

ついでに_Bool型のエイリアスとして bool型が使えるようになるらしい。

_Bool x,y = 0,     1;    //stdbool.hなし
bool x,y = false, true; //stdbool.hあり

stdbool.hなしだと上のような怪しげな表記になるが、stdbool.hだとわりと素直である。


そういえば uint32_t などの型名を使いたい場合も #include <stdint.h> と書かないといけないんだよね。

stdint.h はC99で追加された標準ライブラリで、ビット幅を使った型名が定義されている。

あまり使わないかも知れないけどポインタ型と同じ幅の整数型 uintptr_t なんてものも規定されている。


できるだけ新しい予約語を増やしたくないということで、

統一的な記号でも標準ライブラリのヘッダに組み込むようにして、

それが必要な場合はincludeするようにしているのだろう。

裏返せばincludeしなければ、これらの記号を別の使い方をしてもよい。

#define true 100
#define false -100

のようなstdbool.hとまるでちがう定義が過去になされていたとしても、

stdbool.hをincludeしなければ特に問題ないというわけである。


ちなみに2023年版のC言語である C23 が制定されたらしいのだが、

そこでは nullptr, bool, true, false が予約語になるらしい。

さらにNULLポインタを表す型として nullptr_t という型が規定されるらしい。

nullptr_t型はC++ではC++11で導入された概念らしく、これがCにも展開されたと。

さすがにC23にはコンパイラが対応していないわけだけど、

C23なら stdbool.h もなく true, falseが使えるし、

NULLポインタは nullptr と書くのが好ましい対応になる。

現時点で考えることではないでしょうけど。

ウマ娘はコラボしていると言えるか?

ANIMAX MUSIXではテレビ番組のごとく特集コーナーが差し込まれ、

その中ではコラボレーションやカバー曲など行われるわけだが、

常々思うのは、ウマ娘はコラボが苦手ということである。


どういう観点で特集枠で披露する曲やその組み合わせを決めるかというのはある。

ファン投票上位の曲に適宜割りあてているだけというのもあるだろうし、

キャラクタを演じたとか、作詞・作曲に関わったという観点もある。

「KOTOKO 3本勝負」としてKOTOKOさんが作詞に関わった曲でコラボ3連発したのはその一例。


バンドリのバンドが出演することも多いが、

この場合はカバー曲としてやったことがある曲を活用することが多い。

半分持ち歌みたいなものなのだが、そこに何らかの意味を持たせていると。

コンテンツものはこのあたり難しいなと思う。


一方でそれコラボか? というのもある。

印象深いのは2023(横浜)に大橋彩香さんがMUSIX BANDとのコラボという名目で「Be My Friend!!!」を披露したこと。

ソロで2曲披露して、自分の持ち歌をコラボ枠の1つとして追加で1曲やった形である。

しかもコラボ相手はバックバンドである。大橋さんがドラムを叩く人だからこそ成り立つものだった。

コラボという体裁ならば追加で1曲できるという考えと言ってもいいかもしれない。


で、冒頭の話に戻るのだが、ウマ娘のコラボというのは常にそうなのである。

2019 OSAKAのとき、シークレットゲストとしてウマ娘が登場したが、

これは「大橋彩香×Machico×ウマ娘」という名目のコラボである。

元々ソロの歌手で出演していたウマ娘出演者2人に4人加わって、ウマ娘として登場したと。

元々いた2人も耳付けて、うまぴょい伝説 と Make debut! の2曲を披露した。

2021にはウマ娘は出演者にいて2曲披露、

その後「お祭り!全力ペンライト SELECTION」で小倉唯さんとのコラボで「うまぴょい伝説」をやった。

小倉さんはウマ娘出演者、ちゃんと耳も付けてステージに立っている。

それ言うほどコラボか? フェスの機会を狙って1曲だけ追加出演した感じだな。

2022でもウマ娘は出演、2曲披露した後に オーイシマサヨシ とのコラボで うまぴょい伝説 を披露。

2023でもウマ娘は出演、トリで3曲披露したのだが……

そういえばここまでコラボなかったなと思ったら、伊藤美来さんとのコラボでうまぴょい伝説 を披露。

今回は3曲披露した中で1曲目のReady!! Steady!! Derby!!は作詞・作曲つながりでオーイシマサヨシ とのコラボ、

さらにCHARACTER SONG SELECTIONで中川翔子さんとのコラボで うまぴょい伝説 を披露……


と見てわかる通り、これまでのコラボと言っているもの、

全部ウマ娘の楽曲だし、うまぴょい伝説をやるための口実という側面が強いのである。

2019 OSAKA・2021・2022は2曲+1曲、2023・2024は3曲+1曲となるわけ。

このコラボが真に効果的なのかは疑問である。

ただ、ウマ娘にとって他の歌手の曲をやったりするのは難しいのかも知れない。


ウマ娘はもうちょっとやりようあるだろとは思ってるんですけどね。

でも、設定的にはウマ娘はウイニングライブをやるというだけであって、

一般的なアイドルのごとくカバー曲を普通にやるようなコンテンツじゃないんだよな。

そう考えると仕方ないのかなとも思うけど、面白くないよなとは思う。


アニメ・ゲーム関係の音楽フェスで筆頭はアニサマで、

これはとにかく規模がでかくて出演者も多いが、その分出番は絞り込まれる。

逆にリスアニ!LIVEは出演者は少ない分、きっかり区切ってまとまった曲数をやる。

これらと比較するとANIMAX MUSIXは企画コーナーの多さが目立つ。

それぞれ2~3曲程度はやった上で、コラボやカバーなどが別に入ると。

そこに適している出演者かというのはあるんですけどね。

ウマ娘のコラボがあまり効果的でないと書いたけど、

今回で言えば「Sizuk」も、それSizukとしてのコラボか? という話はあった。

Sizukとは何者か

これは「俊龍SELECTION」とかやればよかったのだが、入り切らなかったということでリベンジに期待。

はるか号が山科発着になる理由

話題になっていたのですが……

京の東の玄関口 山科駅改良について ~特急「はるか」の山科駅延伸により京都市内アクセスがより便利に~ (pdf) (JR西日本)

関空~京都を結ぶ特急はるか号が1駅延長となり山科発着になると。

このためには山科駅の改造工事が必要で、ホーム増設も伴う大がかりなものである。


昔から新幹線などから東西線への乗換には山科駅を使うことが推奨されている。

京都市内発着の乗車券がなければ高く付くことも多いのですが。

京都市としても市内各所が観光客で混み合う中で、

山科・醍醐への観光客の分散を図りたいという話がある。

観光客、とりわけ外国人観光客の足として重要な はるか号を山科に延長することで、

主に東山方面への往来を山科経由にシフトさせ、山科・醍醐への観光客誘導を図りたいと。


ただ、山科駅の改造ってのはけっこう大変な話なんですよね。

そもそも はるか号は朝夕を中心に滋賀県内まで延長運転をしている。

滋賀県内の通勤客が利用することを意図してるんだけど。

滋賀県内までの延長運転を増やすことでも同じ効果は得られる。

とはいえ、1日中、京都~草津を延長運転すると所要編成数も増えてしまう。

京都~山科の延長に留めれば現状と同数ぐらいで対応できるのではと。


この計画には別の目的が隠れているのではと言われている。

それは京都駅の「はるかホーム」こと 30番のりば である。

現状でも滋賀県内発着便はここに入らないが、残りも山科発着になれば全く使わなくなる。

そうなるとこの乗り場はどうなるのだろう? と気になるわけである。

この乗り場をはるか以外で使えるのは嵯峨野線(山陰本線)に限られる。

(実際、1日1本だけ きのさき号 が使っている)


嵯峨野線の利用者は近年伸びている。

観光客の利用が増えていることが大きい。サッカー観戦とかもありそうだが。

その混雑をさらに激化させているのが京都駅の構造だと言われている。

京都駅西側に行き止まり式のホームなので、京都方の車両が混みやすいのである。

ただでさえ4両編成が多く混みやすい上に、その中でもだいぶ偏りがあると。

分散乗車を呼びかけているが、そうはいっても構造上難しいのが実情である。


このような問題にはホームの中間に通路を新設するという方法が考えられる。

過去にそのようなことが試みられたことはある。それが西洞院口である。

2007年に新設された改札で30・31番のりばの先端付近に出入口が作られ、

ビックカメラ店内に設けられた改札口につながる形になっていた。

しかしビックカメラJR京都駅店は2023年に閉店、閉鎖となった。

店の都合で改札口がなくなるとはひどい話だと思うかも知れないけど、

元々あまり効果的ではなかったのである。

直接、京都駅の外に出る人しか使えない上、30・31番はどちらも特急用、

混雑で問題なのは普通・快速だからどうやっても使えない。


そこで気づくのだ。「はるかホーム」が明け渡されれば30・31番を普通・快速で使ってもよいのである。

30・31番のりば の幅は比較的広いので、これだけでも混雑緩和効果がある。

さらにこうなれば西洞院口は日常的な利用には有用になる。

33番のりば自体なくすか、降車用ホーム(34番)を撤去して動かすことで、

幅が狭くて西洞院口への通路を作れなかった(と思われる)、32・33番も先端に通路を作れる可能性がある。

ここまで来れば嵯峨野線の専用改札としては十分役立つものとなる。


この他、京都駅西側に新設が予定されている橋上駅舎との関係を考えても有利である。

京都駅新橋上駅舎・自由通路の整備について~西エリアへの玄関口・動線の一体整備による機能強化~ (pdf) (JR西日本)

日本郵政・JR西日本は京都中央郵便局と隣接ビルをあわせて改築する計画を進めている。

この新ビルにつながる形で橋上駅舎を作り、そこに改札口を新設すると。

この図を見てみると、嵯峨野線と0番のりばへの接続は30番のりばの付け根になっている。

利用者の多い普通・快速の乗り場を30・31番に寄せた方が効果的だし、

この接続点を作るために30番のりばを西にシフトさせる必要があるので、

最大で9両編成になる はるか号 が来ないようにしたかったという事情もあるのかもねと。


というわけで壮大な計画の一歩がはるか号の山科延長のようだ。

ただ、これ自体もけっこう大がかりな工事なんですよね。

嵯峨野線の混雑は待ったなしだけど、山科駅の工事は4年はかかるんだよね。

なかなか即効対策とは言えないのが難しいところである。


余談ですが、少し前まで はるかホーム に由来して改札口があった。

京都駅の秘密の改札口がクリスマスに営業終了 元は空港関連の施設だった (鉄道コム)

地下中央口という30~33番のりばへの通路の途中につながる改札口が2022年まであった。

そう言われると便利そうだが、中央改札の地下あたりにつながっているだけで効果的ではない。

元々はこの地下中央口の前の地下空間には京都CATという飛行機の搭乗手続きができる施設があった。

初代はるか号には京都CATで預かった荷物を運ぶための荷物室が設けられていた。

京都CATで手続きして、人は地下中央口を通って、はるか号に乗るという考えだった。

ところが京都CATは保安体制の強化などもあり廃止されてしまった。

京都CAT跡地は荷物預かり所として活用されているが、特にここに改札口がある必要性はないので廃止されたと。