Shiny, R’da etkileşimli web uygulamaları yapmanızı sağlayan bir R Studio projesidir. Shiny projesi ile R’da yaptığınız uygulamaları web ortamına aktarabilirsiniz. Web ortamında çalışan etkileşimli bir uygulama, istatistiksel işlemler açısından her defasında kod yazmanıza gerek kalmadan işlem yapmanızı sağlayan uygulamalar yapmanızı sağlar. Bağımsız uygulamaları bir web sayfasında barındırabilir veya bunları R Markdown belgelerine yerleştirebilir veya kontrol panelleri oluşturabilirsiniz. Shiny uygulamalarınızı CSS temaları, htmlwidgets ve JavaScript eylemleriyle de genişletebilirsiniz.

Shiny uygulamalarını manuel olarak Shinyapps.io veya SciComp destekli bir ardışık düzen aracılığıyla dağıtmak için şu anda kullanılabilen iki yaklaşım vardır. Belirli bir proje için hangi yaklaşımın en iyi olduğu, uygulamanın ihtiyaçlarının ne olduğuna bağlıdır:

Yaklaşım 1: Shinyapps.io kullanarak Shiny Apps dağıtımı

  • RStudio ile arayüzde otomatik dağıtıma izin vermeyi  kolaylaştırır.
  • Aylık abonelik için şu anda ayda 25 saatlik etkinlik içeren ücretsiz plan veya parola koruması (her ikisi) ve özel alan / URL’ler (yalnızca profesyonel) içeren ‘standart’ ve ‘profesyonel’ planlar gibi birden çok plan vardır.
  • Ücretsiz plan şu anda hesap başına 5 uygulama ile sınırlıyor!
  • Shinyapps.io’da uygulamaları dağıtmak GitHub kullanımını gerektirmez veya yönetmeniz gereken çok sayıda uygulamanız varsa tek bir GitHub deposuna birden fazla uygulama eklemenize izin verir.
  • Uygulama etkinliğini gösteren bir web analizi özelliği sağlar.

Yaklaşım 2: Fred Hutch Scientific Computing tarafından geliştirilen uygulama dağıtım hattını kullanma

  • SciComp’un ardışık düzeni, uygulamanın kendisi konteyner haline getirilebildiği sürece, diğer dillerde yazılmış uygulamaları barındırma yeteneğine sahiptir.
  • Hutch kampüsü içindeki veri kaynaklarıyla bütünleşir. Örneğin uygulama, tüm internete maruz kalmadan kampüs tabanlı bir veritabanı sistemine (Postgres, mysql, vb.) bağlanabilir.
  • Kullanıcıların kendi Shiny uygulamalarını oluşturmalarına yardımcı olacak bir şablon deposu (https://github.com/FredHutch/shiny-app-template) vardır.
  • Kullanıcılar fredhutch.org etki alanında kendi özel site URL’lerini seçebilirler (örnek: ‘kadirblog.fredhutch.org’).
  • Kullanıcı, uygulamasının yalnızca güvenlik duvarı içinde kampüse mi yoksa tüm internete mi açık olduğunu belirleyebilir. Yetkilendirme özelliği de istek üzerine dahil edilebilir.
  • Bu hizmet, kullanım saatleri veya uygulama sayısı ne olursa olsun kampüs kullanıcıları için tamamen ücretsizdir.

R’da Shiny Paketini Yükleme

Shiny ile bir uygulama geliştirmek için bu paketin yüklü olması gerekmektedir. Shiny paketinin ui.R ve server.R olmak üzere 2 dosyası vardır. Bu dosyalardan ui.R kullanıcı  arayüzünü temsil ederken server.R ise sunucu tarafını temsil etmektedir. Web uygulaması yaparken ui.R ile görsel düzenlemeler yapabiliriz. Uygulamadan hesaplama işlemleri için ise server.R’da düzenleme yapmamız gerekiyor. Shiny, CRAN’da mevcuttur, böylece R konsolunuzdan her zamanki gibi diğer paketleri kurduğunuz gibi kurabilirsiniz. Yüklemek için aşağıdaki kod bloğunu kullanabilirsiniz.

install.packages("shiny")

Paketi yükledikten sonra aşağıdaki kodla projenize dahil edebilirsiniz.

library(shiny)

Shiny uygulamaların iki bileşeni olduğunu söylemiştik. Birincisi kullanıcı arabirimi ve ikincisi ise sunucu komut dosyası. Bu bileşenlerin her ikisinin de kaynak kodunu aşağıda listeledim. Örnek uygulamayla bir şeyler hakkında ilk fikir edinmek için kaynak kodunu gözden geçirmeyi deneyin. Yorumları dikkatlice okuduğunuzdan emin olun. Kullanıcı arayüzü, ui.R adlı bir kaynak dosyada tanımlanmıştır:

ui.R

library(shiny)

# Rastgele dağılımları çizen uygulama için UI tanımlaması 

shinyUI(pageWithSidebar(

  # Uygulama başlığı

  headerPanel("Hello Shiny!"),

  # Gözlem sayısı için kaydırıcı girişi olan kenar çubuğu

  sidebarPanel(

    sliderInput("obs", 

                "Number of observations:", 

                min = 1,

                max = 1000, 

                value = 500)

  ),

  # Oluşturulan dağıtımın bir grafiğini gösterme

  mainPanel(

    plotOutput("distPlot")

  )

))

Uygulamanın sunucu tarafı aşağıda gösterilmiştir. Bir düzeyde, çok basittir – istenen sayıda gözlemle rastgele bir dağılım oluşturulur ve ardından histogram olarak çizilir. Bununla birlikte, grafiği döndüren işlevin bir çağrıya sarıldığını da fark edeceksiniz renderPlot. İşlevin üzerindeki yorum bu konuyu biraz açıklıyor.

server.R

library(shiny)

# Rastgele bir dağıtım oluşturmak ve planlamak için gereken sunucu mantığını tanımlama.

shinyServer(function(input, output) {

  # Dağılımın bir grafiğini oluşturan ifade. 

  #İfade, şunu belirtmek için, renderPlot'a yapılan bir çağrıya sarılır:

  #

  #  1) "reactive" bu nedenle otomatik olarak girdiler değiştiğinde yeniden çalıştırıldı.

  #  2) Çıktı türü bir çizimdir

  #

  output$distPlot <- renderPlot({

    # bir rnorm dağılımı oluşturma ve grafiğini çizme

    dist <- rnorm(input$obs)

    hist(dist)

  })

})

Bu yazım R Shiny paketi hakkında fikir edinebilmeniz için hazırlandı. R Shiny hakkında daha fazla Türkçe kaynak oluşturmak için bloğumun bildirimlerine abone olabilirsiniz. Merak ettiğiniz her şeyi bu yazı altında sorabilirsiniz.

Değerli ziyaretçi R Veri Tipleri, Örneklerle Aritmetik ve Mantıksal İşlemler başlıklı yazımda ilginizi çekebilir. Değerli fikirleriniz için yorum yapmanızı bekliyorum.

Bir Cevap Yaz

Benzer Yazılarım