SlideShare une entreprise Scribd logo
1  sur  16
D言語でI/O ~I/Oの新次元~ @mono_shoo 破壊的変更
はじめに D言語には独自I/Oがない C言語のFILE*を使うしか無い ポインタェ Streamは? あるけどdeprecatedなんだってよ by Andrei ぶっちゃけ一つの解ではあるけどDならもっといいのが作れるはず!
イメージ import std.io, std.stdio; void main() { autofport = FilePort(“path/to/file”); foreach (line; fport.byLine) { writeln(line); 	} } 短いモジュール名! RAIIによる開放! Rangeによるアクセス!
難しい点 独自I/Oの要件 C言語の資産(FILE*)を使えにゃいかん by Walter まずインターフェースはRangeに… by Andrei テンプレート+構造体で… by 最近のPhobos
何が問題? (1) FILE*との互換性はどこまでもつ? ノンブロッキングは? バッファは? バッファはどの層が持つべき? Handle/Buffer/Port Handle⊇Buffer/Port Handle/Buffer=Range/Port->Range
何が問題? (2) Handleのインターフェース プリミティブなメソッド/プロパティ read/write/seek/end/close/… Bufferのインターフェース プリミティブなメソッド/プロパティ Handle⊇Bufferな場合 seekは? 管理大変… Portのインターフェース byLine/byChunk/byPacket/…
1.FILE*との互換性(ノンブロッキング) ノンブロッキングとは? 読み込みのある無しにかかわらず、即座に処理が戻ってくるI/O
具体的なコード importstd.stdio; void main() {autosrc = stdin;autobuf = newubyte[](10);if (fread(buf.ptr, 1, 10, src) < 10)thrownew Exception("I/O error");}  throw が呼ばれるのはエラーの時だけ。 標準入出力で1文字しか入力しなかったらもう一度入力を求める。
ノンブロッキングの問題点 何が問題? FILE*を使う場合、一旦読み込みすると改行コードが現れるまで処理が戻らない! 中身をいじれば出来なくもないが、中身をいじれない処理系がある! DのI/Oをデフォルトで ノンブロッキングに対応するのは不可能!
どうやって解決する? DのI/Oにノンブロッキングを含めない CのFILE*は普通にHandleだのなんだので定義可能 ⇒Unbufferedの問題 ⇒Handleのインターフェースの問題 DのI/Oでノンブロッキングはオプションにする CのFILE*を使うHandleはノンブロッキングに出来ない ⇒Unbufferedの問題 ⇒Handleのインターフェースの問題
バッファの問題 CのFILE*を使ってバッファ処理の冗長性を可能な限り取り除くには? CのFILE*はデフォルトでバッファ有効 Dが独自にバッファを持つと冗長な場合がある
何が問題? HandleがFILE*にデータを読み込めと命令 Buffer Port(CStdioPort) メモリ Handle FILE* メモリ メモリ データ
何が問題? Bufferがバッファリングしろと命令 Buffer Port(CStdioPort) メモリ Handle FILE* データ メモリ メモリ メモリ
何が問題? Portによるバッファからの読み込み Buffer Port(CStdioPort) メモリ Handle FILE* データ メモリ メモリ メモリ
冗長! 一つにまとめたい!!! Buffer Port(CStdioPort) メモリ Handle FILE* メモリ
どうやって解決する? Buffer=Handleにすれば解決 Handle・Bufferのインターフェースの問題 もちろんオプション Port Handle=Buffer FILE* メモリ

Contenu connexe

En vedette

オンラインゲーム開発の楽しさ
オンラインゲーム開発の楽しさオンラインゲーム開発の楽しさ
オンラインゲーム開発の楽しさAkineko Shimizu
 
水を求めて〜蜃気楼に負けないゲーム開発〜
水を求めて〜蜃気楼に負けないゲーム開発〜水を求めて〜蜃気楼に負けないゲーム開発〜
水を求めて〜蜃気楼に負けないゲーム開発〜dan5
 
楽しくて病みつきになるゲームジャムのススメ
楽しくて病みつきになるゲームジャムのススメ楽しくて病みつきになるゲームジャムのススメ
楽しくて病みつきになるゲームジャムのススメHiroki Omae
 
個人開発でゲーム一本完成させるまでの苦難の道のり 〜企画編〜
個人開発でゲーム一本完成させるまでの苦難の道のり 〜企画編〜個人開発でゲーム一本完成させるまでの苦難の道のり 〜企画編〜
個人開発でゲーム一本完成させるまでの苦難の道のり 〜企画編〜narumi_
 
ゲーム制作初心者が知るべき8つのこと
ゲーム制作初心者が知るべき8つのことゲーム制作初心者が知るべき8つのこと
ゲーム制作初心者が知るべき8つのことMASA_T_O
 
エターナらないゲーム開発
エターナらないゲーム開発エターナらないゲーム開発
エターナらないゲーム開発Kohki Miki
 
東方紅魔郷AI
東方紅魔郷AI東方紅魔郷AI
東方紅魔郷AIaki33524
 
Swiftアプリ制作入門 かんたんシューティングゲーム
Swiftアプリ制作入門 かんたんシューティングゲームSwiftアプリ制作入門 かんたんシューティングゲーム
Swiftアプリ制作入門 かんたんシューティングゲーム聡 中川
 
一人からのゲーム開発
一人からのゲーム開発 一人からのゲーム開発
一人からのゲーム開発 Haruto Watanabe
 

En vedette (11)

オンラインゲーム開発の楽しさ
オンラインゲーム開発の楽しさオンラインゲーム開発の楽しさ
オンラインゲーム開発の楽しさ
 
水を求めて〜蜃気楼に負けないゲーム開発〜
水を求めて〜蜃気楼に負けないゲーム開発〜水を求めて〜蜃気楼に負けないゲーム開発〜
水を求めて〜蜃気楼に負けないゲーム開発〜
 
楽しくて病みつきになるゲームジャムのススメ
楽しくて病みつきになるゲームジャムのススメ楽しくて病みつきになるゲームジャムのススメ
楽しくて病みつきになるゲームジャムのススメ
 
面白いゲームを作る方法
面白いゲームを作る方法面白いゲームを作る方法
面白いゲームを作る方法
 
ゲームの企画って…
ゲームの企画って…ゲームの企画って…
ゲームの企画って…
 
個人開発でゲーム一本完成させるまでの苦難の道のり 〜企画編〜
個人開発でゲーム一本完成させるまでの苦難の道のり 〜企画編〜個人開発でゲーム一本完成させるまでの苦難の道のり 〜企画編〜
個人開発でゲーム一本完成させるまでの苦難の道のり 〜企画編〜
 
ゲーム制作初心者が知るべき8つのこと
ゲーム制作初心者が知るべき8つのことゲーム制作初心者が知るべき8つのこと
ゲーム制作初心者が知るべき8つのこと
 
エターナらないゲーム開発
エターナらないゲーム開発エターナらないゲーム開発
エターナらないゲーム開発
 
東方紅魔郷AI
東方紅魔郷AI東方紅魔郷AI
東方紅魔郷AI
 
Swiftアプリ制作入門 かんたんシューティングゲーム
Swiftアプリ制作入門 かんたんシューティングゲームSwiftアプリ制作入門 かんたんシューティングゲーム
Swiftアプリ制作入門 かんたんシューティングゲーム
 
一人からのゲーム開発
一人からのゲーム開発 一人からのゲーム開発
一人からのゲーム開発
 

Dernier

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Dernier (9)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

D I/O