DocC atau Documentation Compiler, adalah tool dari Apple yang bisa kita gunakan dalam membuat Developer Documentation untuk aplikasi, framework, dan package yang kita buat.
Jika kamu pernah membaca dokumentasi dari UIKit, Core Data, MapKit, atau bahkan Tutorial SwiftUI yang sangat interaktif, semua itu dibuat menggunakan DocC.
DocC menghasilkan dokumen dari 2 input, yang pertama adalah dari Source Code kita, kedua yaitu dari DocC Catalog (opsional), DocC Catalog adalah file dokumentasi yang kita buat secara custom, berisi kumpulan artikel, extension, serta tutorial terkait dengan framework atau package yang kita buat.
Untuk mempublikasikan dokumentasi yang telah kita buat, kita bisa mengirimkan file .doccarchive secara langsung, yang nantinya bisa dibuka melalui Xcode. Atau opsi kedua, kita bisa deploy ke web server, karena file .doccarchive berisi kumpulan file html, js, css, dll.
Berikut adalah beberapa kelebihan DocC dibandingkan dengan tools lain:
Auto Generate dari Source Code
Auto Completion
Terintegrasi dengan Xcode
Interactive Tutorial
Official dari Apple
Pertama silakan buka salah satu project-mu, atau bisa juga menggunakan sample project yang telah saya buat untuk mendemokan tutorial ini, sebuah Swift Package untuk menghitung Body Mass Index (BMI).
Kamu bisa download di sini: https://github.com/alfinsyahruddin/bmi-calculator/tree/starter
Di project tersebut ada 2 branch, pilih yang starter.
Untuk membuat dokumentasi, ada 2 cara:
Pilih menu Product -> Build Documentation
Atau menggunakan shortcut: ctrl + shift + command + D
Maka, dokumentasi akan terbuat secara otomatis dari source code kita! ๐
DocC mempunyai beberapa syntax atau aturan penulisan dalam pembuatan dokumentasi, bernama "Documentation Markup"
Seperti yang telah kita ketahui, ada 2 input yang digunakan DocC untuk membuat dokumen. Yang pertama adalah dari source code kita, nah kita bisa menambahkan deskripsi dan penjelasan pada source code kita melalui Code Comments agar terdokumentasi dengan lebih baik.
Untuk menambahkan deskripsi ada 2 cara, yaitu menggunakan /// atau /** diakhiri dengan */, contohnya seperti ini:
1/// ``BmiStatus`` is an enum of Body Mass Index (BMI) statuses.2public enum BmiStatus {3 case underWeight4 case normal5 case overWeight6 case obese7}
1/**2 ``BmiError`` is an enum of Body Mass Index (BMI) Errors.3 */4public enum BmiError: Error {5 case invalidIndex6}
Kita juga bisa menambahkan beberapa atribut untuk function atau method yang kita buat, seperti Parameters, Returns, dan Throws.
1/**2This method is for calculating Body Mass Index (BMI).34- Parameters:5 - weight: The weight of body (in kilograms).6 - height: The height of body (in meters).78- Returns: The result of BMI calculation.910- Throws: `BmiError.invalidIndex` if failed to get status due to invalid BMI index.11*/12public func calculateBmi(13 weight: Double,14 height: Double15) throws -> BmiResult {16 let index = weight / pow(height, 2)1718 return BmiResult(19 index: index,20 status: try self.getBmiStatus(index)21 )22}
Dan jika orang lain menekan "command + click" pada function kita, maka hasilnya akan seperti ini:
DocC Catalog adalah file dokumentasi yang kita buat secara custom, berisi kumpulan artikel, extension, serta tutorial terkait dengan framework atau package yang kita buat.
Untuk membuat DocC Catalog, caranya kita pilih menu "File -> New -> File" atau ketika kita baru pertama kali membuat project, centang opsi "Include Documentation"
Berikut adalah beberapa syntax untuk menulis dokumentasi pada DocC Catalog:
Pada dasarnya DocC menggunakan Markdown sebagai Syntax untuk penulisan dokumentasi. Kamu bisa belajar Markdown dari sini: https://www.markdownguide.org/cheat-sheet/
Untuk menambahkan gambar pada dokumentasi kita, caranya kita drag & drop file gambar kita ke dalam folder "Resources", kemudian kita tampilkan menggunakan syntax Markdown.
1
Namun, format nama file-nya terdapat sedikit perbedaan dengan Markdown biasa:
Component | Description |
---|---|
Image name | Required. Nama gambar yang ingin kita tampilkan (harus unik). |
Appearance | Optional. Tambahkan ~dark untuk gambar yang akan ditampilkan pada mode gelap. |
Display scale | Optional. Seberapa besar ukuran gambar yang akan ditampilkan. @1x, @2x, atau @3x. |
File extension | Required. Tipe gambar, seperti png atau jpg. |
Jika kita ingin membuat link referensi ke artikel yang kita buat, caranya seperti ini:
1<doc:Installation>
Jika kita ingin membuat link referensi ke Symbol seperti Class, Method, Enum, dll. Caranya seperti ini:
1``BmiCalculator``23``BmiCalculator/BmiStatus``45``BmiCalculator/BmiCalculator/calculateBmi(weight:height:)``
Landing Page adalah halaman awal dari dokumentasi kita, nah DocC memungkinkan kita untuk mengkustomisasi Landing Page tersebut, seperti menambahkan gambar, overview, topics, dll.
Untuk membuat custom Landing Page, caranya seperti ini:
Klik "Documentation.docc" pada Project Navigator.
Pilih File -> New -> File
Pilih "Empty"
Pastikan nama file-nya sama dengan nama Target dari Product Module, misalnya nama targetnya adalah "BmiCalculator" maka berilah nama "BmiCalculator.md"
Terakhir, di file "BmiCalculator.md" bagian paling atas, tambahkan header yang berisi nama target dengan diapit 2 backslash seperti ini:
BmiCalculator.md1# ``BmiCalculator``23BmiCalculator is a Swift package for calculate Body Mass Index (BMI).45...
Setelah itu kamu bisa mengedit file Landing Page tersebut sesuai dengan kebutuhan.
Untuk membuat artikel, caranya kita pilih "File -> New -> File" kemudian pilih "Article File"
Kita juga bisa mengelompokkan artikel-artikel yang telah kita buat, silakan buka file Landing Page yang telah kamu buat, dan tambahkan teks berikut:
BmiCalculator.md1...23## Topics45### Getting Started67- <doc:Installation>89### Tutorials1011- <doc:CalculateBmi>12- <doc:GetBmiStatus>
Jika kita ingin menambahkan penjelasan, gambar, dll pada Symbol (class, struct, enum, dll) caranya seperti ini:
Klik "Documentation.docc" pada Project Navigator.
Pilih File -> New -> File
Pilih "Extension File"
Pastikan nama file-nya sama dengan nama Symbol yang ingin kita buat extension-nya
Setelah itu sesuaikan judul dengan ref symbol nya, dan tambahkan code berikut:
1@Metadata {2 @DocumentationExtension(mergeBehavior: append)3}
Selain append, ada juga opsi override jika kita ingin meng-override Code Comment yang sudah ada pada source code tersebut.
Berikut adalah contoh jika kita ingin membuat Extension untuk enum BmiStatus :
BmiStatus.md1# `BmiCalculator/BmiStatus`23@Metadata {4 @DocumentationExtension(mergeBehavior: append)5}67## Formula89- underWeight: < 18.510- normal: 18.5 <= 2511- overWeight: 25 <= 3012- obese: > 30
Untuk melihat versi web dari dokumentasi yang telah kita buat, silakan buka terminal dan ikuti langkah berikut:
Jalankan command berikut untuk generate file ".doccarchive" di dalam folder "docc":
1xcodebuild docbuild -scheme BmiCalculator -derivedDataPath docc -destination 'generic/platform=iOS';
Jalankan command berikut untuk mengubah file ".doccarchive" menjadi file web yang diakses, ke dalam folder "docs":
1$(xcrun --find docc) process-archive transform-for-static-hosting docc/Build/Products/Debug-iphoneos/BmiCalculator.doccarchive --output-path docs;
Serve file web dari folder "docs" agar bisa diakses:
1python3 -m http.server --dir=docs
Kemudian buka http://localhost:8000/documentation/bmicalculator/
Sekarang, kita akan mencoba untuk melakukan deployment ke Github Pages menggunakan CI/CD. Agar tiap kali kita push ke github, dokumentasi kita juga akan terdeploy secara otomatis!
Pertama, buka repository Github-mu, kemudian klik "Settings"
Pilih menu "Pages"
Di bagian Build and deployment -> Source pilih "Github Actions"
Buat file baru bernama "publish-pages.yml" di dalam folder ".github/workflows/" yang berisi code berikut:
publish-pages.yml1# Name your workflow.2name: Deploy DocC3on:4 # Runs on pushes targeting the default branch5 push:6 branches: ["main"]7# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages8permissions:9 contents: read10 pages: write11 id-token: write12# Allow one concurrent deployment13concurrency:14 group: "pages"15 cancel-in-progress: true16jobs:17 # Single deploy job since we're just deploying18 deploy:19 environment:20 # Must be set to this for deploying to GitHub Pages21 name: github-pages22 url: ${{ steps.deployment.outputs.page_url }}23 runs-on: macos-1224 steps:25 - name: Checkout ๐๏ธ26 uses: actions/checkout@v327 - name: Build DocC28 run: |29 xcodebuild docbuild -scheme BmiCalculator \30 -derivedDataPath /tmp/docbuild \31 -destination 'generic/platform=iOS';32 $(xcrun --find docc) process-archive \33 transform-for-static-hosting /tmp/docbuild/Build/Products/Debug-iphoneos/BmiCalculator.doccarchive \34 --hosting-base-path bmi-calculator \35 --output-path docs;36 echo "<script>window.location.href += \"/documentation/bmicalculator\"</script>" > docs/index.html;37 - name: Upload artifact38 uses: actions/upload-pages-artifact@v139 with:40 # Upload only docs directory41 path: "docs"42 - name: Deploy to GitHub Pages43 id: deployment44 uses: actions/deploy-pages@v1
Kemudian lakukan commit & push ke Github!
Maka proses deployment akan berjalan dan tunggu prosesnya sampai selesai.
Sekarang, website dokumentasi kita telah bisa diakses oleh publik di: https://[USERNAME_GITHUB].github.io/bmi-calculator ๐
Jika kamu tertarik dan ingin mempelajari lebih dalam mengenai DocC, seperti cara Localization, membuat Interactive Tutorial, deploy ke Apache Web Server, dll. Kamu bisa membaca dokumentasinya di sini: https://developer.apple.com/documentation/docc
Oke mungkin itu saja yang bisa saya bagikan kali ini, kalau kamu merasa artikel ini bermanfaat silakan Like & Share artikel ini ke teman-teman kamu atau jika kamu punya pertanyaan, tulis aja di kolom komentar, Thank you! ๐ ๐
Always open to new ideas. ๐๏ธ
Articles that you might want to read.
Tutorial membongkar dan memodifikasi aplikasi iOS ๐
Otomatisasi build, testing, screenshot, dan deployment aplikasi iOS ke Testflight & AppStore.
Tutorial membongkar dan memodifikasi aplikasi Android ๐ค