Lewati ke konten utama

Menguasai Shiny untuk Python: Panduan Pemula Membangun Aplikasi Web Interaktif

Pelajari dasar-dasar Shiny untuk Python agar Anda dapat dengan cepat mulai membuat dashboard dan aplikasi web interaktif dengan pustaka baru ini!

Jelajahi bersama AI

Pengantar Shiny dan Manfaatnya

Mereka yang berpengalaman bekerja dengan R kemungkinan besar pernah mendengar tentang paket Shiny, yang memungkinkan Anda membuat aplikasi web interaktif. R Shiny dirilis pada 2012, dan permintaannya tumbuh pesat setelah disadari bahwa paket yang mudah digunakan ini memungkinkan ilmuwan dan analis membuat model dan dashboard yang lebih interaktif.

Pada 2023, Shiny untuk Python keluar dari tahap alpha, menyediakan kerangka kerja reaktif serupa untuk bahasa Python. Shiny terkenal karena kesederhanaan dan efektivitasnya dalam membuat dashboard dan aplikasi berbasis web tanpa perlu keahlian pengembangan web yang mendalam.

Apa itu Shiny?

Shiny adalah kerangka kerja aplikasi web sumber terbuka untuk R dan, dengan perkembangan terbaru, untuk Python. Ini memungkinkan profesional data mengubah analisis mereka menjadi aplikasi web interaktif. Inti dari Shiny berpusat pada konsep pemrograman reaktif, di mana perubahan pada masukan (seperti slider atau tombol) memicu pembaruan otomatis pada keluaran (seperti plot atau tabel).

Ada banyak manfaat dari kerangka kerja Shiny untuk membuat aplikasi berbasis web. Shiny memanfaatkan pemrograman reaktif, memungkinkan Anda membangun aplikasi yang merespons secara dinamis terhadap masukan pengguna, menciptakan pengalaman yang lebih menarik dan personal. Shiny memiliki pustaka yang ramah pengguna dan dokumentasi yang komprehensif, memungkinkan mereka yang memiliki pengetahuan pemrograman dasar untuk membuat aplikasi yang interaktif dan menarik secara visual. Bagi penggemar Python, Shiny kini menawarkan jembatan antara ekosistem sains data Python yang kaya dan kemampuan pengembangan web Shiny.

Berikut beberapa contoh di mana kerangka kerja Shiny akan bermanfaat:

  • Dashboard Interaktif: Shiny sangat cocok untuk membangun dashboard interaktif yang memungkinkan pengguna menelusuri dan memvisualisasikan data secara real time. Anda dapat menggunakan kiat ini untuk merancang dashboard yang apik.
  • Eksplorasi Data: Analis dapat menggunakan Shiny untuk membuat aplikasi yang memungkinkan pengguna menelusuri set data secara interaktif, menyesuaikan parameter dan visualisasi secara langsung.
  • Sistem Pendukung Keputusan: Shiny dapat dimanfaatkan untuk mengembangkan sistem pendukung keputusan, memfasilitasi pengambilan keputusan berbasis data dengan menyediakan insight dinamis.
  • Alat Edukasi: Shiny bernilai dalam konteks pendidikan, memungkinkan pembuatan materi pengajaran dan demonstrasi interaktif.

Catatan: Penting untuk dipahami bahwa Shiny untuk R dan Shiny untuk Python berbeda. Meskipun memiliki konsep dasar yang serupa, sintaks dan istilahnya tidak dapat dipertukarkan. Jika Anda tahu cara menggunakan Shiny untuk R, Anda akan memiliki keunggulan saat mempelajari Shiny untuk Python, tetapi Anda tetap perlu mempelajari perbedaan yang diperkenalkan untuk menyesuaikan dengan Python.

Perbandingan Shiny dengan kerangka aplikasi web lainnya

Saat mempertimbangkan pengembangan aplikasi web untuk sains data, ada baiknya memahami bagaimana posisi Shiny dibandingkan kerangka lainnya.

Shiny menawarkan kombinasi unik antara kesederhanaan dan fleksibilitas. Namun, versi Python relatif baru dibandingkan kerangka lainnya. Shiny dirancang untuk memudahkan siapa pun yang memiliki pengetahuan pengkodean Python dalam mengembangkan aplikasi web.

Selain kemudahannya, Shiny dirancang untuk mendukung penskalaan yang mulus, memanfaatkan caching dan reaktivitas selektif untuk menjaga kerangka reaktifnya tetap efisien. Ini memberinya keunggulan dibandingkan beberapa kerangka desain web lainnya. Sintaks deklaratif dan model pemrograman reaktifnya juga membuatnya mudah diakses oleh analis data, memungkinkan mereka membuat aplikasi interaktif tanpa keahlian pengembangan web yang mendalam.

Sebaliknya, kerangka lain seperti Dash dan Streamlit menawarkan kekuatan yang berbeda. Dash menggunakan sintaks Pythonic dan menekankan pengembangan cepat. Streamlit unggul dalam pembuatan prototipe cepat dengan rendering otomatis tetapi akan menjalankan ulang seluruh program saat masukan berubah, yang menyebabkan ketidakefisienan ketika aplikasi diskalakan. Flask dan Django adalah kerangka web tujuan umum yang menawarkan fleksibilitas dan kontrol, tetapi sering kali membutuhkan lebih banyak keahlian pengembangan web. Jika Anda tertarik mempelajarinya, Anda dapat membaca tutorial Django dari DataCamp.

Selain platform pengembangan web berbasis kode, analis data juga menggunakan Tableau dan Power BI untuk tujuan pembuatan dashboard serupa. Ini adalah platform visualisasi data yang menyediakan alat yang kuat tetapi memiliki biaya lisensi. Program-program ini juga memiliki fitur analisis yang terbatas dibandingkan kode murni dan mengharuskan pemodelan serta analisis yang lebih kompleks diselesaikan di tempat lain. Anda dapat mempelajari lebih lanjut tentang Power BI di DataCamp.

Penting untuk mempertimbangkan kebutuhan proyek, preferensi bahasa, dan kebutuhan fitur khusus saat memilih kerangka paling sesuai untuk aplikasi sains data tertentu. Sementara kerangka lain memiliki keunggulannya, perpaduan unik antara kesederhanaan dan fleksibilitas pada Shiny, ditambah integrasinya dengan Python, menjadikannya pilihan menarik bagi siapa pun yang ingin meningkatkan proyek sains data mereka.

Kerangka

Fitur Utama

Dukungan Bahasa

Kurva Pembelajaran

Penggunaan

Shiny

Sederhana dan serbaguna

R, Python

Rendah

Aplikasi dan visualisasi interaktif

Dash

Sintaks Pythonic

Python

Sedang

Pengembangan cepat aplikasi web ringan

Streamlit

Prototipe cepat dengan rendering otomatis

Python

Rendah

Prototipe cepat untuk aplikasi data

Flask

Kerangka web tujuan umum

Python

Sedang hingga Tinggi

Aplikasi web layanan lengkap

Django

Kerangka web Python tingkat tinggi

Python

Sedang hingga Tinggi

Aplikasi dan layanan web yang dapat diskalakan

Tableau/Power BI

Platform visualisasi data

Tidak Berlaku

Rendah

Visualisasi Business Intelligence

Menyiapkan Lingkungan Pengembangan

Salah satu hal hebat tentang Shiny untuk Python adalah adanya editor web tempat Anda dapat membuat aplikasi tanpa mengunduh atau menginstal apa pun. Editor web ini dilengkapi dengan beberapa contoh aplikasi dan fungsionalitas yang dapat Anda gunakan untuk memulai dan mencoba aplikasi Shiny baru Anda.

Namun, akan tiba saatnya dalam pengembangan ketika Anda mungkin ingin menjalankan Shiny di perangkat lokal Anda. Bagian ini akan memandu Anda melalui pemasangan Python, Shiny, dan dependensi masing-masing, serta konfigurasi yang diperlukan agar lingkungan lokal Anda berjalan lancar.

Instalasi Python

Untuk mulai bekerja dengan Shiny secara offline, Anda perlu memasang Python di komputer Anda. Jika Anda belum memasang Python, kunjungi situs resmi Python di python.org dan unduh versi terbaru Python untuk sistem operasi Anda. Jika Anda sebelumnya telah memasang Python, saya sarankan memperbarui ke versi terbaru agar Shiny berjalan dengan benar.

Jalankan installer yang diunduh dan centang kotak "Add Python to PATH" selama proses instalasi. Ini memudahkan menjalankan Python dari baris perintah. Buka command prompt atau terminal dan ketik python --version untuk memverifikasi bahwa Python telah terpasang dengan sukses. Anda seharusnya melihat nomor versi ditampilkan. Anda juga dapat memilih memasang Integrated Development Environment (IDE) untuk kenyamanan.

Instalasi Shiny

Setelah Python siap, Anda dapat memasang Shiny. Selama Anda memiliki versi Python terbaru, Anda dapat membuka command prompt atau terminal dan menggunakan perintah berikut untuk memasang pustaka Shiny untuk Python menggunakan pip:

pip install shiny

Jika Anda menggunakan conda alih-alih pip, gunakan perintah ini:

conda install -c conda-forge shiny

Shiny mungkin memiliki dependensi tambahan berdasarkan konfigurasi sistem Anda. Pastikan dependensi ini terpasang dengan mengikuti petunjuk yang diberikan dalam dokumentasi Shiny.

Konfigurasi lingkungan pengembangan

Now that you have Python and Shiny installed, there are three more topics you need to address.

  1. IDE: Jika Anda menggunakan IDE, seperti VS Code, maka Anda dapat memilih untuk memasang ekstensi agar keluaran Shiny dapat dirender di dalam IDE.
  2. Kendali Versi: Pertimbangkan untuk menggunakan sistem kendali versi seperti Git untuk melacak perubahan pada kode Anda. Inisialisasi repositori Git di folder proyek Anda agar mudah mengelola dan berkolaborasi pada aplikasi Shiny Anda.
  3. Struktur Kode: Atur struktur proyek Anda. Buat folder terpisah untuk aplikasi Shiny, set data, dan sumber daya tambahan lainnya. Ini membantu menjaga basis kode tetap rapi dan terorganisasi, yang merupakan praktik terbaik untuk proyek pengkodean apa pun.

Dengan lingkungan pengembangan yang kini sudah siap dan terkonfigurasi, Anda siap mulai membangun aplikasi web interaktif dengan Shiny untuk Python.

Membuat Aplikasi Shiny Dasar

Memahami struktur aplikasi Shiny

Aplikasi Shiny terdiri atas dua komponen utama: antarmuka pengguna (UI) dan logika server.

UI menentukan tampilan aplikasi dan elemen apa saja yang tersedia untuk interaksi pengguna. Apa pun yang dapat dilihat atau digunakan pengguna adalah bagian dari UI, termasuk elemen seperti slider, tombol, dan plot.

UI dibuat menggunakan fungsi yang diawali dengan "ui.", seperti ui.input_numeric, ui.input_slider, dan ui.output_text. Fungsi-fungsi ini dibungkus dalam fungsi halaman, biasanya ui.page_fluid, yang menjelaskan tata letak dasar halaman.

Logika server menentukan bagaimana aplikasi berperilaku dan merespons masukan pengguna. Terdiri atas fungsi yang mengambil masukan pengguna dari UI, memprosesnya, dan memperbarui elemen keluaran sesuai. Logika server dibuat menggunakan fungsi server dan mencakup ekspresi reaktif untuk menangani masukan dan keluaran.

Setelah UI dan logika server didefinisikan, kita menghubungkannya dalam aplikasi yang lengkap, yang harus diberi nama "app".

image3.png

Memahami model pemrograman reaktif

Pertimbangkan contoh berikut dari dokumentasi Shiny.

Contoh ini mengambil masukan pengguna dari sebuah slider dan menggunakannya untuk melakukan perhitungan yang ditampilkan di kotak teks di bawah slider. Contoh yang sangat sederhana ini berjalan di peramban sederhana pada local host di VS Code.

Seperti yang dapat Anda lihat dari demonstrasi sederhana ini, keajaiban Shiny terletak pada interaktivitasnya. Mesin di balik interaktivitas Shiny berada pada model pemrograman reaktifnya. Di Shiny, kita mendefinisikan ekspresi reaktif untuk membuat rantai ketergantungan antara masukan dan keluaran. Ketika suatu masukan berubah, semua ekspresi reaktif dan keluaran yang bergantung padanya akan diperbarui secara otomatis. Reaktivitas ini adalah inti dari Shiny. Anda dapat membaca detail lebih lanjut tentang reaktivitas Shiny di sini.

Ada beberapa elemen kunci yang membuat reaktivitas ini mungkin.

Pertama, adalah perhitungan reaktif, atau reactive.Calc. Ini adalah perhitungan berdasarkan suatu masukan. Perhitungan ini menyimpan tembolok nilai yang dikembalikannya hingga masukan diubah, saat itu ia akan berjalan ulang dengan masukan baru. Ini memungkinkan aplikasi Anda merespons masukan pengguna secara efisien. Perhitungan reaktif menggunakan dekorator @reactive.Calc, seperti pada contoh di bawah.

@reactive.Calc
def double_number():
	return input.number() * 2

Elemen reaktif lain adalah efek reaktif, atau reactive.Effect. Efek reaktif tidak mengembalikan nilai saat berjalan. Sebagai gantinya, ia memicu sebuah efek, seperti memodifikasi variabel atau menyimpan berkas. Ia juga berjalan ulang saat masukan berubah. Reactive.Effect yang paling umum adalah dekorator @output, yang menambahkan string berisi hasil ke antrean pesan, seperti pada contoh di bawah.

@output
@render.text
def txt():
	return f"The value of x is {input.x()}"

Terkadang, Anda mungkin tidak ingin reaktivitas aplikasi Anda begitu instan. Misalnya, jika Anda memiliki model yang mahal secara komputasi, Anda mungkin ingin menunggu hingga beberapa parameter diperbarui sebelum menjalankan ulang model. Dalam kasus ini, reactive.event() atau dengan reactive.isolate() menawarkan opsi untuk membatasi reaktivitas aplikasi Anda.

Menambahkan Interaktivitas ke Aplikasi Shiny Anda

Saat Anda memerlukan aplikasi yang lebih kompleks

Dengan logika reaktivitas ini, Shiny untuk Python dapat membuat aplikasi yang sesederhana atau sekompleks yang Anda butuhkan. Anda dapat menambahkan tombol radio, kotak centang, slider, kotak masukan teks, grafik, peta, dan banyak lagi! Berikut contoh yang sedikit lebih kompleks dari dokumentasi Shiny.

Dalam contoh ini, kami membuat peta panas dari beberapa data acak. Ada pilihan tombol radio untuk gaya peta panas yang ingin dilihat pengguna, dan fungsi slider mengubah rentang warna pada peta panas. Posit (perusahaan yang membuat Shiny) menyediakan beberapa contoh lagi di situs mereka, termasuk klon Wordle yang seru ini.

Meskipun jenis interaktivitas ini menyenangkan untuk dicoba, ada juga banyak penerapan yang berguna. Anda bisa merancang model yang mengambil faktor lingkungan seperti salinitas dan suhu dan menggunakannya untuk memprediksi ledakan alga. Seorang peneliti di lapangan dapat memasukkan nilai saat ini ke aplikasi Shiny Anda, dan aplikasi tersebut akan memberikan prediksi waktu nyata kepada peneliti.

Anda bisa merancang model yang menunjukkan proyeksi pendapatan tahunan jika kondisi tertentu terpenuhi. Kemudian, manajer dapat menggunakan aplikasi Anda untuk memainkan berbagai skenario dengan memasukkan jumlah penjualan yang berbeda atau mencentang kotak untuk produk yang mereka tawarkan, dan mereka akan melihat hasil prediksi diperbarui seketika.

Kasus penggunaannya banyak di berbagai industri.

Jenis masukan dan keluaran

Shiny menyediakan beragam opsi masukan dan keluaran untuk memenuhi berbagai kebutuhan visualisasi dan interaksi data. Berikut tabel sederhana mengenai masukan dan keluaran umum yang tersedia di Shiny untuk Python.

Masukan

Apa fungsinya?

Action Button Input

Menyediakan tombol untuk dipilih pengguna.

Action Link Input

Memungkinkan pengguna mengeklik sebuah tautan.

Text input

Menyediakan kotak teks untuk satu baris teks sederhana.

Numeric input

Menyediakan kotak masukan numerik dengan panah atas dan bawah.

Slider input

Membuat slider numerik.

Checkbox input

Menghasilkan satu kotak centang untuk aplikasi Benar/Salah.

Switch input

Menghasilkan satu tombol sakelar hidup/mati.

Checkbox group input

Membuat beberapa kotak centang untuk pilihan berganda.

Select input

Menyediakan menu dropdown pilihan.

Radio buttons input

Membuat pilihan tombol radio, memaksa satu pilihan.

Text area input

Menyediakan kotak teks lebih besar dengan jendela yang dapat diubah ukurannya untuk masukan teks yang lebih panjang.

Date input

Membuat kotak masukan tanggal dengan kalender untuk memilih tanggal.

Date range input

Pada dasarnya dua kotak masukan tanggal berpasangan yang memungkinkan rentang dimasukkan.

Password input

Membuat kotak teks yang menyembunyikan teks masukan.

———————————————————————————————————————

Keluaran

Apa fungsinya?

Text output

Menulis teks dalam HTML biasa.

Verbatim text output

Menulis teks dalam blok kode dengan huruf lebar tetap.

UI output

Memungkinkan UI yang lebih dinamis berdasarkan masukan pengguna.

Plot output

Menghasilkan plot menggunakan pustaka Python umum, seperti matplotlib.

Table output

Membuat tabel sederhana dengan judul kolom.

Data Frame / Grid output

Membuat tabel yang dapat disesuaikan dengan filter, garis kisi, dan batas baris.

Untuk daftar lengkap komponen Shiny, lihat halaman ini.

Kustomisasi Antarmuka Pengguna di Shiny untuk Python

Tata letak dan tema

Shiny menawarkan fleksibilitas dalam menyesuaikan antarmuka pengguna melalui berbagai tata letak menggunakan fungsi halaman. Fungsi halaman yang paling umum digunakan adalah page_fluid(), yang menyediakan desain responsif yang menyesuaikan dengan berbagai ukuran layar. Tata letak lebar tetap, cocok untuk aplikasi dengan kebutuhan desain spesifik, dapat dicapai menggunakan fungsi halaman page_fixed().

Shiny memanfaatkan HTML untuk membuat aplikasi berbasis web. Ini berarti Anda dapat menggunakan tema CSS untuk menata aplikasi Anda. Menambahkan gaya CSS kustom memungkinkan Anda menyesuaikan tampilan aplikasi Shiny agar sesuai dengan preferensi estetika atau identitas merek perusahaan Anda.

Penerapan widget dan ekstensi kustom

Shiny mendukung ipywidgets untuk berbagai plot interaktif, peta, visualisasi 3D, dan streaming media. Shiny juga memiliki beberapa fungsionalitas untuk widget Python lain yang dapat disimpan sebagai berkas HTML. Dengan memasukkan widget kustom, Anda dapat menyesuaikan aplikasi Shiny dengan kasus penggunaan spesifik dan menciptakan pengalaman pengguna yang lebih personal.

Mendeploy Aplikasi Shiny untuk Python Anda

Penjelasan berbagai opsi deployment

Setelah Anda membuat aplikasi Shiny yang menarik, Anda mungkin ingin membagikannya ke audiens yang lebih luas, baik untuk portofolio Anda maupun untuk klien, dengan mendeploy-nya ke web. Shiny mendukung berbagai opsi deployment untuk memenuhi kebutuhan yang berbeda.

Deployment Lokal: Anda dapat mendeploy aplikasi Shiny di server lokal, sehingga dapat diakses dalam organisasi Anda atau oleh kelompok pengguna tertentu.

Platform Berbasis Cloud: Platform cloud menawarkan solusi yang dapat diskalakan dan mudah diakses untuk mendeploy aplikasi Shiny. Pilihan populer meliputi:

  • Shinyapps.io: Platform milik Posit yang dirancang khusus untuk hosting aplikasi Shiny.
  • Heroku: Platform cloud yang mendukung deployment aplikasi Shiny.
  • AWS, Azure, dan Google Cloud: Penyedia cloud utama yang memungkinkan Anda mendeploy aplikasi Shiny pada mesin virtual atau container.

ShinyLive: Shiny menawarkan cara baru untuk menjalankan aplikasi Shiny di dalam peramban web tanpa server terpisah yang menjalankan Python. Ini menggabungkan web assembly dan pyodide untuk memungkinkan aplikasi Shiny berjalan tanpa memasang Python atau Shiny di komputer Anda. Platform ini membatasi paket Python yang tersedia dan mungkin tidak seaman platform lain, tetapi merupakan cara yang baik untuk berbagi kode non-sensitif dengan cepat.

Kesimpulan

Shiny untuk Python adalah pemain baru yang menarik di dunia pengembangan aplikasi web. Penggunaannya dapat secara signifikan meningkatkan proyek data Anda tanpa investasi waktu yang besar untuk mempelajari pengembangan web. Jika Anda tertarik mencoba Shiny untuk R, lihat kursus fundamental Shiny dari DataCamp dan kursus tentang membuat dashboard dengan R Shiny ini. Setelah Anda menguasai dasarnya, latih keterampilan baru Anda dengan studi kasus Shiny!

Amberle McKee

Penulis

Amberle McKee

Saya seorang PhD dengan pengalaman 13 tahun bekerja dengan data di lingkungan riset biologi. Saya membuat perangkat lunak dalam beberapa bahasa pemrograman termasuk Python, MATLAB, dan R. Saya bersemangat membagikan kecintaan saya terhadap pembelajaran kepada dunia.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026