SlideShare ist ein Scribd-Unternehmen logo
1 von 39
マスタリング バベル Boost.勉強会 #2 ( 2010-09-11 )
概要 バベルってなに? 使い方 オプション 今後の課題 2
バベルってなに? マスタリング バベル 3
バベルってなに? 文字エンコーディング変換モジュールです! 4
バベルってなに? 文字エンコーディング変換モジュールです! シフトJIS,JIS,EUC,UNICODE(UTF-8,UTF-16,UTF-32)に対応していずれの組み合わせであろうと相互変換できます。 5
バベルってなに? 文字エンコーディング変換モジュールです! シフトJIS,JIS,EUC,UNICODE(UTF-8,UTF-16,UTF-32)に対応していずれの組み合わせであろうと相互変換できます。 ×国際化対応の為のものではありません! 国際化対応を前提とする場合、MLang, iconv, ICU  あたりを推奨します。  6
バベルってなに? 真にフリーなライセンス 7
バベルってなに? 真にフリーなライセンス GPLみたいにうだうだ言いません! 8
バベルってなに? 真にフリーなライセンス GPLみたいにうだうだ言いません! 商用だろうが断りなく好き勝手に使って構いません! 9
バベルってなに? 真にフリーなライセンス GPLみたいにうだうだ言いません! 商用だろうが断りなく好き勝手に使って構いません! オープンソースソフトウェアの一部としてソースファイル毎再配布しても構いません! 10
バベルってなに? 強いて制限を挙げるなら… 11
バベルってなに? 強いて制限を挙げるなら… 「バベルはワシが作った」とか言い出さないで。 第三者から俺が盗人呼ばわりされるのはさすがに勘弁! 12
バベルってなに? 強いて制限を挙げるなら… 「バベルはワシが作った」とか言い出さないで。 第三者から俺が盗人呼ばわりされるのはさすがに勘弁! 万が一なにか問題があっても「自己責任」で。 俺に責任追及されてもそんなの知らん! 13
バベルってなに? 高い文字エンコーディング判別精度 14
バベルってなに? 高い文字エンコーディング判別精度 日本語限定だし、日本語文中に含まれる文字コードの出現率データを使っているので非常に高い文字エンコーディング判別精度を誇ります! 15
バベルってなに? 高い移植性 16
バベルってなに? 高い移植性 あの AIX 上ですらちゃんと動きます! ※ここ苦笑する所 17
バベルってなに? 利用実績 18
バベルってなに? 利用実績 具体的な数は残念ながらろくに把握できていませんが、フリーなライセンス、文字エンコーディング判別精度、高い移植性なんかのおかげで、かなり規模でご採用頂けているようです。 19
使い方 マスタリング バベル 20
使い方 まずバベルをここからダウンロードします! http://tricklib.com/cxx/ex/babel/#download ※一番下の[バベル全ファイルZIPパック]がオススメ 21
使い方 次にダウンロードした各ファイルをバベルを利用するプログラムのソースファイルを置いているディレクトリにコピーします。 ※babel.hと babel.cpp だけでなく*.csv, *.dat も同じディレクトリに一緒にコピーしてください。 22
使い方 babel.hを #include します。 23 #include "babel.h"
使い方 最初に初期化関数を呼び出します。 24 int main(...) { 	... 	babel::init_babel(); 	... }
使い方 文字エンコーディング変換関数を呼び出します。 25 void f() {     std::string source, destination;     ...    //  全自動変換     destination = babel::auto_translate<>(source); ...    //  ShiftJIS->EUC変換     destination = babel::sjis_to_euc(source); } 変換関数の一覧:http://tricklib.com/cxx/ex/babel/#functions
使い方 あとは babel.cpp も他のソースコードと一緒にコンパイル・リンクもするだけ。 ※具体的な方法はご使用のIDEやmakeなどの環境次第ですのでここでは説明しません。 26
使い方 ストリーム 27 using namespace babel; void execute_translater(std::istream &input, std::ostream &output, bbl_translater<bbl_binary, bbl_binary> translater) { bbl_binarybuffer; bbl_binarybuffer2;     while(!input.eof())    { bbl_binary::value_type buffer3[1024]; input.read(buffer3, 1024);         unsigned int size = input.gcount(); buffer.assign(buffer3, size); translater<< buffer; translater>> buffer2;         output << buffer2;     } } void  f() {    … execute_translater(std::ifstream(“src.txt”), std::cout, auto_translate_engine<bbl_string>::create());    … }
オプション マスタリング バベル 28
オプション 大半のマクロ定義によるオプションは指定なしでもだいたいよしなに処理しますが多少効率の悪いコードになることもあるので面倒でなければ指定をしたほうがいいです。 29
オプション wchar_tのサイズ __UNICODE_CHAR_SIZE_2__ __UNICODE_CHAR_SIZE_4__ × __UNICODE_CHAR_SIZE_UNKNOWN__ 30
オプション エンディアン __LITTLE_ENDIAN_COMPUTER__ __BIG_ENDIAN_COMPUTER__ × __UNKNOWN_ENDIAN_COMPUTER__ 31
オプション 処理系(コンパイラ)の文字エンコーディング __USING_ANSI__ __USING_SJIS__ __USING_EUC__ __USING_UTF8__ × __USING_UNKNOWN__ 32
オプション テーブルの形式 __BBL_USING_STATIC_TABLE__ ( default ) 静的なテーブルを使用し、 babel::init_babel() の処理時間も非常に短くなります。 コンパイラに負荷をかける為、コンパイルできないことがあります。 ※コンパイラのオプションで問題を回避できる場合もあり。 __BBL_USING_STDMAP_TABLE__ 静的なテーブルの代りに std::map を使用し、 babel::init_babel() の処理時間も長くなり、メモリ消費量も増大します。 33
オプション SJIS⇔UNICODE変換で使用するマッピング __BBL_USE_UNICODE_MAP_CP932__ ( default ) __BBL_USE_UNICODE_MAP_UTC__ __BBL_USE_UNICODE_MAP_APPLE__ 34
オプション 使用しないコードとデータの除去 __BBL_DISABLE_UNICODE__ __BBL_DISABLE_BINARY__ __BBL_DISABLE_UTF32__ ※この指定だけは babel.hで始めから固定で定義されています。 UTF-32 の実装が必要な場合にこのマクロの #define を babel.hから削除してください。 __BBL_DISABLE_SELECTORS__ 35
今後の課題 マスタリング バベル 36
今後の課題 マクロ名から連続したアンダースコアの除去 例: __BABEL_BABEL_H__ -> BABEL_BABEL_H UTF-8 で本来無効なバイト列の無効化 絵文字対応 37
質疑応答 マスタリング バベル 38
ご静聴ありがとうございました。 マスタリング バベル

Weitere ähnliche Inhalte

Andere mochten auch

エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング道化師 堂華
 
エラーハンドリングモデル考察
エラーハンドリングモデル考察エラーハンドリングモデル考察
エラーハンドリングモデル考察道化師 堂華
 
C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門道化師 堂華
 
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編道化師 堂華
 
C++ tips2 インクリメント編
C++ tips2 インクリメント編C++ tips2 インクリメント編
C++ tips2 インクリメント編道化師 堂華
 

Andere mochten auch (6)

バグベアード入門
バグベアード入門バグベアード入門
バグベアード入門
 
エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング
 
エラーハンドリングモデル考察
エラーハンドリングモデル考察エラーハンドリングモデル考察
エラーハンドリングモデル考察
 
C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門
 
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
 
C++ tips2 インクリメント編
C++ tips2 インクリメント編C++ tips2 インクリメント編
C++ tips2 インクリメント編
 

Kürzlich hochgeladen

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 

Kürzlich hochgeladen (12)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

マスタリング バベル