ایجاد وب اپلیکیشن با Shiny

شاینی (Shiny) یک فریمورک و اینترفیس برای ساخت وب اپلیکیشن در R Lang است. با استفاده از این تکنولوژی می توان بدون داشتن هیچ گونه دانش خاصی در زمینه برنامو نویسی اپلیکیشن و بدون نیاز به دانش خاصی در زبان های برنامه نویسی وب مانند جاوا اسکریپت و HTML وب اپلیکیشن خود را ایجاد کنید.

از سوی دیگر با توجه به اینکه R یک زبان تحلیلی است و شامل کتابخانه های آماری و داده کاوی است می توان خروجی الگوریتم های آماری و داده کاوی را از طریق این تکنولوژی و در قالب وب اپلیکیشن نمایش داد. استفاده از این تکنولوژی این امکان را می دهد که در سمت Server از پایتون نیز استفاده شود.

این تکنولوژی شامل دو قسمت User Interface و Server می شود. در هر اپلیکیشن کاربر(ان) با اپلیکیشن تعامل دارند و یکسری ورودی می دهند و یکسری خروجی می گیرند. برای مثال کاربر یکسری پارامتر و widget می تواند انتخاب کند. برای مثال در اپلیکیشن قرار است به ازای انتخاب هر شرکت، میزان سودآوری سهام آن با شبکه عصبی پیش بینی شود. به این ترتیب در قسمت User Interface کاربر نام شرکت را انتخاب می کند. پارامتر نام شرکت به سمت سرور انتقال داده می شود. در سرور توابع مربوط به آن شرکت Render شده و در نهایت خروجی که همان میزان پیش بینی سود سهام است به کاربر نمایش داده می شود.

به همین ترتیب در قسمت UI پارامترها توسط کاربر انتخاب می شود و به سرور انتقال داده می شود. در ادامه جواب حاصل از اجرای الگوریتم به صورت نمودار نمایش داده می شود.

در Shiny امکان استفاده از تگ های CSS و HTML و JavaScript وجود دارد. همچنین معادل این تگ ها نیز در Shiny تعریف شده است:

یک مثال ساده

در RStudio گزینه Shiny Web Application را انتخاب می کنیم:

وب اپلیکیشن برخلاف ویندوز اپلیکیشن مستقل از سیستم عامل شما است و داخل مرورگر و در هر سیستم عاملی قابلیت اجرا را دارد. چنانچه این کتابخانه نصب نبود ابتدا با دستور زیر آن را نصب کنید:

install.packages(&quotshiny&quot)


در ادامه پنجره زیر ظاهر می شود:

در پنجره بالا این سوال پرسیده می شود که اپلیکیشن به صورت Single File باشد یا اینکه قسمت UI و
Server جدا باشد. توصیه می شود برای سهولت در توسعه برنامه حالت دوم انتخاب شود.

در ادامه دو فایل اسکریپت به نام های ui.R و server.R ایجاد می شود. چنانچه دقت نمایید قطعه کد زیر به عنوان یک مثال ساده وجود دارد:

library(shiny)
# Define UI for application that draws a histogram
shinyUI(fluidPage(
  
  # Application title
  titlePanel(&quotOld Faithful Geyser Data&quot),
  
  # Sidebar with a slider input for number of bins 
  sidebarLayout(
    sidebarPanel(
       sliderInput(&quotbins&quot,
                   &quotNumber of bins:&quot,
                   min = 1,
                   max = 50,
                   value = 30)
    ),
    
    # Show a plot of the generated distribution
    mainPanel(
       plotOutput(&quotdistPlot&quot)
    )
  )
))


با اجرای این قطعه کد می توان خروجی را در آدرس http://127.0.0.1:6103 مشاهده کرد.

خروجی اپلیکیشن
خروجی اپلیکیشن


برای مشاهده مثال های متنوع به اینجا مراجعه کنید.


منبع

فیلم های آموزشی Shiny از آقای خاندانی

https://rstudio.com/resources/cheatsheets/

https://www.linode.com/docs/development/r/how-to-deploy-rshiny-server-on-ubuntu-and-debian/