SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
ClangのModules

Cocoa勉強会	#62	/	2013-10-19	/	木村渡

Powered by Rabbit 2.1.1 and COZMIXNG
Highlights of Xcode 5
Compiler
Modules for system frameworks
to speed build time
Auto Link frameworks imported
by code modules (...)
"Whatʼs New in Xcode"
Modules
Xcode 5 (Clang 3.3)の新機能
iOS 7 or Mac OS X 10.9
C, Objective-C (C++ not ready)
ぶっちゃけ、あんまり
気にしなくてよい
Xcodeがよきに
はからってくれる
Modules
コンパイルが速くなる(らしい)
ある種のprecompiled header
module単位でバイナリを生成
ASTをシリアライズしたもの(らしい)
fragileがうんぬんは他の資料を見てね。
Modules @import
// including header file
#import <Foundation/Foundation.h>
#import <Foundation/NSString.h>
// using Modules
@import Foundation;
@import Foundation.NSString;
あっとまーく	+	import。
ヘッダファイル名でなくモジュール名を書く。
通常ヘッダファイル名とモジュール名は同じ。
Modules Auto Link
コード中に@import
→必要なものを自動的にリンク。
リンクするライブラリやフレームワー
クの指示が不要に。
Modules Auto Linking
clangを直接たたいてるなら、リンカ
オプションが不要に。
-llib
-framework f
標準の場所にないとき、-Iや-Fは必要
話すこと
modulesとは	(済み)
module.map
試してみる
clang-3.4での新機能	(の予定)
module.map
モジュールを定義するファイル。
これさえあればライブラリ、フレーム
ワークがモジュール対応に。
module.mapの中身はテキスト
module.map

$ cd `xcrun --sdk iphoneos
--show-sdk-path`
$ find . -name module.map
:
./System/Library/Frameworks/
Foundation.framework/module.m
:
./System/Library/Frameworks/
StoreKit/module.map
:
module.map
./System/Library/Frameworks/
UIKit.framework/module.map
:
./usr/include/module.map
./usr/include/objc/module.map
10.9は未リリースだから、iOS7のSDKにあるmodule.mapを見てみ
よう。
フレームワークとinludeとヘッダファイルがあったような場所に
module.mapが置かれている。
Foundation.framework/
module.map

framework module Foundation [system] {
umbrella header "Foundation.h"
export *
module * {
export *
}
module.mapの中身。詳しくはClangのドキュメント見てね。
/usr/include/module.map

module Darwin [system] {
// Headers that are repeatedly inclu
// assigned to any given module.
exclude header "_structs.h"
exclude header "sys/_structs.h"
module cdefs {
header "sys/cdefs.h"
export *
}
/usr/include/module.map
// C standard library
module C {
module complex {
header "complex.h"
export *
}
:
"Module Map Language"
まだまだ変わりそう。clang 3.4で予約
語も増えてる。
iOS7 SDKでは使われてない機能も。
config_macros
conflict
link
モジュールとライブラリの名前ちがうときにlink使うぽい。
"Module declaration"
Name.framework/
module.map
/* module map file */
Headers/
Frameworks/
Resources/
Name
.frameworkのすぐ下にmodule.mapを置くようになっている。
使ってみる
iOS 7.0 SDKを参考に、Mountain Lion
にmodule.mapをつっこむ!

framework module Foundation [system] {
umbrella header "Foundation.h"
export *
module * {
export *
}
}
mod1.m / 今までのやり方

#import <Foundation/Foundation.h>
int main (int argc, const char * argv[
@autoreleasepool {
NSLog(@"Hello, modules!");
}
return 0;
}
mod1.m / 今までのやり方
% clang mod1.m -o mod1
-framework Foundation
# framework name ^^^^^^^^^^
% otool -L mod1
mod1:
/System/Library/Frameworks/
Foundation.framework/
Versions/C/Foundation (...)
:
mod2.m / Modulesを使う

@import Foundation;
/* ^^^^ using modules */
int main (int argc, const char * argv[
@autoreleasepool {
NSLog(@"Hello, modules!");
}
return 0;
}
mod2.m / Modulesを使う
% clang mod2.m -o mod2 -fmodules
# no -framework
^^^^^^^^^
% otool -L mod2
mod2:
:
/System/Library/Frameworks/
Foundation.framework/
Versions/C/Foundation (...)
#importを@importに読み替え
% clang mod1.m -o mod1 -fmodules
% ./mod1
2013-10-18 ...[] Hello, modules!
# works fine!
ソースコード中は#importなのにモジュールが使えてる。
リンクするフレームワークを-frameworkで指定してない→自動リン
クが機能してる。
autolinkを無効に

% clang mod1.m -o mod1 -fmodules
-fno-autolink
#
disable autolink ^^^^^^^^^^^^^
Undefined symbols for architecture x86
"_NSLog", referenced from:
_main in mod1-dTLx89.o
:
Xcodeでの設定
CLANG_ENABLE_MODULES:
YES → -fmodules

CLANG_MODULES_AUTOLINK:
NO → -fno-autolink
ここまでのまとめ
module.mapがあればmodulesが使
える
#importも-fmodulesで@importと
して解釈される
→コード修正不要
Apple版でない、clang-3.3でも同様
mod3.m / cache

@import Foundation.NSObjCRuntime;
/* ^^^^ using modules */
int main (int argc, const char * argv[
@autoreleasepool {
NSLog(@"Hello, modules!");
}
return 0;
}
mod3.m / cache

% clang mod3.m -o mod3 -fmodules
-fmodules-cache-path=./tmp
% find ./tmp
./tmp
./tmp/B76TNZTEB88L
./tmp/B76TNZTEB88L/_Builtin_intrinsics
./tmp/B76TNZTEB88L/Foundation.pcm
./tmp/B76TNZTEB88L/modules.idx
./tmp/modules.timestamp
mod3.m / cache

% clang -module-file-info
./tmp/.../Foundation.pcm
Information for module file
'./tmp/.../Foundation.pcm':
Generated by this Clang: (clang-500.
Language options:
C99: Yes
C11: No
Microsoft extensions: No
:
mod3.m / cache
% strings ./tmp/.../Foundation.pcm |
grep ^NS
NS,I
NSs@
NSGreaterThanPredicateOperatorType
NSURLRequest
NSInvalidArchiveOperationException
:
シンボルも入ってるぽい。
Problems modules do not
solve
Rewrite the world's code
Versioning
Namespaces
Binary distribution of modules
"Clang 3.3 documentation"
clang-3.4 modules
C++ support (experimental)
compiler options
-fmodule-maps, -fmodule-mapfile, ...

module map lang
private, extern, use
clang-3.4 modularize
clang-tools-extra
generate module.map (r192703)
ヘッダファイルからmodule.mapを生成する機能が追加された。
Resources
Clang documentation
WWDC 2013
感想
ユーザ(開発者)があまり気を回さな
くてもうまくいくよう、よく準備さ
れてる
まだまだ変わりそう
ヘッダごとでなくmodule単位で生
成することでパフォーマンス稼いで
る?
終

Powered by Rabbit 2.1.1 and COZMIXNG

Mais conteúdo relacionado

Mais procurados

Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にTaku Miyakawa
 
Code injection
Code injectionCode injection
Code injectionry0kvn
 
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswiftSwift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswiftTomohiro Kumagai
 
Build 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansaiBuild 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansaiTomohiro Kumagai
 
ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視npsg
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるKoichi Sakata
 
introducing vue-wait-component
introducing vue-wait-componentintroducing vue-wait-component
introducing vue-wait-componentKenjiro Kubota
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Ransui Iso
 
An Internal of LINQ to Objects
An Internal of LINQ to ObjectsAn Internal of LINQ to Objects
An Internal of LINQ to ObjectsYoshifumi Kawai
 
Sd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 WhiteSd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 WhiteAkio Katayama
 
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリームC# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム信之 岩永
 
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃんRetrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃんYukari Sakurai
 
StackStormではじめる1人Slackのすすめ
StackStormではじめる1人SlackのすすめStackStormではじめる1人Slackのすすめ
StackStormではじめる1人Slackのすすめ光平 八代
 
Altera SDK for OpenCL解体新書 perlスクリプト編
Altera SDK for OpenCL解体新書 perlスクリプト編Altera SDK for OpenCL解体新書 perlスクリプト編
Altera SDK for OpenCL解体新書 perlスクリプト編Mr. Vengineer
 
コマンドラインからplistファイルを扱う
コマンドラインからplistファイルを扱うコマンドラインからplistファイルを扱う
コマンドラインからplistファイルを扱うYusuke Kawakami
 

Mais procurados (20)

NDS#31
NDS#31NDS#31
NDS#31
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 
Driverについて
DriverについてDriverについて
Driverについて
 
Code injection
Code injectionCode injection
Code injection
 
Node native ext
Node native extNode native ext
Node native ext
 
Swift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswiftSwift 2.0 で変わったところ「後編」 #cswift
Swift 2.0 で変わったところ「後編」 #cswift
 
Build 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansaiBuild 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansai
 
ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視
 
FlexUnit4とMockitoFlex
FlexUnit4とMockitoFlexFlexUnit4とMockitoFlex
FlexUnit4とMockitoFlex
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
 
introducing vue-wait-component
introducing vue-wait-componentintroducing vue-wait-component
introducing vue-wait-component
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
 
An Internal of LINQ to Objects
An Internal of LINQ to ObjectsAn Internal of LINQ to Objects
An Internal of LINQ to Objects
 
Sd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 WhiteSd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 White
 
C# 8.0 非同期ストリーム
C# 8.0 非同期ストリームC# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
 
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃんRetrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp 
でAndroidのHTTP通信が快適だにゃん
 
StackStormではじめる1人Slackのすすめ
StackStormではじめる1人SlackのすすめStackStormではじめる1人Slackのすすめ
StackStormではじめる1人Slackのすすめ
 
Altera SDK for OpenCL解体新書 perlスクリプト編
Altera SDK for OpenCL解体新書 perlスクリプト編Altera SDK for OpenCL解体新書 perlスクリプト編
Altera SDK for OpenCL解体新書 perlスクリプト編
 
コマンドラインからplistファイルを扱う
コマンドラインからplistファイルを扱うコマンドラインからplistファイルを扱う
コマンドラインからplistファイルを扱う
 

Semelhante a Clang Modules

Modeller_doc_japanese_ver.1.0
Modeller_doc_japanese_ver.1.0Modeller_doc_japanese_ver.1.0
Modeller_doc_japanese_ver.1.0Satoshi Kume
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuronekoKohki Nakashima
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Daisuke Hiraoka
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniterYuya Matsushima
 
OpenGLプログラミング
OpenGLプログラミングOpenGLプログラミング
OpenGLプログラミング幸雄 村上
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugY Watanabe
 
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)TetsuroMatsumura
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309Nobuhiro Sue
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Etsuji Nakai
 
Symfony2からdoctrine mongo db odmを使ってみる
Symfony2からdoctrine mongo db odmを使ってみるSymfony2からdoctrine mongo db odmを使ってみる
Symfony2からdoctrine mongo db odmを使ってみるKoji Iwazaki
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsuNanha Park
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようAkira Shimosako
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうDevTakas
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西Masahide Yamamoto
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Takako Miyagawa
 
Hakodate - simple framework
Hakodate - simple frameworkHakodate - simple framework
Hakodate - simple frameworkHiroaki Murayama
 

Semelhante a Clang Modules (20)

Modeller_doc_japanese_ver.1.0
Modeller_doc_japanese_ver.1.0Modeller_doc_japanese_ver.1.0
Modeller_doc_japanese_ver.1.0
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko
 
PHP勉強会 #51
PHP勉強会 #51PHP勉強会 #51
PHP勉強会 #51
 
Embulk 20150411
Embulk 20150411Embulk 20150411
Embulk 20150411
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
OpenGLプログラミング
OpenGLプログラミングOpenGLプログラミング
OpenGLプログラミング
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
 
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
 
Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化Aeolus Conductorによる複数環境へのデプロイ自動化
Aeolus Conductorによる複数環境へのデプロイ自動化
 
Symfony2からdoctrine mongo db odmを使ってみる
Symfony2からdoctrine mongo db odmを使ってみるSymfony2からdoctrine mongo db odmを使ってみる
Symfony2からdoctrine mongo db odmを使ってみる
 
sveltekit-ja.pdf
sveltekit-ja.pdfsveltekit-ja.pdf
sveltekit-ja.pdf
 
Haskell 6-module
Haskell 6-moduleHaskell 6-module
Haskell 6-module
 
Nodejuku01 ohtsu
Nodejuku01 ohtsuNodejuku01 ohtsu
Nodejuku01 ohtsu
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
Hakodate - simple framework
Hakodate - simple frameworkHakodate - simple framework
Hakodate - simple framework
 

Mais de Wataru Kimura

OS X DYLD_* environments
OS X DYLD_* environmentsOS X DYLD_* environments
OS X DYLD_* environmentsWataru Kimura
 
リマインダーの繰り返しを自由に設定する (EventKit)
リマインダーの繰り返しを自由に設定する (EventKit)リマインダーの繰り返しを自由に設定する (EventKit)
リマインダーの繰り返しを自由に設定する (EventKit)Wataru Kimura
 
Xcode4 project template (slide)
Xcode4 project template (slide)Xcode4 project template (slide)
Xcode4 project template (slide)Wataru Kimura
 
Applinkで「選べる」アプリ
Applinkで「選べる」アプリApplinkで「選べる」アプリ
Applinkで「選べる」アプリWataru Kimura
 
new Objctive-C literal syntax
new Objctive-C literal syntaxnew Objctive-C literal syntax
new Objctive-C literal syntaxWataru Kimura
 
InputMethodKit超入門
InputMethodKit超入門InputMethodKit超入門
InputMethodKit超入門Wataru Kimura
 
Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信Wataru Kimura
 
Precipitateに見る、外部リソースのSpotlight化
Precipitateに見る、外部リソースのSpotlight化Precipitateに見る、外部リソースのSpotlight化
Precipitateに見る、外部リソースのSpotlight化Wataru Kimura
 
Hotkeyslib3 Cocoaでホットキー
Hotkeyslib3 CocoaでホットキーHotkeyslib3 Cocoaでホットキー
Hotkeyslib3 CocoaでホットキーWataru Kimura
 
らくらくアップデートSparkle
らくらくアップデートSparkleらくらくアップデートSparkle
らくらくアップデートSparkleWataru Kimura
 
ClangでObjective-Cを静的解析
ClangでObjective-Cを静的解析ClangでObjective-Cを静的解析
ClangでObjective-Cを静的解析Wataru Kimura
 
SIMBLでCocoaアプリをパワーアップ
SIMBLでCocoaアプリをパワーアップSIMBLでCocoaアプリをパワーアップ
SIMBLでCocoaアプリをパワーアップWataru Kimura
 
Three20のTTURLRequest
Three20のTTURLRequestThree20のTTURLRequest
Three20のTTURLRequestWataru Kimura
 
InputMethodKitで入力プログラムをつくろう
InputMethodKitで入力プログラムをつくろうInputMethodKitで入力プログラムをつくろう
InputMethodKitで入力プログラムをつくろうWataru Kimura
 

Mais de Wataru Kimura (18)

OS X DYLD_* environments
OS X DYLD_* environmentsOS X DYLD_* environments
OS X DYLD_* environments
 
リマインダーの繰り返しを自由に設定する (EventKit)
リマインダーの繰り返しを自由に設定する (EventKit)リマインダーの繰り返しを自由に設定する (EventKit)
リマインダーの繰り返しを自由に設定する (EventKit)
 
Xcode4 project template (slide)
Xcode4 project template (slide)Xcode4 project template (slide)
Xcode4 project template (slide)
 
Applinkで「選べる」アプリ
Applinkで「選べる」アプリApplinkで「選べる」アプリ
Applinkで「選べる」アプリ
 
new Objctive-C literal syntax
new Objctive-C literal syntaxnew Objctive-C literal syntax
new Objctive-C literal syntax
 
Three20 lint
Three20 lintThree20 lint
Three20 lint
 
Macos services
Macos servicesMacos services
Macos services
 
InputMethodKit超入門
InputMethodKit超入門InputMethodKit超入門
InputMethodKit超入門
 
Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信
 
PSMTabBarControl
PSMTabBarControlPSMTabBarControl
PSMTabBarControl
 
Precipitateに見る、外部リソースのSpotlight化
Precipitateに見る、外部リソースのSpotlight化Precipitateに見る、外部リソースのSpotlight化
Precipitateに見る、外部リソースのSpotlight化
 
Hotkeyslib3 Cocoaでホットキー
Hotkeyslib3 CocoaでホットキーHotkeyslib3 Cocoaでホットキー
Hotkeyslib3 Cocoaでホットキー
 
値変換
値変換値変換
値変換
 
らくらくアップデートSparkle
らくらくアップデートSparkleらくらくアップデートSparkle
らくらくアップデートSparkle
 
ClangでObjective-Cを静的解析
ClangでObjective-Cを静的解析ClangでObjective-Cを静的解析
ClangでObjective-Cを静的解析
 
SIMBLでCocoaアプリをパワーアップ
SIMBLでCocoaアプリをパワーアップSIMBLでCocoaアプリをパワーアップ
SIMBLでCocoaアプリをパワーアップ
 
Three20のTTURLRequest
Three20のTTURLRequestThree20のTTURLRequest
Three20のTTURLRequest
 
InputMethodKitで入力プログラムをつくろう
InputMethodKitで入力プログラムをつくろうInputMethodKitで入力プログラムをつくろう
InputMethodKitで入力プログラムをつくろう
 

Clang Modules