Ruby একটি গতিশীল ইন্টারপ্রেটেড ভাষা যার মার্জিত সিনট্যাক্স, যা Ruby on Rails ফ্রেমওয়ার্কের জন্য বিখ্যাত। মোবাইল ডেভেলপমেন্টে, Ruby মূলত Fastlane-এর মাধ্যমে ব্যবহার করা হয় — যা iOS এবং Android অ্যাপ্লিকেশনের বিল্ড, টেস্টিং এবং ডিপ্লয়মেন্ট অটোমেশনের মানক টুল। Fastlane-এর অফিসিয়াল ডকুমেন্টেশন অনুযায়ী, টুলটি বিশ্বব্যাপী 100,000-এর বেশি প্রকল্পে ব্যবহৃত হয়।
মূল বিষয়
Ruby একটি গতিশীল ইন্টারপ্রেটেড ওপেন-সোর্স ভাষা যা ইউকিহিরো মাতসুমোতো 1995 সালে তৈরি করেছেন। Ruby-এর মূল নীতি হল "সর্বোত্তম সরলতা" (ন্যূনতম বিস্ময়ের নীতি)। ভাষাটি ব্লক (ক্লোজার), বিশুদ্ধ অবজেক্ট-ওরিয়েন্টেড পদ্ধতি (সবকিছুই একটি অবজেক্ট, সংখ্যাও) এবং শক্তিশালী মেটাপ্রোগ্রামিং সিস্টেমের জন্য পরিচিত।
Ruby YARV (Yet Another Ruby VM) ইন্টারপ্রেটারে সংস্করণ 3.1 থেকে JIT কম্পাইলেশনসহ চলে। বর্তমান সংস্করণ Ruby 3.4 (2025)-এ ডেকোরেটর, উন্নত Prism পার্সার এবং RBS-এর মাধ্যমে পরীক্ষামূলক টাইপ সমর্থন অন্তর্ভুক্ত। RubyGems — প্যাকেজ ম্যানেজার — এ 200,000-এর বেশি জেম রয়েছে।
Ruby on Rails হল Ruby-তে নির্মিত সবচেয়ে বিখ্যাত ওয়েব ফ্রেমওয়ার্ক, কিন্তু মোবাইল ডেভেলপমেন্টে Ruby ভিন্নভাবে ব্যবহৃত হয়। এর প্রধান ক্ষেত্র হল Fastlane: কোড সাইনিং থেকে স্টোর প্রকাশনা পর্যন্ত মোবাইল অ্যাপ লাইফসাইকেলের সব ধাপ অটোমেট করার জন্য Ruby স্ক্রিপ্ট এবং জেমের একটি ইকোসিস্টেম।
Fastlane-এর সাথে কাজ করার জন্য শুধুমাত্র Ruby-এর মৌলিক বোধগম্যতা প্রয়োজন: মেথড, do-end ব্লক, সিম্বল (:symbol) এবং হ্যাশ সিনট্যাক্স { key: value }। Python-এর বিপরীতে, Ruby ইন্ডেন্টেশনের পরিবর্তে ব্লক বন্ধ করার জন্য end ব্যবহার করে। মেথডগুলো বন্ধনী ছাড়া কল করা যায় — এটি Fastlane DSL-এ সক্রিয়ভাবে ব্যবহৃত হয়।
# Fastlane-এ ব্যবহৃত মৌলিক Ruby সিনট্যাক্স
def download_assets(version, platform: "ios")
paths = {
ios: "ios/Assets.car",
android: "android/app/src/main/assets"
}
url = "https://cdn.example.com/assets/#{version}/#{paths[platform.to_sym]}"
puts "Downloading from: #{url}"
unless File.exist?("temp/assets")
Dir.mkdir("temp/assets")
end
result = system("curl -o temp/assets.zip #{url}")
raise "Download failed" unless result
end
download_assets("1.2.3", platform: "android")উদাহরণে, download_assets মেথড একটি version আর্গুমেন্ট এবং একটি ঐচ্ছিক নামকৃত প্যারামিটার platform (ডিফল্ট "ios") নেয়। #{...} দিয়ে স্ট্রিং ইন্টারপোলেশন মানগুলো সরাসরি স্ট্রিংয়ে এম্বেড করে। unless হল if-এর বিপরীত — এটি শর্ত মিথ্যা হলে কোড নির্বাহ করে।
Fastlane একটি ওপেন-সোর্স টুল যা Ruby-তে লেখা। gem install fastlane-এর মাধ্যমে ইনস্টল করা যায়, এটি মোবাইল ডেভেলপারের সবচেয়ে রুটিন কাজ অটোমেট করার জন্য কমান্ডের একটি সেট প্রদান করে: স্ক্রিনশট তৈরি, কোড সাইনিং, TestFlight এবং Google Play Console-এ প্রকাশনা।
Fastlane বিভিন্ন টুল নিয়ে গঠিত: sigh (সার্টিফিকেট ব্যবস্থাপনা), match (টিমে সার্টিফিকেট সিঙ্ক্রোনাইজেশন), gym (iOS বিল্ড), gradle (Android বিল্ড), deliver (iOS প্রকাশনা), supply (Android প্রকাশনা), snapshot (স্ক্রিনশট), scan (পরীক্ষা)। সব টুল একটি একক Fastfile থেকে অ্যাক্সেসযোগ্য।
বড় প্রকল্পে, Fastlane একটি পাইপলাইনে 50+ অ্যাকশন পরিচালনা করে: সংস্করণ বৃদ্ধি, CDN থেকে অ্যাসেট ডাউনলোড, বিল্ড, সাইনিং, App Store Connect-এ আপলোড, Slack বিজ্ঞপ্তি পাঠানো। পুরো পাইপলাইন একটি কমান্ডেই চলে: fastlane release।
Fastfile একটি Ruby-সদৃশ DSL ফাইল যা অ্যাকশনের (লেন) ক্রম বর্ণনা করে। প্রতিটি লেন একটি পৃথক কাজ: beta (পরীক্ষা বিল্ড), release, screenshots। লেন পাস করা প্যারামিটার দিয়ে অন্য লেন কল করতে পারে।
# Fastfile — iOS অ্যাপ বিল্ড পাইপলাইন কনফিগারেশন
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "TestFlight বিল্ড তৈরি এবং ডিপ্লয়"
lane :beta do |options|
increment_build_number(
build_number: options[:build]
)
match(type: :appstore)
gym(
scheme: "MyApp",
export_method: "app-store",
configuration: "Release"
)
upload_to_testflight(
app_identifier: "com.example.myapp"
)
slack(
message: "Build #{options[:build]} TestFlight-এ আপলোড করা হয়েছে"
)
end
endবিটা লেন ক্রমান্বয়ে নির্বাহ করে: বিল্ড নম্বর বৃদ্ধি (increment_build_number), সার্টিফিকেট সিঙ্ক (match), আর্কাইভ বিল্ড (gym), TestFlight-এ আপলোড (upload_to_testflight), এবং Slack বিজ্ঞপ্তি পাঠানো। :build প্যারামিটারটি একটি নামকৃত আর্গুমেন্ট হিসেবে লেনে পাস করা হয়।
Fastlane একটি Fastfile-এ উভয় প্ল্যাটফর্ম সমর্থন করে। Android-এর জন্য, gradle, supply এবং google_play_track_version_codes অ্যাকশনসহ platform :android-এর ভিতরে একটি লেন ব্যবহার করুন।
platform :android do
desc "APK বিল্ড এবং Google Play Internal Testing-এ প্রকাশনা"
lane :beta do
gradle(
task: "assemble",
build_type: "Release",
flavor: "Production"
)
supply(
track: "internal",
apk_paths: ["app/build/outputs/apk/release/app-release.apk"]
)
end
endFastlane-এ 200-এর বেশি বিল্ট-ইন অ্যাকশন অন্তর্ভুক্ত। নিচে মোবাইল ডেভেলপমেন্টের জন্য সবচেয়ে গুরুত্বপূর্ণগুলো বিভাগ অনুযায়ী সাজানো হল।
| অ্যাকশন | প্ল্যাটফর্ম | উদ্দেশ্য |
|---|---|---|
| match | iOS | Git-এর মাধ্যমে সার্টিফিকেট এবং প্রোভিশনিং প্রোফাইল সিঙ্ক্রোনাইজ করুন |
| gym | iOS | .app এবং .ipa আর্কাইভ বিল্ড করুন |
| scan | iOS | সিমুলেটরে UI টেস্ট চালান |
| snapshot | iOS | বিভিন্ন ডিভাইসে স্বয়ংক্রিয় স্ক্রিনশট তৈরি |
| deliver | iOS | বিল্ড, স্ক্রিনশট এবং মেটাডেটা App Store Connect-এ আপলোড করুন |
| pilot | iOS | TestFlight ব্যবস্থাপনা: বিল্ড আপলোড, টেস্টার যোগ করুন |
| gradle | Android | Gradle কাজ চালান: assemble, test, bundle |
| supply | Android | APK/AAB এবং মেটাডেটা Google Play Console-এ আপলোড করুন |
| screengrab | Android | Google Play-এর জন্য স্বয়ংক্রিয় স্ক্রিনশট |
| firebase_app_distribution | উভয় | Firebase App Distribution-এ বিল্ড আপলোড করুন |
match একটি Fastlane জেম যা ডেভেলপারদের মধ্যে iOS সার্টিফিকেট এবং প্রোভিশনিং প্রোফাইল সিঙ্ক্রোনাইজ করে। সব গোপন তথ্য এনক্রিপ্টেড Git রিপোজিটরি বা S3-তে সংরক্ষিত থাকে। Match স্বয়ংক্রিয়ভাবে সার্টিফিকেট তৈরি করে যদি সেগুলো অনুপস্থিত থাকে এবং মেয়াদ শেষে সেগুলো নবায়ন করে।
# নতুন প্রকল্পের জন্য match আরম্ভ করা
$ fastlane match init
# App Store সার্টিফিকেট তৈরি এবং সিঙ্ক করা
$ fastlane match appstore
# টিমের জন্য Development সার্টিফিকেট তৈরি করা
$ fastlane match development
# মেয়াদ শেষে সব সার্টিফিকেট নবায়ন করা
$ fastlane match --forceMatch একটি পাসফ্রেজসহ প্রাইভেট কী সংরক্ষণ করে যা শুধু ডেভেলপাররা জানে। প্রতিটি ডেভেলপার সার্টিফিকেট রিপোজিটরি ক্লোন করে এবং বর্তমান প্রোফাইল ইনস্টল করতে match চালায়। Apple সার্টিফিকেট 1 বছরের জন্য বৈধ; match স্বয়ংক্রিয়ভাবে সেগুলো নবায়ন করে।
Fastlane যেকোনো CI/CD প্ল্যাটফর্মের সাথে একীভূত হয়: GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins এবং Xcode Cloud (xcode-build-এর মাধ্যমে)। Fastlane CI-তে fastlane <lane_name> ব্যবহার করে চলে এবং কোনো ধাপ ব্যর্থ হলে একটি ত্রুটি কোড ফেরত দেয়।
GitHub Actions সেটআপে Ruby, fastlane ইনস্টল করা এবং bundle exec fastlane-এর মাধ্যমে লেন চালানো অন্তর্ভুক্ত। iOS বিল্ডের জন্য macOS রানার প্রয়োজন। Android বিল্ড ubuntu-latest ব্যবহার করতে পারে, যা সস্তা।
# .github/workflows/deploy.yml — CI/CD Fastlane-সহ
name: Deploy Mobile App
on:
push:
branches: [main]
jobs:
ios-deploy:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
- run: bundle install
- run: bundle exec fastlane beta
- env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}ওয়ার্কফ্লো main-এ পুশ করলে চলে। macOS রানার Fastfile থেকে bundle exec fastlane beta নির্বাহ করে। MATCH_PASSWORD সার্টিফিকেট ডিক্রিপশনের জন্য GitHub Secrets-এর মাধ্যমে পাস করা হয়। লেন শেষ হওয়ার পর, একটি Slack অ্যাকশন বিজ্ঞপ্তি পাঠায়।
RubyGems Ruby-র প্যাকেজ ম্যানেজার। Fastlane প্লাগইনের মাধ্যমে সম্প্রসারিত হয় — জেম যা নতুন অ্যাকশন যোগ করে। fastlane-plugin-versioning প্লাগইন সংস্করণ পরিচালনা করে, fastlane-plugin-firebase_app_distribution Firebase-এ বিল্ড আপলোড করে। GitHub-এ 500-এর বেশি Fastlane প্লাগইন রয়েছে।
প্রকল্পের রুটে Gemfile পুনরুৎপাদনযোগ্য বিল্ডের জন্য সব নির্ভরতার সংস্করণ স্থির করে। bundle install Gemfile.lock থেকে জেম ইনস্টল করে। মোবাইল ডেভেলপমেন্টের জন্য অপরিহার্য জেমের মধ্যে: fastlane, cocoapods (iOS নির্ভরতা), xcodeproj (.xcodeproj ম্যানিপুলেশন)।
# মোবাইল প্রকল্পের জন্য Gemfile
source "https://rubygems.org"
gem "fastlane", "~> 2.220"
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)Fastlane একমাত্র অটোমেশন টুল নয়। আসুন একটি মোবাইল টিমের জন্য গুরুত্বপূর্ণ মানদণ্ডের ভিত্তিতে মূল বিকল্পগুলোর সাথে তুলনা করি।
| মানদণ্ড | Fastlane (Ruby) | Bitrise (ওয়েব) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| নমনীয়তা | সর্বোচ্চ (কোড) | মধ্যম (ধাপ) | নিম্ন (সীমিত) | উচ্চ |
| iOS | পূর্ণ সমর্থন | পূর্ণ | পূর্ণ (অন্তর্নির্মিত) | স্ব-হোস্টেড macOS-এর মাধ্যমে |
| Android | পূর্ণ সমর্থন | পূর্ণ | না | পূর্ণ |
| সার্টিফিকেট (match) | অন্তর্নির্মিত | Code Signing-এর মাধ্যমে | স্বয়ংক্রিয় | fastlane-এর মাধ্যমে |
| স্থানীয় নির্বাহ | হ্যাঁ | না (শুধু CI) | না | act-এর মাধ্যমে |
| প্লাগইন | 500+ | 200+ ইন্টিগ্রেশন | কোনোটিই নয় | 20,000+ অ্যাকশন |
জটিল পাইপলাইনের জন্য Fastlane এখনও সবচেয়ে নমনীয় টুল। Bitrise Ruby ডেভেলপার ছাড়া টিমের জন্য সুবিধাজনক। Xcode Cloud সরল iOS প্রকল্পের জন্য কাজ করে। GitHub Actions আদর্শ যদি টিম ইতিমধ্যে GitHub ব্যবহার করে।
সচরাচর জিজ্ঞাসিত প্রশ্ন
Ruby মোবাইল অ্যাপ্লিকেশন লেখার জন্য নয়, বরং Fastlane-এর মাধ্যমে বিল্ড, টেস্টিং এবং ডিপ্লয়মেন্ট প্রক্রিয়া অটোমেট করার জন্য ব্যবহৃত হয়। Fastlane iOS এবং Android ডেভেলপমেন্টে CI/CD-র ডি-ফ্যাক্টো স্ট্যান্ডার্ড।
Fastlane macOS, Linux এবং Windows-এ কাজ করে, কিন্তু iOS বিল্ডের জন্য Xcode এবং macOS প্রয়োজন। Android বিল্ড যেকোনো প্ল্যাটফর্মে চালানো যায়। ডেভেলপাররা লোকালি macOS ব্যবহার করে, এবং CI-তে — iOS-এর জন্য macOS এবং Android-এর জন্য Linux।
Fastlane-এর সাথে কাজ করার জন্য Ruby-র মৌলিক বোধগম্যতা যথেষ্ট। Fastlane Fastfile-এ Ruby-সদৃশ DSL ব্যবহার করে। সাধারণ কাজের জন্য, জেম, do-end ব্লক এবং মৌলিক সিনট্যাক্সের জ্ঞান যথেষ্ট। গভীর Ruby জ্ঞানের প্রয়োজন নেই।
বিকল্পগুলির মধ্যে: Gradle Android-এর জন্য (অন্তর্নির্মিত), Xcode Cloud (Apple), Bitrise (ওয়েব ইন্টারফেস), GitHub Actions (YAML)। অ্যাকশন এবং প্লাগইনের সমৃদ্ধ ইকোসিস্টেমের কারণে Fastlane এখনও সবচেয়ে নমনীয় টুল।
হ্যাঁ, Fastlane বড় কোম্পানিগুলো ব্যবহার করে। সব অ্যাকশন এবং কনফিগারেশন ফাইল রিপোজিটরিতে ভার্সন করা হয়, এবং match রিপোজিটরি বা S3-তে সার্টিফিকেটের নিরাপদ সংরক্ষণ নিশ্চিত করে।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।