/var/log/hdk.log

2016 年 6 月中旬


10 (金)

%1 テストプログラム

きのうのやつは移植ミスというか、512 バイトにおさめようとバカなまねをしたせいで困ったが、結局 ROM 上で実行することで何とかなった。

何となく JX のフォント ROM をダンプして眺めていたらロシア文字が範囲外の変なところに紛れ込んでいて本来の位置にないことが発覚。 何だろうと思ったが実際に BIOS で文字出力するとコード変換されてる。 うわー、知らなかったw 文字コード表を見るとロシア文字の後ろのところは大きく間が開いているので、ROM 圧縮の都合だったんだろうな。 何しろ 256KiB のアドレス空間なのに実際の ROM は 128KiB らしいからなw

%2 ThinkPad

自宅ノート PC の SSD 容量が少々物足りなく感じられる今日この頃。 まだ買ってから 4 年ちょっとしか経っていないのだが、どうしようかな。 まぁ我慢できないほどではないが。

職場の ThinkPad X200 は冷却ファンが動いたり動かなかったりという状態、Fan error を Esc キーで無視してしばらくファン回ってないまま使ってから電源を入れ直すとか、そのときに本体をどこか押さえつけながらやるとか、電源だけでなくバッテリーの着け直しをするとか、いろいろ工夫するとまた回り出すんだけど、いつか自宅の ThinkPad X201 もこうなるのかなと思うと、あんまりお金かけないほうが良いかなという気がしてくる。 不具合といえば自宅の ThinkPad X201 は時々無線 LAN の接続が切れることがある。

2016/06/10 のコメントを読む・書く


11 (土)

%1 フォント

JX エミュレーター用のフォントをフリーフォントから作成する方法を前々から考えていたのだが、重い腰をあげて実装し始めた、ら、丸 1 日かかったw 例によって 8x8 ドットの英語フォントをどうしようかと考えると、やっぱりビデオ BIOS から取得するでしょ、となって、そうすると DOS プログラムってことになる。 日本語・全角フォントは東雲フォントが最適とわかっているから、それを使うことにする。 半角は同じく東雲フォントの 7x14 サイズを使うことに。8x8 ドットの日本語フォントは英語フォントと 7x14 フォントの縮小の合わせ技で。 みたいな感じで方針は決まる。

さて実際の ROM はどうなってんのかな、というと、結構トリッキーだ。JX の内部コード・フォントの配列は基本的に Shift_JIS なのだが、Shift_JIS で漢字が始まるのは 889fh のところからだ。JX は罫線文字などを持たないから、その手前は 8491h のロシア文字で、だいぶ間が開いている。 後ろは第二水準を持たないので 9872h が最後ってことになる。 フォント ROM の領域としては計算上は 9fffh が最後だ。

で、ハードウェア的に圧縮って何だよと思っていたが、まず目立つのは、b0000h からの 64KiB と 90000h からの 64KiB が完全一致ってところだ。 ソフトウェアからこう見えるということは、ハードウェアには片方しか載っていないのは間違いない。 こんなとんでもない事実に今まで気づいていなかった。 ついでに、上に書いた 889fh よりも手前の空き部分に、9840h からの最後の部分が押し込まれていて、これが b0000h からの領域でアクセスされる最後の部分であり、その後ろに第一水準の漢字が再び始まっていても誰も使わないから問題ないということだろう。 そのほかにも 87800h からの 2KiB が 9e000h から (と、当然 be000h から) にも見えているとか、80000h からの 2KiB が a0000h からにも見えているとか、そういう小さな単位での重複も結構ある。 さらに、外字用の SRAM が 88000h からの 2KiB に配置されていることの対策として、8440h からのロシア文字が、8100h からと 8200h からの空きスペースに押し込まれていて、これはソフトウェアで変換されている。

それと、BIOS の挙動からするとチェックサムがあるらしいのだが、これがまたへんてこな形で、最初の 32KiB だけはシンプルなのだが、それ以降は 2KiB ごとにとびとびにチェックサムを計算するっぽい。 あ、あれ? 32KiB + 2KiB * 3 * 16 = 128KiB だ。 なんと、BIOS は ROM にハードウェア的に含まれているところだけのチェックサムをとっていたんだ。 へぇー。 メモリー空間 256KiB のうち、b0000h からの 64KiB と SRAM 用と空き領域の 32KiB を引いて、残りの 32KiB を、Shift_JIS の 2 バイト目で使われない 00h-3fh のところがちょうど 2KiB だから、そこを飛ばすことで減らしたんだな。

で、DOS プログラムで作りやすいのは COM 形式だ。COM 形式はヘッダーがいらないのでそのへんの x86 アセンブラーを適当に使えば簡単に作れる。 でもスタックを含めて 64KiB までにおさめなければならない。 フォントデータだけで 100KiB を超えるわけで、困る。 仕方がないのでフォントデータは別ファイルにすることにして、それを読み込みながらファイルを作るプログラムを書く。 最初はチェックサムを計算しながら作ればいいかと思っていたが、構造上、後から計算しないと厳しい。 そこで BIOS フォントを埋めるのも含めて後からそういう処理は行うようにした。 チェックサムを合わせるだけで一苦労、さらに、半角の制御文字のところにある罫線文字やら何やらを他のデータから生成するコードを書いていたら日が暮れてしまった。

%2 小林麻央

なんか、きのうのニュースで小林麻央が乳ガンで闘病中であることが発表されたとか。 小林麻央・小林麻耶姉妹は、たまたま兄者の影響で見ていた頃のテレビ番組『恋のから騒ぎ』からテレビ出演が始まったふたりで、よく見たら小林麻央のほうは自分と同学年じゃないか、そうだっけ、そうだったかもねぇ。 テレビでしか知らない人ではあるけれども、同い年でガンというとやっぱり大変だろうし、何とか良くなってほしいところではある。

小林麻耶のほうはたぶん、『新チューボーですよ!』の 1000 回記念が去年あった時に、4 代目アシスタントとして登場して、確かそのときだったと思うんだが、妹の家に遊びに行くだとか、甥姪がかわいいだとか、そういう話をしていたような記憶がある。 今にして思えば、あの時すでに妹のガン発覚から半年くらい経っていたことになるわけで、そのことは把握していたに違いないし、遊びに行くというのもむしろ手伝いに行くということだったのかもと。 でも、暗い表情などは全くなかったと思うし、極上空間などのアナウンサー業もついこの前まではやっていたもんなぁ。 家族の心労もすごいだろうな。

小林麻耶は極上空間にゲストとしても出演していたみたいだが 9 月 1 日が土曜日といえば 2012 年だからだいぶ前だな。 縁結び大社とかいってるのなんか記憶にあるけど。

2016/06/11 のコメントを読む・書く


12 (日)

%1 渋谷・鹿児島おはら祭の日

ボランティア担当は明治神宮前駅近くの超わかりにくいところにある建物に 9 時集合。 新宿での私鉄・JR 乗り換えが決まって検索していたものより 1 本早いのに乗れた。 たぶん初めてな気がする原宿駅下車で徒歩で向かってちょうどいい時間。

軍手やら何やらを受け取り、9 時台なのに早くも昼食をとる。 そこから徒歩で会場へ移動し (1.2km)、お祭り本番。 終わったら徒歩で最初の建物に戻り (1.2km)、返却・片づけ等をして、徒歩で渋谷へ移動し (1.2km)、高校の同窓会の連の打ち上げに参加し、帰宅。 帰りは吉祥寺行きの急行待ちの列に並んだらいい感じに座れたので、遠回りして終点まで乗って帰った。

何が疲れたって少なくとも 4km は歩いたってことだよ! 普段そんなに歩かない (たまにせいぜい 1 駅 1.6km 歩くくらい、それを朝晩で往復するのもまれで、それからまた行くなんてことはない) 者にとってはなかなか厳しい移動であった。 一人だったらバスか地下鉄にでも乗っているところw

日焼け対策は、SPF50+ PA+++ な日焼け止めを顔・耳・首・手首あたりに塗ったのと、長袖 T シャツで行ったのと、もらった帽子 (後ろ側メッシュ) をかぶっていたのと、もらった手ぬぐいを帽子に挟んでいたのと、もらった軍手をつけていた程度。 熱中症対策は、もらった飲み物を最初の建物に置き忘れ、まーいいかと思っていたけどさすがに直射日光を受けていたら体調の変化を感じ始め、スマートウォッチで心拍数測定してみたら、ろくに動いていないのに 133 回/分程度の数字が出て、普段よりも高めだと思ったので近くの自販機でジュースを購入した。 また、買ったジュースを脇に挟んで体温を下げようともしたが、その程度。 心拍数が数字ではっきり出るのは、自分が冷静になれるのでよいと思う。

あ、そうそう、打ち上げ会場は渋谷駅からほど近い飲み屋なのに、ドコモは圏外 (高く持ち上げても圏外)、au は使えたらしく、ソフトバンクモバイルは不明、ワイモバイルの PHS は弱いが一応使える (ポケットの中では厳しいが高く持ち上げれば問題なく通信可能) だった。

%2 頸椎のアレによる痛み

歩く→問題ない。 外で立ってる→問題ない。 外で座ってる (しゃがんでる)→視線に気をつければ問題ない。 上のほうを見ようとすると、めがねをかけている関係で、首を上に向けてしまいそうになるので注意が必要だ。

飲み会→若干肩こりみたいな症状が現れる。 前回もあった。 後ろの人を見ようとして首だけを回す、ことがないようには気をつけているのにな。 猫背か? 猫背は下を見るならむしろ適しているのだが、猫背で前を見るには首をあげることになり良くない。 というのも気をつけているつもりなんだけどなぁ。 あとは頭の前後位置か、頭だけ前に出すみたいな、そういうことをやっちゃってるのかなぁ。 とにかく日常生活でのちょっとした動作が刺激するので、今後も気をつけねば。 少なくとも刺激を続けて炎症を起こしてしまうのは避けなければと。

2016/06/12 のコメントを読む・書く


13 (月)

%1 げつようび

朝は完璧に雨だった。

夜はムーバスに乗ってみたら小田急バス運行の車両だった。 案内放送の声が小田急バスだ。 車両は少々くたびれている感じで、すごく早めのシフトアップをする AT が、シフトアップのたびにエンジンの回転数がふわっと上がってからギヤが変わるみたいな動き。MT ならアクセルをゆるめずにシフトアップしているような感じ。 あと今のエルガ AT とは違って後部扉が閉まりきっていなくてもクリープ現象で動き出せるようだ。 へぇー。

%2 SDL2

MinGW(Msys)でSDLを始める

これを参考にちょっと作業をしようかなと思ったらこれ SDL2 じゃーん! ってなわけで拙作 JX エミュレーターを SDL2 に移行してみるテスト。 音関係は何も変更無し。 キー入力関係は SDL_KEYDOWN イベントを使うのは同じだが、スキャンコードとキーコードが選べるようになったみたいなのでスキャンコードを使うことにする。 まーエミュレーターでどっちがいいかは善し悪しなのだが、例えば US 配列と JIS 配列でも : の入力にシフトキーを押す必要があるかないかが違うわけで、そして JX は US 配列に JIS 配列のキーを足した特殊配列なわけで、もしシフトキーを押さずに : が押されたときに : の入力をエミュレートするなら、シフトキーを押して : を入力してシフトキーを離すという流れをやらなくちゃならない。 これは面倒なのでスキャンコードにしようかと。

あと SDL_KEYDOWN がキーリピートの時に何度も飛ぶように変更になっている。 リピートかどうかは判定できるようになっているのでそれを見るようにする。

一番やっかいなのは画面出力まわりだ。 テクスチャーがどうのこうのと言ってなんか面倒だ。 アクセラレーションが使えて云々というのだが、こっちが使いたいのは 8 ビットカラーのビットマップ画面をパレットを変えまくりながらがんがん全面更新したいというだけで、基本 CPU 処理になるのはそもそも避けられない状態なのだ。 こういうときどうするのかと思えば SDL_GetWindowSurface() というのを使うといいらしい。 ただしこれに 8 ビットカラーを設定するわけにはいくまい。 そこで別途 SDL_CreateRGBSurface() (RGB とあるが 8 ビットカラーも OK だ)、SDL_AllocPalette()、SDL_SetSurfacePalette() などを用いて裏の作業場所を作っておいて SDL_BlitScaled() で転送する。

ここにトラップがあり SDL_BlitScaled() は 8 ビットカラーではうまく動かないらしい。 そこでもう 1 枚 SDL_CreateRGBSurface() で 32 ビットカラーを用意しておきそこに SDL_BlitSurface() した上で SDL_BlitScaled() を使う。 メモリーコピーしまくってそうなのに余裕で動くのはさすが今時の PC だ。 あと、パレットは直接 colors 配列をいじってもだめみたいで、SDL_SetPaletteColors() を呼ぶとうまくいったからこれもコピーだな。

まぁそんな感じで SDL1→SDL2 はドキュメントがいまいちだが使ってる機能が少ない分作業はそんなに難しくはない。 むしろ 15 年ほど前に書いたとおぼしき自分のクソコードがいろいろと意味不明で笑った。 変数名は意味不明だしアルゴリズムもいい加減だしなんかよく動いてんなこれ、みたいな。 バージョン管理システムも使ってなかった頃のコードで、いろんなところにコメントで古いコードが残っている。 謎なコンストラクターがあると思ったらこれもともと継承していたのをくっつけたかな? だとしたらくっつけたのは 8 年ほど前だとは思うが、みたいな感じでとにかくいろいろと雑でもう。

2016/06/13 のコメントを読む・書く


14 (火)

%1

先月に似た事象、ただし最寄り駅到着時点で、乗り換え先路線の運転見合わせの案内放送が聞こえていた点と、人身事故が快速ではなく緩行線のほうという点は違った。

歩く気力がなかったため乗換駅で数分様子を見る。 しかし運転再開見込みが 30 分後で先が思いやられる。 外でバスを待っていると駅ホームの放送が漏れ聞こえてくる。 先が詰まっているからしばらく動かない見込みというふうなことを案内している。 ふむふむ、バスで正解か?

バスに乗って発車を待っていると、駅ホームから発車メロディーが聞こえ、ドアーが閉まります、が聞こえ、発車していったよおいおい! バスが発車した後にも次の列車が発車していくのが見える始末。 しばらくって 5 分ってことだったのかよー。

まーそんなわけでおそらくいつもならあり得ないレベルの混雑したコミュニティーバスで移動したのであった。 一時停止をすべて徐行で通過していたのはさすが。

%2 クソコードを書き直すの巻

きのうの SDL2 移植時に発見したキーボード処理のクソコードを書き直すも手こずっている。 どうも理解しがたい動きをするなと思ってデバッグしていると、最近書き換えた Makefile にミスがあり、必要なコンパイルがされていないことが発覚した。 それをなおしていい感じに動くぞ、と、とあるゲームを試そうとしたら入力がちゃんと処理されていない風で、キーボードを使う、って入力しているのに、ジョイスティックがないみたいだからキーボードを選んでね、とか出てくるのである。 あれれれ。 今までいい加減に手抜きしていたせいで動いていたみたいで...

2016/06/14 のコメントを読む・書く


15 (水)

%1 JX エミュレーター

バイナリー置き場

SDL2 対応が済んだので Windows バイナリーを構築してみたのであった。 MinGW(Msys)でSDLを始めるというサイトを参考に、SDL2 のソースコードをアーカイブでゲットして ./configure --prefix=/path/to/prefix --host=i686-w64-mingw32 して make して make install したら SDL2 の Windows 版のライブラリー構築完了。 どうも --host なのかどうか理解できなかったができてるっぽいからいいや。

で make するんだけど環境変数 PKG_CONFIG_PATH=/path/to/prefix/lib/pkgconfig/ を設定しておくことと、CC=i686-w64-mingw32-gcc と CXX=i686-w64-mingw32-g++\ -mconsole をつける。 リンク時に -mconsole をつけないと GUI アプリになるみたいで、少々強引だが CXX につけてしまった。 拡張子 exe は確か今時はつけなくても動いたと思うけど、わかりにくいのでつけるようにしよう。

そして実行時ライブラリーが必要だ。/path/to/prefix/bin/SDL2.dll はもちろん必要だが、そのほかに libgcc_s_sjlj-1.dll と libstdc++-6.dll というのが必要で、このふたつはどうやらソースコードなしで再配布して良いらしい。 これらは /usr/lib/gcc/i686-w64-mingw32/4.9-win32/ にあるが、/usr/lib/gcc/i686-w64-mingw32/4.9-posix/ にもあるので迷った。 どうやら winpthread なるものを使う場合は posix のほうで、それを使わないなら win32 のほうらしい。 というような説明を Debian/Ubuntuでmingw-w64を用いてWindows向けのプログラムをコンパイルする - kakurasan で読んだ。 大変参考になる。

ってなわけでひさびさに Windows 版を自分でビルドしたので (以前は Cygwin だったかなぁ)、Windows 環境で動かしてみたがいたって普通である。 性能の低い Athlon 5850 でもちゃんと動くんだなと感心した。 なお、おそらく画面サイズがピクセル単位で固定なので今時の高解像度画面な人は涙目になりそうな仕様であるw

ちなみにきのうのキーボードまわりのクソコードであったが、見やすく書き直した。 キーコードの各ビットの送信タイミングの数字に何かごまかしをしていたんじゃないかと思ったが、なんとマニュアルぴったりで、我ながらよくここまで正確にエミュレートできたなと感心するところである。 ゲームが変だったのは、最初の質問に Y と答えた直後の画面切り替えに伴う NMI 禁止時間が長く、Y キーを離したという情報が失われてしまい、その結果ジョイスティックを使うかの質問で Y キーを押したことになってしまっていたようだ。 実用性を考え NMI 禁止時間が一定時間内であればキーコード送信を遅らせるという、実機では絶対にあり得ない機能をつけておいた。 そもそも、高速操作の対策として内部にキーバッファーを持っている時点で実機とは違うのだし、細かいことは気にしないことにしよう。

%2 KALOS2

画面サイズが 10 型前後 (対角線 25cm 前後) のタブレット端末を探していて、うさんくさいメーカー (?) の KALOS2 というのを見つけた。 価格帯は Lenovo のタブレットよりもちょっと高額で、iPad Pro よりは低額。Lenovo のやつもよさそうだが今更 Android 5.1 というのが引っかかる。 だって 3 年以上も前に買った Nexus 10 でさえも今は Android 5.1 なんだよ? わざわざお金を出して古いやつを買うかっての。

安心感でいったら iPad Pro なのだろう。 もう何代目かになるし 2 年くらいは問題なく使えそう。 画面はさらに大きいから、漫画も読みやすそうだ。 欠点は日本語入力だろうな。 画面の大きさは十分だが、JIS かな入力ができないのは頂けない。API は今は公開されているのだから誰か作っていないかと思ったが見つからなかった。

KALOS2 はストレージサイズも余裕があって、そのへんスペック的には良い。USB Type-C というのも時代の先を行く感じで良い。 あと画面がこのサイズなのに有機 EL で、そこも興味深い。 特に YouTube 等の動画鑑賞は、残像が見える Nexus 10 より良いのでは?

スペック上の欠点はバッテリーか。Nexus 10 は 9000mAh だが KALOS2 は 5800mAh しかない。Android のバージョンが新しいし、液晶でもないのでそれほどつらくはないのかも知れないが、他社製と比べるとちょっと見劣りする数字だ。 その代わり軽い。

値上げしたってのは悔しいが、実物を見てみてよさそうだったら買っちゃうつもり。

2016/06/15 のコメントを読む・書く


16 (木)

%1 休暇

本田技研工業株主総会。 東京臨海高速鉄道りんかい線経由。 東京テレポート駅から無料送迎バス (一般路線バス車両の貸し切り)。 タカタのエアバッグ問題は引き続き、だけどこれはタカタ側の問題に関してはタカタ側に請求をしているとのことなので、まるまる損失というわけではなさそうだ。 後は無難に (?) 二輪の新型車とか四輪の新型車とか、うん。 ホンダジェットの話があまりにも軽くて質問で突っ込まれていたが、これはやっと数機が顧客のもとに届いたくらいの頃のようで、現段階では赤字。 たくさん売って、しばらく飛んで、部品交換まで来てやっと事業として回るということで長い目で見てくれって。 まぁ小型の航空機なんて、持っていてもどういうふうにお金がかかるのかまるで想像がつかないので、へぇって感じだ。 モータースポーツに関しては突っ込み無し。 役員に F1 担当の人が増えるということでそこだけ。

今回は副社長が交代だったみたいで、前回の社長交代と同様、取締役会で決定するようだった。 展示はアフリカツインと電動カブと、NSX, 燃料電池車など。 電動カブはユニットスイングなんだな。 でもそりゃそうか? まさか電動なのにチェーンドライブってわけにもいかないしな。

また東京テレポートまで戻り、メガウェブ行ってレンタルカート Fun カートライドのところを見に行ったら、平日で空いていそうなのにもかかわらず前回同様またしても 1 時間半待ちなどと言われ、やる気をなくす。 なお、ここは 25 日をもって運営を終了するとのこと。 あと 1 週間ちょっとじゃないか。 乗る機会はなさそうだ。

めしくって新宿行って迷いながらビックカメラにたどり着き、KALOS2 を触る。 タッチパネルの感触がいまいちだ。 単にタップしたつもりでもスクロールすることが多々ある。 動きもちょっとぎこちないところもある感じがする。 画面はいいのかな。 とりあえず購入。

%2 KALOS2

とりあえず Google Play 開発者サービスがクラッシュしまくって操作不能になるが、クラッシュの OK をかきわけて再起動ボタンを何とか押して再起動すると操作可能になる。 アプリのアップデートをすると今度はハングアウトが同様にクラッシュしまくるが、アンインストールして入れ直せば OK だ。IME は言語と入力に出てこないので Mozc for Android みたいに設定画面を出してくれる IME を入れて設定画面を出せば有効化できる。 これは Nexus 10 も実は今はそうなっているかも知れない。

最初はクラッシュしまくるトラブル等不審に思いつつ IME の有効化もできずによくわからずに再起動したらそのまま KALOS2 ロゴ画面から先に進まなくなった。 早くも起動しなくなるとはね、と思いながら FAQ 見て音量ボタン両方を押しながら起動し全消去。 もう一度再設定していった結果が上の解決策で、結局クラッシュはするが起動しなくはならなかった。

Google Play ムービーは端末自体が対応していないんだそうで使えない。YouTube は使える。 問題ない。

しかし起動しなくなるなどのトラブルからすると 4 万円くらいが妥当な価格なんじゃないかという気がする。 タッチパネルといいソフト面といいクオリティーがいまいちだ。 これ、バイブレーターがないのかな、あと、スピーカーが上のほうについてる。 はっきり言うと Nexus 10 ほどの全部入り (気圧計・国内 GPS・バイブレーター等も含む) 機能とクオリティー (安定性・長期保守) を期待すると裏切られるので期待しないほうがいい。 画面だけはよさそうだ。 あと本体が軽いのはいい。

2016/06/16 のコメントを読む・書く


17 (金)

%1 C++

自分が書いたクソコードを見ていると、やっぱり C++ のオブジェクトの参照関係が何とかならないかと思えてくる。ROM と RAM をいくつかのオブジェクトとして生成し、画面表示、音声出力、キー入力、ディスケットドライブ、その他 I/O 等をそれぞれ別々のオブジェクトとして生成するが、例えば画面表示にはフォント ROM と VRAM 共用 RAM へのアクセスが必要であり、その他 I/O においても双方へのアクセスが必要であって、あるいは、ディスケットドライブのアクセスランプ表現のために画面表示の呼び出しが必要というのもあって、こういうのをどう表したらすっきりするものか、C++ 初心者な自分にはよくわからない。

今は各コンストラクターにポインターを渡しまくっていて、デストラクターが順番に実行されて正常に動作するよう { } で囲いまくって変な参照がされることのないようにしてある。 実際のところはデストラクターでそれらのポインターを使うことはないので、順番は気にしなくても大丈夫なんだけど、なんかデストラクターの実装を仮定するのも気持ち悪い気がして、それでこんなふうになった。

まず考えるのは継承関係で何とかならないかというもの、親クラスの protected にオブジェクトを置けば、親クラスと子クラスの双方からアクセス可能というのは確かに書ける。 しかし、継承すると例えば画面表示とその他 I/O の双方に VRAM 共用 RAM が含まれることになるから、それらを別々のオブジェクトにするわけにはいかなくなり、菱形継承問題になるのかな。 菱形継承の場合、仮想継承というのを使うことで、親クラスのオブジェクトを共通のものにすることができるらしい。

次に考えるのは、かなり開き直ってグローバル変数という手段。 グローバル変数にオブジェクトを置いておけば、extern 宣言だけでどこからでもアクセス可能。 確かに画面表示の内部で SDL を使っているなら、そのオブジェクトを複数作れるようにする意味はあまりない。 ただし、グローバルというだけあってどこからでもアクセス可能になるので、可読性は微妙か。 それと、例えば画面表示に使う SDL 初期化をコンストラクターでやって、終了処理をデストラクターでやるには、SDL の全体初期化を先にやらないといけないから、グローバル変数はポインターにしておいて、SDL の全体初期化が終わった後でオブジェクトを生成する、みたいな工夫が必要になる。 そんな感じで結局これも、変なタイミングで参照されることのないよう気を遣う必要はあることになって、うーん。

その次に考えたのは、今の普通のポインターの代わりにスマートポインターを使う方法。 スマートポインターであれば不要になった時点で解放されるのだから、デストラクターの実行順に悩むことはないだろう。 素直に順番に new していって、後処理は任せた、というやつだ。 いい感じかと思ったが標準で用意されるスマートポインターは C++11 と古いやつとで違うっぽい? 明らかに複雑な用途ではないから自分で実装してしまうのも手なのかも知れないが...

さらに考えたのは、friend class を使う方法。friend には private な情報へのアクセスも許しますよという、大変邪道な感じの機能だが、何か使えそうな感じがしないでもない。 けどやっぱ使わないほうがいいかな。

みたいな感じで C++ というかオブジェクト指向には未だに慣れないな。

2016/06/17 のコメントを読む・書く


18 (土)

%1 DeNA

DeNA 株主総会。 おみやげは今年から無し。 質問は結構時間が長く、リワード広告 / ダウンロード数の代わりにユーザー数を示せないか、配当性向? が低すぎないか / 株主優待を使いやすくしてほしい、自動運転で事故が減るか / 南場さんの本を買った、動画配信 SHOWROOM の問題 / AKB・乃木坂関連 / 管理の問題、任天堂協業のゲーム飽きるんだけどどうなの、優待の選択肢を広げてほしい、ヘルスケア (マイコード) の現状・優待に入れられないか、ベイスターズの横浜球場が最近満員で拡張できないか、キュレーションどうなの、球場を別の場所に作らないの / 拡張しないと日本シリーズできなくない、今後の東アジアの成長、優待で見学はどうか、SHOWROOM の課金 / ゲームの優位性、子会社が増えている? / WAPTX はタックスヘイブンで云々 / 海外の収益 / 休眠会社はないのか / 水がどうのこうの?、AI が流行ってるけどどうか / ベイスターズは日本シリーズなんて出られるかわからないが今年の目標は?、採決が拍手なのはどうなの、みたいな感じで、結構ベイスターズ絡みがやっぱり多いな。

去年同様? 穏やかな株主総会であった。 ベイスターズのファンが結構いるんだろうなという感じはあるが、任天堂協業のゲームもさっそくやってみた人もちゃんといたし (自分はやっていないどころかリリースされていたのを知らなかった)、海外ゲームはヒットが出ればって感じだったが国内は少しはマシになっている様子だった。

2016/06/18 のコメントを読む・書く


19 (日)

%1 風邪発症

朝目覚めた時点で久しぶりにはっきりと風邪らしい症状が出ていた。 のど痛い。 のどスプレーを使ってごまかす。 一日自宅でおとなしくしていよう。

のどの痛みはお昼頃には気にならなくなっていたが、ちょっとトイレに、みたいな感じで、体を動かそうとしたとたん、全身のだるさを感じて、これがまたいかにも風邪っぽいし、自分の息が熱い気がするというか、体が発熱している感じがする。 がんばれ、自分の体よ。

夕方ちょっとスーパーに買い物に行ったら大混雑だった。 ラジオでアベレージやってたから 17 時頃か? かなり多いんだな。 これが 21 時台になると割と余裕になるのである。

そうそう、風邪の潜伏期間を考えれば、感染したタイミングとして一番疑わしいのはちょうど先週の渋谷・鹿児島おはら祭かなと。 渋谷なので当然のことながらものすごい人混みだし、いつになく体力も使ったので、もらったウイルスに免疫が対応しきれないまま今にいたり、発症しちゃった、みたいな感じかな、素人考えだけど。

%2 C++

なんか調べていると関数オブジェクトとか一部オブジェクトとか右辺値参照 (rvalue reference) とかいろんな未知の内容が出てくる。 そういえば、C++ って高校の図書館にあった本か何かで少し勉強した程度で、それは確か STL の話はあったと思うから C++98 か。 そもそもそれだってちゃんと覚えてはいないのに、その後 C++03、C++0x (→C++11)、C++14 が出ていて、いろいろ変わってきているようである。

本の虫: rvalue reference 完全解説

へぇー。

2016/06/19 のコメントを読む・書く


Powered by Tomsoft Diary System 1.7.4

/var/log/hdk.log コメント一覧

トップ / 日記索引 / 日記 (2016 年 6 月中旬)

Hideki EIRAKU