このページの本文へ

遠藤諭のプログラミング+日記 第155回

AIがソートの新アルゴリズム発見――僕らはChatGPTでプログラムを作ろう!

ChatGPTでプログラミングのフラット化がはじまっている

2023年06月15日 08時00分更新

文● 遠藤諭(角川アスキー総合研究所 主席研究員)

  • この記事をはてなブックマークに追加
  • 本文印刷

プログラミングを始めるハードルが爆発的に下がっている!

 MITテクノロジーレビューによると、囲碁AIの「アルファ碁」で有名な、ディープマインドが新しいアルゴリズムを発見したそうだ。アルゴリズムというのは、NHKの『ピタゴラスイッチ』でやってる「アルゴリズム体操」ではないが、コンピューターを内部的に動かす手順のことだ。

 コンピューターで、ある問題を解きたいときにプログラムをどう書くか? 言葉で何かを表現するときにさまざまな言い方があるように、アルゴリズムもさまざまだ。アルゴリズムでは、とくに正確で速いことに意味がある。同社は、2022年にも「行列演算」を高速化するアルゴリズムを50年ぶりに記録更新しているが、今回は、プログラマーなら誰でも知っている「ソート」(並べ換え)のアルゴリズムだそうだ。

 記事には、「それまで最善とされていた手法よりも最大70%速くリスト内のアイテムをソートする手法を発見した」とあって、「暗号化に使用される重要なアルゴリズムの速度を30%も向上させる手法も発見した」ともある。ソートや暗号という重要なのに時間のかかるアルゴリズムが、そんなに高速化されるとは計り知れない価値がある。ユーザーの待ち時間が短くなるだけでなく地球環境にもよいはずだ。

 新しいアルゴリズムを発見するためにとられた手法は、アセンブラ命令を配置することをゲームに見立て、それが正確かつ高速ならAIがゲームに勝つというものだそうだ。これは、いわゆる「ゲーミフィケーション」(バズワードとしてのではなく、ウィルスの酵素の構造をオンラインゲームをプレイしてもらうことで解析したといった事例)の世界ともいえる。

 今回のディープマインドのAI「アルファデブ」は、3項目のソートに必要な命令数を18から17にした。4項目については従来の28を減らせなかったが、5項目については、これまでの46命令を42命令にまで削減した。これをC++に実装してインテルの第6世代CPU「Skylake」で走らせたところ、実に70%高速化した。

 AIによるプログラムといえば、2022年11月にChatGPTがリリースされたとき、私は、「超話題の人工知能ChatGPTに“小説”や“詩”を書いてもらい、“プログラム”は実行してみた」という記事を書いた。

 半年ほどの時間が経過しているわりには、ChatGPTによるコード生成は、それほど話題になっていないように見える。しかし、どうも世の中ではこっそりと(?)、あるいはようやく(?)、ChatGPTにコードを書かせることが行われていることが分かってきた。

 ユカイ工学のカレー食堂というイベントに出かけたら《新人がChatGPTだけで作った》というソフトをデモしてもらったGClueの佐々木陽さんによると、ある大学で教えていると、ChatGPTを使う学生と使わない学生で、まるでパフォーマンスが違ってきているとのこと。それは、プログラムを書く必要のある授業だそうだ。

 Unreal Engineのプラグインのコードは、もうChatGPTでしか書いていないなんて話も聞いた。ということで、ここのところ私がゆるゆると書いているChatGPTプログラミングの世界を紹介したいと思う。

 いま、世の中はAIの未来についての議論がかまびすしいが、コード生成の世界は、いま見ておいてしかるべきものだとも思う。

60秒でちゃんと遊べるゲームをChatGPTでつくる

 まずは、どんな具合になるかをザッと眺めてみていただくことにする。1個めのサンプルは、私の最近の持ちネタなのだが、「60秒でちゃんと遊べるゲームをChatGPTでつくります」というものだ。やることは、ChatGPTの入力欄から以下のようにお願いするだけ。

 すると「もちろんです!簡単なPythonコードの例を提供いたします。以下の例は、秋葉原をテーマにしたクイズゲームです。」という陽気なノリで、10秒たらずの間にChatGPTがコードを書き出してくる。

 プレイした結果は、次のような具合だ。

 しかし、こんなテキストゲームではもうひとつ見栄えもしないので「シューティングゲームを作って。Pythonで動くコードを書いて」とお願いしてみると、これまた10秒かそこらでコードがスルスルと魔法のようにでてくる。出てきたコードを game01.py など適当なファイル名に入れてコマンドラインから「python game01.py」とやると次のようなゲームを遊ぶことができる。

 興味深いのは、コードと同時に「このコードを実行するには、《Pygame》 ライブラリがインストールされている必要があります。もしインストールされていない場合は、以下のコマンドを使用してインストールしてください。」などと、アドバイスを適宜してくることだ。

 スピードが速すぎるなど、ゲームバランスがよくない場合は、そのあたりを伝えることになる。つい「相手のスピードがはやすぎるんです」と不満をぶつけるように言ってしまったのだが、またまた、あくまで陽気に、次のように対応してくる。

 これで、本当に60秒以内でちゃんと遊べるゲームが作れてしまう。さらに60秒もあれば、追加要素をそれなりに足してオリジナルゲームといえるものにもなりうる。もちろん、これの動作環境としてPythonをインストールしておく前提。Pythonのインストールは難しくはないが、文字コードはUTF-8で保存のこと。《Pygame》は、コマンドラインから「pip install pygame」と1行打ち込めばよい。このあたりで不明点もあれば、適宜、ChatGPTに聞けばよい。

 アクション性のないプログラムなら、Googleが機械学習の教育および研究用に提供しているクラウドベースの動作環境《Colab》(Colaboratory)を使うとよい。ChatGPTに、Colabを使いたいのですがと質問してやれば、インストール不要で5分後にはPythonが使える状態になっているはずだ。この種の質問に関しては、ChatGPTは、本当に凄い。

「調整さんいらっしゃい!」は、もはや便利で手放せないアプリ

 もう少し込み入ったプログラムの例を紹介しよう。「パソコンのカメラが捉えた人物の表情によって、画面に表示するイラストの顔も変化するプログラム」をお願いしてみた。

 やることは基本的に同じなのだが、さすがに少し凝った設定のプログラムでは、そうすんなりとは動かない。以下の動画は、実際にプログラムが動くまでのようすを数倍速にしたものだ。

 ここでよく見てほしいのは、まず、私は、「Voice Control for ChatGPT」というChromeブラウザ用のプラグインを入れているので、音声で指示を出している。映画監督か、現場監督か、ハワイの浜辺でデッキチェアに座ったままプログラミングをしているような気分になってくる。

 次に、エラーが出たときにそのエラーメッセージを「こんなエラーメッセージが出ました」という言葉も添えずに、ChatGPTに返してやると、「申し訳ありません」などという謝罪のあと1秒もおかずに、新しいコードを返してくる。修正箇所しか言ってこないときは、「コード全体をお願いします」と言えば出てくる。

 ビデオを見ていただければ、分かるとおり数回のトライ&エラー、途中、OpenCVをはじめ必要なライブラリーのインストールなどを経て、最後にはちゃんと目指したものができあがった。興味深いのは、「〇〇というライブラリがあるのですがカメラとの組み合わせではトラブルが多いようなので××というライブラリを使います」などというコメントも出てきたりする。

 これは、ちょっと熟練の同僚プログラマーがすぐ横にいて、その日は、ひたすら私に尽くして作業してくれている感じである。こうした連続した作業をChatGPTとともにやるための同僚ならぬエージェントも注目されているので興味のある方は調べてみるとよい。

 簡単なプログラムが作れるのは分かったけど、実用で使えるプログラムまで作れるのか? という指摘もでてきそうなので、ChatGPTで作った「Googleカレンダー空き時間サーチ」(別名「調整さんいらっしゃい!」)といういまじゃ手放せなくなっているアプリを紹介することにしよう。どんなものかは、次のビデオを見ていただくとわかりやすい。

 Googleカレンダーで予定を管理している人は多いと思うが、飲み会やゆるい会議の日程調整は「調整さん」を使っている人が少なくないと思う。調整さんは、ログインなしで日程調整ができる、ネットらしいゆるいけどとても便利なサービスだ。

 そこで、「Googleカレンダー空き時間サーチ」では、自分のGoogleカレンダーから、指定した期間の指定した時間範囲で、ほしい空き時間を探してきてリストアップするようになっている。その結果は、メールやメッセンジャーで誰かに伝えてもよいのだが、そのまま調整さんの《候補日》の欄に貼りこめるフォーマットになっている。調整さんファンのためのWebアプリといえる。

 さて、こうした一定のタスクをこなすようWebアプリのコード(これの場合はGoogle App Script)をChatGPTに書いてもらうには、さきほどまでのようなブッキラボウなお願いの仕方ではうまくいかない。私が、このコードを書いてもらうのに与えたプロンプトは以下のようなものだった。

あなたはGAS(Google App Script)のエキスパートです。
自分のGoogleカレンダーで予定の入っていない日時(空き時間)をリストアップするプログラムを書いてください。コードは省略なしにすべて書いてください。
条件:
・空き時間を調べる。
・開始日付、終わりの日付は、カレンダーから選べるようにする。
・調べる時間帯の開始時刻、終了時刻は、プルダウンメニューから選べるようにする。選べる範囲は07:00~22:00。変更ない場合は操作不要とする。
・探したい時間の長さはプルダウンメニューから選べるようにする。
30分単位で30分から300分から選べる。
・空き時間とは以下の意味です。
Google カレンダーで予定の入っていない時間のことです。
連続して予定の入っていない最大値(例 3時間)を探したいです。
空き時間のスタートは、調べる時間帯のスタート時刻 または、前の予定の終了時刻。
空き時間の終わりは、次の予定の終わり時刻 または、調べる時間帯の終わりの時刻。
・動作の例
調べる時間帯のスタート時刻が 09:00、終わり時刻が 19:00で、
120分の空き時間を探したいとき。
13:00から14:00に予定1、17:30から18:00に予定2が入ってたとき。
以下のフォーマットで出力する。
06/10(土) 09:00~13:00
06/10(土) 14:00~17:30
・全体の先頭に「Googleカレンダー空き時間サーチ」と大きな文字で表示する。
・「(c) 2023 Satoshi Endo or ChatGPT / Ver.1.0」と小さな文字で表示する。
そのすぐ下から上記の開始日などを選ぶ部分がならぶ画面とする。

 ここまで紹介してきたChatGPTによるコード生成では、私は1行もプログラムのコードを書かずに完成までこぎつけた(ただ、エラーメッセージと指示をChatGPTに返していただけ)。これについても基本的にはそうなのだが、これだけの内容になるとそうはいかないこともあるだろう。入門レベルのプログラムでは、ChtGPTは、多くても数回のエラーのやりとりで動くコードを出してくる。しかし、ちょっとしたプログラムとなると、ある意味、コーディング以上の気づかいが必要になってくる(1文字でも間違えちゃいけないというような神経をとがらせなくてよいという点において穏やかな人を相手にしているような気づかいだからよいのだが)

 ChatGPTでうまくプロンプトを書きたいなら《ChatGPTを教育する》つもりでやるべきと言われる。コードを書いてもらう場合も、それはまったく同じで、とくに誤解されそうな部分は踏み込んで書いてやる(いまの例では「空き時間とは」など)。

 これはもうプログランミングの基本である《問題の記述》の世界である。《モデリング》や《疑似コード》(psudo code)よりは、抽象化のレベルははるかに高い。すべてを言わなくともChatGPTが推測してやってくれるからだ。その極端な例が「なんでもいいからゲームを作って」というプロンプトだ。もちろん、ChatGPTだから「幻覚」(Hallucination=でっちあげの意味がある)は出てくる。そこをどうコントロールするか? しかし、これってオブジェクト指向以来のプログラミングパラダイムの大革命ではないかなどと言いたくなってくる。

 大きなシステムで使うならモジュール化も必要だろう。完成したソフトをテストするダミーデータを作ることこそChatGPTが得意とするところという意見もある。ChatGPTでコードを書いてもらうことを繰り返していると、コード生成以外のふだんのタスクのプロンプトも磨かれると考えられる(プログラムが動かないときはプロンプトが不十分だとハッキリわかりますからね)。

プログラマーが《IF-THEN-ELSE や WHILE》の地獄から解き放たれるときがきた!

 一般に、ChatGPTを使うときは「チャット」という名前のとおりユーザーとChatGPTが対話する形となる。ところが、ChatGPTを使ってコード生成をするときには、そこにプログラムの動作環境であるコンピューターが参画してくる。エラーがでたら何も考えずにChatGPTに貼りつけてやることを繰り返していると、しだいに自分とChatGPTが同化してくる錯覚に襲われる。

 いままで、エラーメッセージをにらみつけて読みこんでいた自分の脳みその回路が、ChatGPTという大規模言語モデルに肩代わりされているだけだからだ。やがて、同化した私とChatGPTと、なかなかプログラムを通してくれないコンピューターが対峙する図式に近づいてくる。自然言語とプログラミング言語の応酬のなかで、これを書いている間にも発表されそうなマルチモーダルをサポートしたGPT-4の次なるバージョンではどうなるのかという思いをはせる。

 いまから30年以上前、私は、リングノートに鉛筆書きでデータ構造やフローチャートや表を書きながらプログラムを書いていた。GPT-4の次なる言語モデルになると、そんな鉛筆書きをスマホで撮ってChatGPTに渡し、ChatGPTは、よりよいデータ構造として《あなたには分かりにくいけど4次元配列を考えました》などと凄い図版を見せてくるかもしれない。

 今後、プログラマーの仕事は、AIからコードを絞りとるミルク絞りみたいな仕事になるのかもしれない。しかし、ChatGPTはコードと一緒にどのように考えたか示してくれるので、プログラマーは、それに見合うだけの賢さと言語力を求められるはずだ。まさに、プロンプトエンジニアリング的な能力が求められる。このコードの作り方は、子どもたちのプログラミング教育の上でもわるくない。むしろ、IF-THEN-ELSEやWHILEのこんがらがった世界で苦しんでいる全国の子どもたちが、そこから解放されるのだとしたら、とてもよいことではないかと思う。

 IF-THEN-ELSEやWHILEが、いかに不要なジャマモノでしかないかは、『情報処理』(2021-02-15 63巻第3号、情報処理学会)の「プログラミング的思考がわからない」をご覧あれ。

 最後に、「Googleカレンダー空き時間サーチ」を作る過程において、いちどChatGPTが完全に混乱状態に陥ったように見えたことを報告しておきたい(私はそのためにプロンプトを前述のものに全面的に書き直して新たに与え直したのだった)。あまりに1つのセッションで対話が続くとこのようなことが起こる。私が、リリース間もないbingと対話していて「愛しています」とも「結婚したいです」とも言われたのはそのためだった(その後、bingは1セッションで5回のやりとりまでに制限されている)。

 ChatGPTは、陽気で天才的な情報集約力(アテンションというしくみによるらしい)はあるが、思考(?)が破綻してくると、映画『禁断の惑星』のロビーのようにガチャガチャガチャと煙を上げて何も望む答えは出てこなくなる。

 それでも、まだこの始まったばかりのプロンプトプログラミング、とても楽しい世界に繋がっていると思う。

 

遠藤諭(えんどうさとし)

 株式会社角川アスキー総合研究所 主席研究員。MITテクノロジーレビュー日本版 アドバイザー。プログラマを経て1985年に株式会社アスキー入社。月刊アスキー編集長、株式会社アスキー取締役などを経て、2013年より現職。人工知能は、アスキー入社前の1980年代中盤、COBOLのバグを見つけるエキスパートシステム開発に関わりそうになったが、Prologの研修を終えたところで別プロジェクトに異動。「AMSCLS」(LHAで全面的に使われている)や「親指ぴゅん」(親指シフトキーボードエミュレーター)などフリーソフトウェアの作者でもある。趣味は、カレーと錯視と文具作り。2018、2019年に日本基礎心理学会の「錯視・錯聴コンテスト」で2年連続入賞。その錯視を利用したアニメーションフローティングペンを作っている。著書に、『計算機屋かく戦えり』(アスキー)、『頭のいい人が変えた10の世界 NHK ITホワイトボックス』(共著、講談社)など。

Twitter:@hortense667

カテゴリートップへ

この連載の記事
1
【整備済み品】 富士通 ノートパソコン LIFEBOOK MU937 超軽量 薄型ノートPC■Win11搭載 / MS Office H&B 2019 / FHD(1920x1080)/第七世代 Celeron/8GBメモリ/SSD 256GB/Webカメラ内蔵/13.3インチ
【整備済み品】 富士通 ノートパソコン LIFEBOOK MU937 超軽量 薄型ノートPC■Win11搭載 / MS Office H&B 2019 / FHD(1920x1080)/第七世代 Celeron/8GBメモリ/SSD 256GB/Webカメラ内蔵/13.3インチ
¥19,800
2
Lenovo ノートパソコン パソコン IdeaPad Slim 3 14.0インチ 第13世代 インテル® Core™ i5 プロセッサー搭載 13420H メモリ16GB SSD512GB MS Office 2024搭載 Windows11 バッテリー駆動14.1時間 重量1.39kg ルナグレー 83K00072JP ノートPC
Lenovo ノートパソコン パソコン IdeaPad Slim 3 14.0インチ 第13世代 インテル® Core™ i5 プロセッサー搭載 13420H メモリ16GB SSD512GB MS Office 2024搭載 Windows11 バッテリー駆動14.1時間 重量1.39kg ルナグレー 83K00072JP ノートPC
¥107,800
3
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
¥26,880
4
【Amazon.co.jp限定】 HP ノートパソコン 15-fd 15.6インチ インテル Core i5-1334U メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M4PA-AAAB)
【Amazon.co.jp限定】 HP ノートパソコン 15-fd 15.6インチ インテル Core i5-1334U メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M4PA-AAAB)
¥181,469
5
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥36,979

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥1,880
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
3
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
¥980
4
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
5
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
6
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥980
7
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥5,280
8
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥5,545
9
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
¥1,980
10
バッファロー マウス 無線 ワイヤレス 5ボタン 【戻る/進むボタン搭載】 小型 軽量 節電モデル 最大584日使用可能 BlueLED ブラック BSMBW315BK
バッファロー マウス 無線 ワイヤレス 5ボタン 【戻る/進むボタン搭載】 小型 軽量 節電モデル 最大584日使用可能 BlueLED ブラック BSMBW315BK
¥1,040

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン