äž»ãªæ©èœ
- Objective-Cããã³Objective-C++ãœãŒã¹ãã¡ã€ã«ïŒ`.m`ã`.mm`ïŒãã¯ã³ã¯ãªãã¯ã§ãã©ãŒããã
- LLVMã®clang-formatãæ¡çšããäºæž¬å¯èœãªæ¥çæšæºãã©ãŒããããå®çŸ
- æŒç®åãã¡ãœããã·ã°ããã£ãã¡ãã»ãŒãžéä¿¡åšãã®ã¹ããŒã¹ãæ£èŠå
- ã€ã³ã¿ãŒãã§ãŒã¹ãå®è£ ãå¶åŸ¡ãããŒã®ãã¬ãŒã¹ã¹ã¿ã€ã«ãäžè²«ããŠé©çš
- ã€ã³ããŒããæŽçã»ã°ã«ãŒãåããããããŒãšãœãŒã¹ã®å¯èªæ§ãåäž
- ã¬ã¬ã·ãŒObjective-Cãããžã§ã¯ããSwift/ObjCæ··åšã¢ããªãPRåã®ã¯ã€ãã¯ã¯ãªãŒãã³ã°ã«æé©
- ãµãŒããŒåŽå®è¡ã«ããã¿ã€ã ã¢ãŠããšãµã€ãºå¶éãèšããUIã®å¿çæ§ã確ä¿
ð ïž Objective-Cã³ãŒãã®ãã©ãŒãããæ¹æ³ for objectivec-formatter
1. ã³ãŒãã貌ãä»ããŸãã¯ã¢ããããŒã
Objective-C / Objective-C++ãœãŒã¹ããšãã£ã¿ã«è²Œãä»ãããã`.m` / `.mm`ãã¡ã€ã«ããã©ãã°ïŒããããããŠãã ãããããããŒã¹ããããã貌ãä»ããŠçŽ æ©ãæŽçããããšãå¯èœã§ãã
2. ãã©ãŒããã¿ãå®è¡
**Format**ãã¿ã³ãã¯ãªãã¯ããŠãã ãããã³ãŒãã¯å®å šãªãšã³ããã€ã³ãã«éä¿¡ãããclang-formatãObjective-Cã¹ã¿ã€ã«ãããã¡ã€ã«ã§å®è¡ãããŸãããã©ãŒããããããçµæã¯æ°ç§ã§è¿ãããŸãã
3. 確èªãã³ããŒãã³ããã
åºåã確èªããXcodeããšãã£ã¿ã«ã³ããŒããŠãã ãããã¯ãªãŒã³ãªãã¡ã€ã«ãã³ãããããŠãå·®åã空çœã§ã¯ãªãããžãã¯ã«éäžãããŸãã
æè¡ä»æ§
察å¿å ¥å
æ¥åžžçãªObjective-C / Objective-C++éçºåãã«æ§ç¯ã
| ã¿ã€ã | äŸ | åè |
|---|---|---|
| .mãœãŒã¹ãã¡ã€ã« | ãã¥ãŒã³ã³ãããŒã©ãã¢ãã«ããããŒãžã£ | ã¢ããããŒããšè²Œãä»ããå®å šãµããŒãã |
| .mm Objective-C++ãã¡ã€ã« | C++ãšCocoa APIã®ããªããžã³ã° | clang-formatã®Objective-C++ãµããŒãã䜿çšããŠãã©ãŒãããã |
| ããããŒã¹ãããã | @interfaceãããã¯ããããã³ã«ãã«ããŽãª | ããããŒã³ãŒããçŽæ¥ãšãã£ã¿ã«è²Œãä»ããŠæŽçå¯èœïŒãã¡ã€ã«ã¢ããããŒãã¯`.m` / `.mm`ãæ³å®ïŒã |
ãã©ãŒããã¿ãšã³ãžã³
ãã©ãŒããã¿ã¯å®å šãªããã¯ãšã³ãã§clang-formatã«åŠçãå§è²ã
| é ç® | 詳现 |
|---|---|
| ãšã³ãžã³ | LLVM clang-format (Objective-C / Objective-C++) |
| å®è¡ã¢ãã« | å°çšã® `/api/objectivec-formatter` ãšã³ããã€ã³ããä»ãããµãŒããŒããã¯ãšã³ã |
| ã¿ã€ã ã¢ãŠã | ãªã¯ãšã¹ãããšã«çŽ25ç§ã®å®å šã¿ã€ã ã¢ãŠã |
| åãã©ãŒãããç¯å² | 空çœãã€ã³ãã³ãããã¬ãŒã¹ãäžéšã®ã€ã³ããŒãã¬ã€ã¢ãŠã |
| ã»ãã³ãã£ã¯ã¹ | ã³ãŒãã®åäœã¯å€æŽããããã¬ã€ã¢ãŠãã®ã¿ã調æŽãããŸã |
ã¹ã¿ã€ã« & ã¬ã€ã¢ãŠã
ã³ãŒãã¯å®å®ããclang-formatã¹ã¿ã€ã«ãããã¡ã€ã«ã䜿çšããŠåºåãããŸãã
| ã«ããŽãª | æ£èŠåãããå 容 | éèŠæ§ |
|---|---|---|
| ã¡ãœããã·ã°ãã㣠| `-` ã®åšå²ã®ã¹ããŒã¹ãæ»ãå€ã®åããã©ã¡ãŒã¿ããã€ã³ã¿ | ããããŒãšå®è£ ã§ã®ã¡ãœãã宣èšã®ã¹ãã£ã³ã容æã«ããŸãã |
| ã¡ãã»ãŒãžéä¿¡ | ã«ã³ãåŸã®ã¹ããŒã¹ãã³ãã³ã®åšå²ããã¹ããããåŒã³åºãå ã®ã¹ããŒã¹ | æ·±ããã¹ãããã `-[obj doSomething:withOption:]` åŒã³åºãã®å¯èªæ§ãåäžãããŸãã |
| ãã¬ãŒã¹ & å¶åŸ¡ãã㌠| `@interface`ã`@implementation`ã`if`ã`for`ã`while` ã®ãã¬ãŒã¹é 眮 | ãã¡ã€ã«ãšè²¢ç®è éã§ã®ã¹ã¿ã€ã«ã®ãããé²ããŸãã |
| ã€ã³ããŒã | `#import` ãš `#include` ã®ã°ã«ãŒãåãšéé | ãã¡ã€ã«å é ã®ã»ã¯ã·ã§ã³ãæŽçããããŒãžç«¶åãæžãããŸãã |
| ã€ã³ãã³ã & æŽå | ãããã¯ãã¹ã€ããããã¹ããããã¹ã³ãŒãã®çµ±äžãããã€ã³ãã³ã | çŽ æ©ãæåç·šéã«ããäžæããªãããã¯ãæé€ããŸãã |
å¶é & ããã©ãŒãã³ã¹
å®éã®Objective-Cã¢ããªãšã©ã€ãã©ãªåãã«ãµã€ãºèšå®ããããã©ãŠã¶ãããªãŒãºãããŸããã
| å ¥åã¿ã€ã | ããããã®å¶é | åè |
|---|---|---|
| 貌ãä»ããœãŒã¹ | çŽ2 MBã®ããã¹ã | ããã¯ãšã³ãã«éä¿¡ããåã«é©çšãããããŒããªãããã |
| ã¢ããããŒããã¡ã€ã« | çŽ5 MB | ããŒã«ã§èšå®ããã `maxFileSizeBytes` ã«ãã£ãŠå¶éãããŸãã |
| å žåçãªã¬ã€ãã³ã· | < 1â2 ç§ | ãã¡ã€ã«ãµã€ãºããããã¯ãŒã¯ã¬ã€ãã³ã·ããµãŒããŒè² è·ã«äŸåããŸãã |
| é害ã¢ãŒã | ã¿ã€ã ã¢ãŠã / ãšã©ãŒã¡ãã»ãŒãž | ãšã©ãŒã¯UIããã³ã°ãããããšãªãæç¢ºã«è¡šç€ºãããŸãã |
ãã©ã€ãã·ãŒã¢ãã«
ãµãŒããŒäŸåã®äžæçãªåŠçã§ããã©ãŒãããã®ã¿ãç®çãšããŠããŸãã
| åŽé¢ | åäœ |
|---|---|
| 転é | ã³ãŒãã¯HTTPSçµç±ã§å®å šãªãã©ãŒããããšã³ããã€ã³ãã«éä¿¡ãããŸãã |
| ä¿å | äžæçãªåŠçãæå³ïŒå ¥åã¯ã¡ã¢ãªå ã§åŠçãããé·æçã«ä¿åãããŸããã |
| æ©å¯æ å ± | APIããŒãããŒã¯ã³ããŸãã¯æ¬çªç°å¢ã®èªèšŒæ å ±ããªã³ã©ã€ã³ããŒã«ã«è²Œãä»ããããšã¯é¿ããã¹ãã§ãã |
| ãã¹ããã©ã¯ãã£ã¹ | ãã®ããŒã«ã¯éæ©å¯ãã¡ã€ã«ãšè¿ éãªã¯ãªãŒã³ã¢ããã«äœ¿çšããCIãšéèŠãªãã©ãŒãããã¯èªç€Ÿã®ã€ã³ãã©å ã§ç¶æããŠãã ããã |
Objective-Cçšã³ãã³ãã©ã€ã³clang-format
æ¥åžžçãªéçºãšCIã§ã¯ãããŒã«ã«ããŒã«ãã§ãŒã³å ã®clang-formatãObjective-Cã³ãŒãã®äžè²«æ§ãä¿ã€æšæºçãªæ¹æ³ã§ãã
macOS / ð§ Linux
åäžã® `.m` ãã¡ã€ã«ããã®å Žã§ãã©ãŒããã
clang-format -i MyViewController.mèšå®ãããã¹ã¿ã€ã«ïŒäŸïŒ`.clang-format` ããïŒã䜿çšããŠãã£ã¹ã¯äžã®ãã¡ã€ã«ãæžãæããŸãã
ãã¡ã€ã«ã倿Žããã«ãã©ãŒããããããåºåããã¬ãã¥ãŒ
clang-format MyViewController.mãã©ãŒããããããã³ãŒããstdoutã«åºåãããããæåã«å·®åã確èªã§ããŸãã
ãããžã§ã¯ãå ã®ãã¹ãŠã®Objective-CãœãŒã¹ããã©ãŒããã
find . -name "*.m" -o -name "*.mm" | xargs clang-format -iObjective-C / Objective-C++ ã³ãŒãããŒã¹å šäœã«äžè²«ãããã©ãŒããããé©çšããŸãã
Windows
ããããŒãŸãã¯å®è£ ãã¡ã€ã«ããã©ãŒããã
clang-format.exe -i MyClass.héžæããclang-formatã¹ã¿ã€ã«ã§ããããŒãã¡ã€ã«ããã®å Žã§æŽæ°ããŸãã
ã¹ã¯ãªããã®äžéšãšããŠå®è¡
forfiles /S /M *.m /C "cmd /c clang-format.exe -i @file"ãªããžããªå ã®Objective-CãœãŒã¹ã«å¯Ÿããã·ã³ãã«ãªããããã©ãŒãããã
å®çšçãªãŠãŒã¹ã±ãŒã¹
iOS / macOS ã¢ããªéçº
é·æééçšãããObjective-Cã¢ããªããæ°ããSwiftã¢ãžã¥ãŒã«ãšãšãã«ä¿å®å¯èœãªç¶æ ã«ä¿ã¡ãŸãã
- å€§èŠæš¡ãªãªãã¡ã¯ã¿ãªã³ã°åã«ãã¬ã¬ã·ãŒãªãã¥ãŒã³ã³ãããŒã©ãŒãšã¢ãã«ãªããžã§ã¯ããæŽçããŸãã
- ã·ãã¢ãšãžã¥ãã¢ã®Objective-Céçºè ãæ··åšããããŒã ã§äžè²«ããã¹ã¿ã€ã«ãé©çšããŸãã
- ã³ãããåã«ãã©ãŒããããå®è¡ãããã«ãªã¯ãšã¹ãã§ã®ãã€ãºã®å€ãå·®åãæžãããŸãã
@interface MyViewController : UIViewController
@property(nonatomic, strong) NSString *titleText;
@end
@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];NSLog(@"Loaded: %@",_titleText);}
@end
ã³ãŒãã¬ãã¥ãŒ & ãã«ãªã¯ãšã¹ãæºå
ãã©ãŒããããäºåã¹ããããšããŠäœ¿çšããã¬ãã¥ãŒã®è°è«ãããžãã¯ã«éäžãããŸãã
- PRãéãåã«å€æŽããããã¡ã€ã«ã«ãã©ãŒããã¿ãå®è¡ãã空çœã®ãã€ãºãæé€ããŸãã
- ãã¬ãŒã¹ã¹ã¿ã€ã«ãšã€ã³ãã³ããå®å®ãããããšã§ãå·®åãå°ãããã¬ãã¥ãŒã容æã«ããŸãã
- åäžã®clang-formatãããã¡ã€ã«ã«å§ä»»ããããšã§ã¹ã¿ã€ã«è°è«ãæžãããŸãã
// ã¬ãã¥ãŒå: äžè²«æ§ã®ãªãã¹ããŒã¹
if(showAlert){[self showAlertWithMessage:message];}
// ãã©ãŒãããåŸ
if (showAlert) {
[self showAlertWithMessage:message];
}
â Frequently Asked Questions
ð ïžå éšã§ã¯ã©ã®ãã©ãŒããã¿ãšã³ãžã³ã䜿çšãããŠããŸããïŒ
ðã©ã®ãã¡ã€ã«ã¿ã€ãããµããŒããããŠããŸããïŒ
ðUIããã€ã³ãã³ããæå€§è¡å¹ ãå¶åŸ¡ã§ããŸããïŒ
ðãœãŒã¹ã³ãŒãã¯ä¿åãŸãã¯èšé²ãããŸããïŒ
HTTPSçµç±ã§å®å
šãªãã©ãŒããããšã³ããã€ã³ãã«éä¿¡ãããäžæçãªå
¥åãšããŠåŠçãããŸããé·æçãªä¿åã¯æå³ãããŠããŸãããããã§ãããã¹ããã©ã¯ãã£ã¹ãšããŠããªã³ã©ã€ã³ããŒã«ã«ç§å¯æ
å ±ãèªèšŒæ
å ±ããŸãã¯é«åºŠã«æ©å¯æ§ã®é«ãããžãã¹ããžãã¯ãå«ããªãã§ãã ãããâ ïžãã©ãŒãããã«ãã£ãŠã³ãŒãã®åäœãå€ããããšã¯ãããŸããïŒ
ðãã®WebããŒã«ãšããŒã«ã«ã®clang-formatã¯ãã€äœ¿ãã¹ãã§ããïŒ
Pro Tips
ã³ãããåã«ãã©ãŒããã¿ãŒãå®è¡ããŠããã«ãªã¯ãšã¹ãã®å·®åããã¬ãŒã¹ã®é 眮ã§ã¯ãªãåäœã«éäžãããŸãããã
CIïŒãŸãã¯ããªã³ãããããã¯ïŒã« `clang-format` ã¹ãããã远å ããŠãã¹ã¿ã€ã«ã®åé¡ãã³ãŒãã¬ãã¥ãŒã«å°éããªãããã«ããŸãããã
ã€ã³ããŒãããœãŒãããŠã°ã«ãŒãåããŠãããšãè€æ°ã®ããŒã ã¡ã€ããåããã¡ã€ã«ã倿Žããéã®ããŒãžç«¶åãæžãããŸãã
æ¬çªã®ã·ãŒã¯ã¬ãããããŒã¯ã³ããªã³ã©ã€ã³ãã©ãŒããã¿ãŒã«è²Œãä»ããã®ã¯é¿ããŸããããæ©å¯æ§ã®é«ãã³ãŒãã¯ãèªç€Ÿã€ã³ãã©å ã§ããŒã«ã«ã« clang-format ãå®è¡ããŠãã ããã
Additional Resources
Other Tools
- CSSãã¥ãŒãã£ãã¡ã€ã¢
- HTMLãã¥ãŒãã£ãã¡ã€ã¢
- JavaScriptãã¥ãŒãã£ãã¡ã€ã¢
- PHPãã¥ãŒãã£ãã¡ã€ã¢
- ã«ã©ãŒããã«ãŒ
- ã¹ãã©ã€ãæœåºããŒã«
- Base64ãã³ãŒããŒ
- Base64ãšã³ã³ãŒããŒ
- C#ãã©ãŒããã¿
- CSVãã©ãŒããã¿
- Dockerfile Formatter
- Elmãã©ãŒããã¿
- ENVãã©ãŒããã¿
- Goãã©ãŒããã¿
- GraphQLãã©ãŒããã¿
- HCLãã©ãŒããã¿
- INIãã©ãŒããã¿
- JSONãã©ãŒããã¿
- LaTeXãã©ãŒããã¿
- Markdownãã©ãŒããã¿
- Php Formatter
- Protoãã©ãŒããã¿
- Pythonãã©ãŒããã¿
- Rubyãã©ãŒããã¿
- Rustãã©ãŒããã¿
- Scalaãã©ãŒããã¿
- ã·ã§ã«ã¹ã¯ãªãããã©ãŒããã¿
- SQLãã©ãŒããã¿
- SVG ãã©ãŒããã¿
- Swift ãã©ãŒããã¿
- TOML ãã©ãŒããã¿
- Typescript Formatter
- XML ãã©ãŒããã¿
- YAML ãã©ãŒããã¿
- Yarn ãã©ãŒããã¿
- CSSãããã¡ã€ã¢
- Html Minifier
- Javascript Minifier
- JSONãããã¡ã€ã¢
- XML ãããã¡ã€ã¢
- HTTPããããŒãã¥ãŒã¢
- PDFããããã¹ããž
- æ£èŠè¡šçŸãã¹ã¿ãŒ
- SERPã©ã³ã¯ãã§ãã«ãŒ
- Whois ã«ãã¯ã¢ãã