2008/08/28(木)USBDACエージングその後

USBDACエージング

火を入れてから一週間以上が経過しました.電源だけなら100時間は十分越えています.ヘッドフォンもほぼ新品同様だったので,音を流して放置したり聞いたりゲームしたり.


ということで,改めて目を閉じて試聴してみました.
エージング前と明らかに違う.
この不思議体験,ヒトには聞かされていましたが,初めて経験しましたネェ.コレを知っていれば,ヲデオタに走っていたかもしれません(笑).

比較的高音が澄んで聞こえる.
ハープ(竪琴?)系,弦楽器というほうが正しいのか,他の楽器に紛れていたものが聞こえやすくなりました.音声も,主に女性VOCALばかりを聞いているので,同様にクリアに聞こえてきます.
これを解像度があがったと表現するんでしょうかね.

さて,低音は?
正直判りません(^^;.もともと低音は大きな気がしますし,ヘッドフォンにしてからの差分といえばエージング前のものか,携帯するインナーヘッドフォンくらいしかないです.それらと比べると,高音の変化に比べるとあまり目だって変わっていない気がします.

具体的に正弦波を入れて確認したわけでもないので,どの程度の音域を指しているのか怪しいですが,こんな感じですかネェ.
ところが,現状はUSBDACの出力を直接ヘッドフォンにつないでいるので,PCで音量を下げています.これがネックでデジタルレベルで情報を失っているようです.
やはりヘッドフォンアンプを入れて,駆動力を得つつ,USBDACはフルボリュームで運用していきたいところですね.

ミニデテントは,(デテントに比べて)音質が悪いという記事を見かけました.ぶっちゃけ,最終形態は音響用抵抗とロータリースイッチで作る自作アッテなんでしょうねぇ.今回のアンプは携帯可能という事で,ミニデテントでいきます.

ん~,音響用コンデンサが手軽に変えないのは惜しいですネェ.秋葉いくしかないのか..ボリ松は本当に最後の手段.


おまけ

茅原実里 (HeroinE);(DVD付)(AA) Track5. 涙の記念日 を聴きながら書いていたのだけれど,今まで気にならなかった音が聞こえるw.
ねずみよけ?の高周波が聞こえてしまってうざったいという体質?なので,高音がクリアに聞こえるとすげぇ敏感に反応してしまうな.
まだUSBDACの本領を体感していない.早くヘッドフォンアンプを用意しないと,だな.

今週末はN:TMがあるので,目標は低く,来週の平日か,その週末ということでひとつ(ぉ

USB keyboardのテスト

2008/08/28工作::USBimport

USB keyboardの話

HIDとして,キーボードとマウスは抑えておきたいところである.そこで,キーボードについて,仕様ではよくわからなかった動作について確認する.PCやOSに依存するかもしれないので,ここで記述する事項は実際に試したこと,推測(妄想)事項であることを明記しておく.
何らかの明確な動作に関する資料が開示されているのであれば,ポインタを教示いただきますと幸いです.

実験と確認

先日の疑問について,実装して確認する.
デバイス側のマイコンから,キーコード(usage ID)を送信し,PC側でどういう挙動を示すかを調べる.

(1)	{0x00, 0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 },
(2)	{0x01, 0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 },
(3)	{0x00, 0, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A },
(4)	{0x00, 0, 0x07, 0x08, 0x09, 0x0A, 0x05, 0x06 },
(5)	{0x00, 0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // nothing
(6)	{0x00, 0, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 }, // space

	結果.
	"abcdefg "の繰り返しとなる.
	 456789a

	"押している"情報であることがわかる.
	(1)-(2)で 'a'を2回送っていることになるはず.(2回数はshift押下)
	(3),(4)で並びを変えてみたが, 反応ナシ.
	(5)で全部離したと認識して, "bcdefg"をinput.
	このとき,押下情報(3)の若い順に入力されたと考えられる.(並びを変えて確認要)

	また,別キーボードにてshiftを押下したところ,押下中は文字サイズが変わった.

# 教訓.スキップせずにコツコツと進みましょう:)

"abcdefg "....

(1)	{0x01, 0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 },
(2)	{0x00, 0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 },
(3)	{0x00, 0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // nothing
(4)	{0x00, 0, 0x07, 0x08, 0x09, 0x0A, 0x05, 0x06 },
(5)	{0x00, 0, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00 },
(6)	{0x00, 0, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 },

	"adefgbc "で繰り返された.
	(1) 'a'を押下,
	(2) 'a'を押下しながら shift押下
	(3) 'a'とshiftを同時に離す. 
	 → (shiftはキーの前後でon状態を保つ必要がある? 少なくとも入力時に同時か一つ前?)
	(4) d,e,f,g,b,c を押下
	(5) 'g'だけ離す...
	(6) b-fを離して, spaceを押す.


(1)	{0x01, 0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 },
(2)	{0x01, 0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // shift入れてみる
(3)	{0x01, 0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 },
(4)	{0x00, 0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // shift入れてみる
(5)	{0x00, 0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // nothing
(6)	{0x00, 0, 0x07, 0x08, 0x09, 0x00, 0x00, 0x00 },
(7)	{0x00, 0, 0x05, 0xC6, 0xC4, 0x00, 0x00, 0x00 },
(8)	{0x00, 0, 0x05, 0xC6, 0x00, 0x00, 0x00, 0x00 },
(9)	{0x00, 0, 0x05, 0xC6, 0xC4, 0x00, 0x00, 0x00 },
(A)	{0x00, 0, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 },

	^a
	^a
	def
	0xC4/0xC6は無視されたぽいな..
	b
	<space>


!ここでReport descriptorのUsage Maxが 0x65なのに気づく.
0xE7とすることで,定義値全て有効になるはず..

(1)	{0x02, 0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 },
(2)	{0x02, 0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // shift入れてみる
(3)	{0x02, 0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 },
(4)	{0x00, 0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // shift入れてみる
(5)	{0x00, 0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // nothing
(6)	{0x00, 0, 0x07, 0x08, 0x09, 0x00, 0x00, 0x00 },
(7)	{0x00, 0, 0x05, 0xC6, 0xC4, 0x00, 0x00, 0x00 },
(8)	{0x00, 0, 0x05, 0xC6, 0x00, 0x00, 0x00, 0x00 },
(9)	{0x00, 0, 0x05, 0xC6, 0xC4, 0x00, 0x00, 0x00 },
(A)	{0x00, 0, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00 },

	ならなかったなぁ.
	AAdefb "Shift"は同時に離しても,跡で開放でも良いみたい.

min.max.を 0x80 - 0x7Fにしてみた.
	→値全部無視された.SHIFTのみに反応して,"固定キー機能"ダイアログが出てくる.

0x00 - 0x00E7にしてみたが,駄目だな. 
keypadになると,usage sub-IDが変わってくるので,無視されるのだろう.
table中,keyboard/keypadと明記されていたのはコレによるものと思われる.
分けてくれよ...

utility関数の作成

usage IDとASCIIコードとはテーブル引きするしかなさそう.US keyboardをベースにしているらしく,日本語keyboardとは異なるマップと考えるしかない.また,SHIFT/CTRL等の情報は文字とは別です.
前述の結果より,本I/FでPCが受信するのはキーの押下情報であり,入力された文字情報ではないです.文字入力の肩代わりをさせる場合,ほかのキーボードとの干渉を考慮する必要がありそうです.
ゲームの入力装置として考える場合は,押下情報であったことは良いことでしょう.同時押し6つまで認識してくれそうです.(SHIFT/ALT/CTRLは別腹で同時押し可)

ASCII文字 - 0x20を index0として,下記のIDを送ると良い.
ただし,"SHIFT+"は,SHIFTを押下しながら文字を入力した場合であり,単純に1倍との送信では実現できない.

0x2C, SHIFT+0x1E, SHIFT+0x34, SHIFT+0x20, SHIFT+0x21, SHIFT+0x22, SHIFT+0x24, 0x34, SHIFT+0x26, SHIFT+0x27, SHIFT+0x25, SHIFT+0x2E, 0x36, 0x2D, 0x37, 0x38,
	// 0x20~0x2F, → <SPC>!"#$%&'()*+,-./
0x27, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, SHIFT+0x33, 0x33, SHIFT+0x36, 0x2E, SHIFT+0x37, SHIFT+0x38
	// 0x30~0x3F, → 0123456789:;<=>?
SHIFT+0x1F, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12,
	// 0x40~0x4F, → @ABCDEFGHIJKLMNO
	// 0x89 : Keyboard International3(17) => '\'キー
0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x2F, 0x31 ,0x30, SHIFT+0x23, SHIFT+0x2D,
	// 0x50~0x5F, → PQRSTUVWXYZ[\]^_
0x34, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12,
	// 0x60~0x6F, → `abcdefghijklmno
0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, SHIFT+0x2F, SHIFT+0x31, SHIFT+0x30, SHIFT+0x32, 0x2A
	// 0x70~0x7F, → pqrstuvwxyz{|}~<DEL>


複合デバイスの作成

作り方

PSoC環境を使う限り,自動的にInterface数を把握して,standard requestに応答してくれる模様.便利ですな.. *1

  1. Descriptorにinterfaceを追加する.
  2. EPを追加する.
  3. Report descriptorを追加する.

メモ
PSoCのEPは,入出力で同じIDが使えない?simple IOの実装でEPを1/1または3/3としたときに,IN応答が無かった.OUTを受けてからIN transactionを起こしていたので,先に処理したモン勝ちか?詳細はPSoCのTRMで確認する予定.
【宿題】の結果,下記の記述が見つかりました.

PSoC TRM, Document No. 001-14463 Rev. **
34. Full-Speed USB

The SIE supports five endpoints including a control endpoint (endpoint 0) and four data endpoints (endpoint 1, 2, 3, and4).
The control endpoint can be configured to support SETUP, IN, and OUT requests.
The data endpoints can be individually configured to respond to Interrupt, Bulk, or Isochronous IN or OUT requests.

ということで,EP1~4は,INかOUTのいずれか1つしか取れません.したがって,インタフェースIN/OUTを2つ用いるデバイスでは,EPも2つ消費します.入出力対応しているEPであれば,EP数を削減できたのですが.まぁ,物理的な制約であり,仮に入出力OKでも,IDが経るなら同じなので,こんなもんなんでしょう.
キーボード,マウス,+α(入出力)とするならば,キーボードのLED出力は受け取れないということですね.

デバッグ・お試し時のメモ

PID/VIDが同じだと,Windows Device ManagerがInterfaceを覚えているようだ.
複合→単純に変えたとき,2度目以降は複合として扱われた.
Device Manager → USBコントローラ の 該当するVID/PIDの複合デバイスを削除することで,再度認識してくれるみたいです.


*1 : 仕組みを理解する上では,手抜きになってしまうなぁ.

参考サイト



wiki機能でコンテンツにしているけれども,まとまってないな...
日々書き散らかしてまとめていないからかなぁ.使い方間違ってる?w

USB関連覚書

2008/08/26工作::USBimport

資料入手先等

仕様書関連

個人サイト等実装例

  • The HID Page, Jan Axelsonさん, [http://www.lvr.com/:Jan Axelson's
    ある意味総本山?ホスト側ソフトも充実していて,さらにリンクも良い.

Lakeview Research]

2008/08/26(火)[USB][HID] キーボードとマウスと.(その1)

USB接続のキーボード・マウス・GPIOを増設する

という目的をあげました.いろいろ着手しかかりで,どれも完結してないのはご愛嬌:)

コレも2年ほど前にGPIO+CapSenceやろうとして,頓挫したままになっていたプロジェクトです.せっかく復帰したので,基本的なUIのキーボードとマウスの機能も持たせたいと思います.

前提条件と手順は,以下のとおりとします.

  • ホストは Windows XP,開発環境は...任意w
  • cypress のPSocであるところの,CY8C24894を使う
  • マイコンとPCとをつないで,デバイスの認識を行う
  • HIDデバイスとして認識させ,Windows標準ドライバを用いることでドライバの開発を避ける
  • キーボード押下情報の送達確認
  • マウス操作情報の送達確認
  • 汎用IOとしての,マイコンとのデータ授受確認(非USB-UART Bridge)

注:正しい用語を使って説明できていないです.作業メモとしてざっと書いているのでご容赦を.もし万が一,パクられる参照される時は,ものの本を見ながら単語の修正をしたほうがいいです.


マイコンとPCとをつないで,デバイスの認識を行う

何もナシだと辛いので,とりあえず検索してみましょう.ただし,手元に資料も欲しいので,後述する資料をそろえておくことを推奨いたします.*1

HIDとしてテキトウIOデバイスを作る

まずは,参照場所-個人(1)を追いかけてみます.
PSoC Designer ver.5でnew projectを作って,USBFSモジュールを追加, Wizardでdescriptorを記述していきます.本家のツール*2よりも使いやすくてイイデスネ.
サクサクと終わるかと思いきや,PCからHIDデバイス,という認識まではされたけれども,ドライバがinstallされない事態に.デバイスマネージャでUSB/HIDのアタリをあさってみると,黄色いびっくりマークがついてます.propertyでVID/PIDを見ると,確かに作ったデバイスです.Setupは飛んでいるみたいですが,どこかで調子悪くなっているようです.昔々に同じことになっていた記憶が・・・.

packetが見たい

さて,何もいわずに黄色いびっくりマークを出すだけで,何を言いたいのかわかりません.そこで,USBのプロトコルアナライザーでもあればスイスイ?なのですが,(検閲削除)なので,ソフト的に対処してしまいます.
探してみると,USB Snoopy Proというフリーソフトが出てきました.使い方は解凍してでてくるREADME.TXTのとおりです.見ずにやるとうごかねぇぞゴルァとなるかもしれません:)

結果,どうやらHID Report descriptorを受けたあとで,RESET PIPEなるコマンドが飛んでいます.Descriptorの記述に不満がるようです...HIDの面倒なところはココですね.
参照個人サイト(1)の,絵を見ながらまねていたのですが,下記2点のミスによるものでした.

  1. 見落としがあったこと
  2. 見ているうちにマウススクロールでHID-ReportではなくHID-Physicalになっていた

これに気づくまでにいろいろと検索したり,本を見たりして時間を費やしてしまいましたわ.まぁ,次の予習になったので結果オーライってところでしょうかね.


キーボードとマウスもつけたい

汎用IOだけだと面白くない.せっかくなので,キーボードとマウス機能もつけてしまいましょう.
どうやって複数機能を持たせるのかナァと不思議に思っていましたが,今は納得.

同じように疑問を持っている人がいた*3ので,さくっと解決.HID Report Descriptorで,複数の機能を宣言するだけでよい.それにあわせて,EndPointもしっかりと割り振ってやる必要があるけれども..

やり方がわかったら早速実験.PSoC DesignerでUSBFSのdescriptorを編集していきます.これまたびっくりマークに悩まされたりするわけですが...
詳細は後日.とりあえず認識するまでのダイジェストだけ.

  • EP1は OUT INTERRUPT, MaxPacketSize=8. キーボード
  • EP2は OUT INTERRUPT, MaxPacketSize=8. マウス
  • EP3は OUT INTERRUPT, MaxPacketSize=32. マイコン通信用
  • EP4は IN INTERRUPT, MaxPacketSize=32, マイコン通信用
  • Packet Sizeは Report descriptorのサイズ以上ならOK
  • HID spec.のappendixにあるキーボードにはOUTもあるが,削除可能.これでEPを稼ぐ.複数キーボードがある状態で,制御キー(?)のLock状態が見えないようになるのではないか?(要確認)
  • HID Report Descriptorの書式は理解しづらかった.仕様書・書籍・WEB Site,実機をいじくってなんとなく理解したつもり..?

今日はココまで.乞うご期待(ぉ


*1 : WEBに書かれている個人の発信を全て丸呑みにせず,必ず本家の資料を見るように心がけましょう.

*2 : HID Descriptor Tool,dt2_4.zipというファイル.

*3 : usb.orgの掲示板にて,質問されてました.回答は日本人(^^;

今回の参照場所

書籍

USB 2.0とUSB On-The-Goを含むカスタムUSBデバイス開発のすべて USBコンプリート[第3版]
仕様書直訳したような文章ですが,すらすらと仕様書が読めない方(オレオレ),紙面で資料を持っていたい方にオススメ.下記のようにWEBで情報公開されている方も多いので,動くものをエイヤで作るだけならイラナイかもしれない.でもまぁ暇つぶしに読んでおくこともオススメする.


WEBサイト

(0) 総本山usb.org

何はともあれココから始まる.仕様書の類は一通り落としておきましょう.HID usage tableや descriptor情報など,必須な情報ばかりです.このアタリの情報をあわせて記述しているサイトがあまり見当たらなかったので,本記事を書くことにしました.
本日は記載しませんが,まとめてwikiネタとしてコンテンツにしておきます.動作確認できてから・・・.

(1) Flatol Lab

PSoCにおけるUSBと題して,モロに同じ石です.開発環境が1つ前のDesigner 4で紹介されていますが,操作方法は ほぼは同じです.

(2) PSoCでUSB

Snoopyの検索でヒットしました.みなさん考えること/やることは同じですね:)

(3) USB HID Notes

キーボード・マウスのReport descriptorと,デバイスから放り出すときのメモリイメージを参照.

2008/08/24(日)[製作] ヘッドフォンアンプ~その2

仮組み

先日の測定結果より,Vds=1.1Vの値を信じてテキトウに組み合わせた.
ペア組み+チャネルわけのおおよその選別思考は以下のとおり.*1

  • P-ch/N-chの電流差は0.2mA程度まで許容する.場合によりもう少し空いてもあきらめる.
  • 左右で,P-ch/N-chの総和が,それぞれ大きな差の無いこと.
  • 3~4パラの組み合わせとなるが,できるだけ左右に同じ程度の値を割り振る.(特性カーブをそろえるイメージ.一緒か?)

で,とりあえずブレッドボードに片チャネルだけあわせてみた.

FET_AMP_01.PNG

部品点数は非常に少ないので,両チャネル実装できるか?と思ったが,クリップ類が少なくて実装できなかった.*2


せっかくブレッドボードに組んだので,出力段のシリーズ抵抗を差し替えたり,FETのパラ数違いを聞いたり,入力に発振防止?のシリーズ抵抗をバイパスしたりと聞き比べてみた.無論,エージング前・暖気もそれほどやっていない状態での試聴であることをご容赦いただきたい.

出力段のシリーズ抵抗
MPCの1Ωと0.33Ωの2種類を用意してあった.1Ω→0.33Ωでは,同じ入力ATTで音量が増えたように感じた.シリーズ抵抗が減るのだから,ヘッドフォンに入る電力が入ることから当然である.
FET3パラ→2パラ
最低BLランク3パラ以上,といわれていたので,その差分を確認したかった.条件をイーブンにするため,入力ATTを同じ値(クリック数で調整)とした.
電流そのものが変わってしまうため,当然音量は下がる.また,音量を上げたときに,低音が弱まったような感じを受けた.歪んでいて,ヘンに聞こえた可能性もある.自分の耳を信じないなら,オシロで観測すべきなのだろうか...
少なくとも2パラはダメだと判断.4パラにすべきかなぁと考える.
入力ATTの直後のR
作例だと100Ω.よさげな抵抗は91Ωを入手していた.記事にあるとおり,min/maxにボリュームを振らなければ,0Ωでも良いとあったので,+1クリック状態でバイパスした.
確かに音が変わる.高音の伸びが変わったように感じる(気がする).好みにも依るのかもしれないが,この抵抗は取っ払ったほうが良い.エージングすれば変わってくるのだろうか...
取っ払ってGND電位(ボリュームを絞りきった状態)にしたが,特に変な音は聞こえなかった.*3

とりあえずこんな感じかな...Vランクへの換装も考慮して,基板に実装するのはFETと抵抗までにしよう.OSコンをFETに近接させるなら,同じ基板に載せないといけないわけだが,悩ましいな.2.5V品のOSコンは在庫に無いぜ・・・.電圧上げて,エージングのときだけ投入電圧を上げて回復させてみるってのもアリかな.


試聴に使った曲は,水樹奈々 Secret Ambition(高音ヴォイス確認,楽曲音が溢れてる?あたりの解像度確認?),神尾真由子PRIMO(AA)収録のヴァイオリン曲(高音ソロ確認?)
ヘッドフォンはaudio-technica ATH-AD1000 オープンエアヘッドホン(AA)を使用.他に持ってない(ぉ.コミケの試聴のときに,密閉式もいいなぁと思った.外の音をシャットアウトしやすいからネェ...

*1 : 測定結果のとおり,かなりばらついており,片チャネルでも3~4パラ,8組は必要となるので,手持ちだけで試行錯誤して決めた俺ルール.理想は全部同じIdssじゃないかな...
結果,左右でIdss総和に2mA程度の差が出る模様.チャネル内でも0.3mA程度は覚悟しないとダメかな..動作時の電流を見てみないとわかんないけど.

*2 : 今気づいたが,引き出しに在庫があった気がするな...

*3 : 誤って入力を浮かすとハムノイズが聞こえた(ぉ

次回

ということで,パネル加工しないとくみ上げられない罠.
ペア組だけであーだこうだと脳内懐疑を行い,小一時間は消費した気がする.ブレッドボードいじりも1時間弱いじっていたかもしれないw.方耳だけなので疲れたわ.
パネルと言っても,スイッチとボリュームと入出力端子(3.5φのジャックかな)だけですからねぇ.

先日の基板については,どうやらケース内部の干渉する領域にあわせて基板を加工する必要がありそう.加工したところでボリュームが入らなくなるのは自明.秋月のちっさい基板に詰め込むことが確定.空中配線でも良い規模だけどネ.FETの挿抜が予想されるから,両面スルホール基板で待ち構えておくのが良いだろう.コネクタ類は,接触抵抗が増えるだけなので,パネルとの接続はハンダ付けしてしまう.取り替えるときに面倒だが,致し方あるまい.

進捗悪いのは,まぁ,よくあること.N:TMで配るかもしれない名刺の作成とか,久しぶりにゲームやったら明け方まではまったとか(マテ

NTM_namecard.PNG

こんな感じ.絵はたむ師匠.年季バックナンバーの裏表紙から引用.該当バックナンバーの在庫があるので,これをもっていく予定.もちろん無料配布w

Mega128基板も希望者に配布するかなぁ.マイコンと抱き合わせで1kとかどうだろう.今は価格下がってるかナァ.バグ入り基板だからなぁ(ISP接続)

進捗が悪くてすみませんね...まとめてからうpするほうが,読者から見ればよいのですが,モチベーション維持のため小出しにさせていただいております.*4

*4 : 小出しというか,進捗状況をそのまま出しているので出し惜しみは無いです('A`