আপনার অ্যাপ কানেক্ট করুন এবং প্রোটোটাইপিং শুরু করুন


Firebase Local Emulator Suite-এর সাথে শুরু করার আগে, নিশ্চিত করুন যে আপনি একটি Firebase প্রোজেক্ট তৈরি করেছেন, আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট সেট-আপ করেছেন এবং আপনার প্ল্যাটফর্মের জন্য Firebase-এর সাথে শুরু করুন বিষয়ের উপর ভিত্তি করে Firebase SDK বেছে নিয়েছেন এবং ইনস্টল করেছেন: Apple, Android বা ওয়েব।

প্রোটোটাইপ ও পরীক্ষা

Local Emulator Suite-এ একাধিক প্রোডাক্ট এমুলেটর আছে, যেমনটি Firebase Local Emulator Suite-এর ভূমিকা-তে বর্ণনা করা হয়েছে। আপনি প্রোডাকশনে কোন Firebase প্রোডাক্ট ব্যবহার করছেন তার উপর নির্ভর করে, আপনি স্বতন্ত্র এমুলেটর এবং এমুলেটরের সংমিশ্রণ সহ প্রোটোটাইপ এবং পরীক্ষা করতে পারেন।

Firebase ডেটাবেস এবং ফাংশন এমুলেটরের মধ্যে ইন্টার‍্যাকশন
ডেটাবেস এবং Cloud Functions এমুলেটর সম্পূর্ণ Local Emulator Suite-এর অংশ হিসেবে।

এই বিষয়ের জন্য, Local Emulator Suite ওয়ার্কফ্লোর সাথে পরিচয় করিয়ে দিতে, ধরে নেওয়া যাক আপনি এমন একটি অ্যাপে কাজ করছেন যা প্রোডাক্টের সাধারণ কম্বিনেশন ব্যবহার করে: একটি Firebase ডেটাবেস এবং সেই ডেটাবেসে অপারেশনের মাধ্যমে ট্রিগার করা ক্লাউড ফাংশন।

আপনার Firebase প্রোজেক্ট স্থানীয়ভাবে শুরু করার পরে, Local Emulator Suite ব্যবহার করে ডেভেলপমেন্ট সাইকেলে সাধারণত তিনটি ধাপ থাকবে:

  1. এমুলেটর ও Emulator Suite UI-এর সাহায্যে ইন্টার‍্যাক্টিভভাবে প্রোটোটাইপ ফিচার।

  2. আপনি ডেটাবেস এমুলেটর বা Cloud Functions এমুলেটর ব্যবহার করলে, এমুলেটরের সাথে আপনার অ্যাপ কানেক্ট করতে এককালীন ধাপটি সম্পূর্ণ করুন।

  3. এমুলেটর ও কাস্টম স্ক্রিপ্টের মাধ্যমে আপনার টেস্ট অটোমেট করুন।

স্থানীয়ভাবে Firebase প্রোজেক্ট শুরু করা

আপনি CLI ইনস্টল করেছেন অথবা লেটেস্ট ভার্সনে আপডেট করেছেন কিনা তা নিশ্চিত করুন।

curl -sL firebase.tools | bash

আপনি আগে থেকে এটি না করে থাকলে, Firebase প্রোজেক্ট হিসেবে বর্তমান ওয়ার্কিং ডিরেক্টরি ইনিশিয়ালাইজ করুন, অনস্ক্রিন প্রম্পট অনুসরণ করে নির্দিষ্ট করুন যে আপনি Cloud Functions এবং Cloud Firestore অথবা Realtime Database ব্যবহার করছেন:

firebase init

আপনার প্রোজেক্ট ডিরেক্টরিতে এখন Firebase কনফিগারেশন ফাইল, ডেটাবেসের জন্য একটি Firebase Security Rules ডেফিনিশন ফাইল, ক্লাউড ফাংশন কোড সহ একটি functions ডিরেক্টরি এবং অন্যান্য সহায়ক ফাইল থাকবে।

ইন্টার‍্যাক্টিভভাবে প্রোটোটাইপ করো

Local Emulator Suite-এর ডিজাইন এমনভাবে করা হয়েছে যাতে আপনি নতুন ফিচারের প্রোটোটাইপ দ্রুত তৈরি করতে পারেন, এবং Suite-এর বিল্ট-ইন ইউজার ইন্টারফেস হল এর সবচেয়ে উপযোগী প্রোটোটাইপিং টুলগুলির মধ্যে একটি। এটি অনেকটা লোকাল লেভেলে Firebase কনসোল চালানোর মতো।

Emulator Suite UI ব্যবহার করে, আপনি ডেটাবেসের ডিজাইন ইটারেট করতে, ক্লাউড ফাংশন সহ বিভিন্ন ডেটাফ্লো ব্যবহার করে দেখতে, নিরাপত্তা নিয়মের পরিবর্তন মূল্যায়ন করতে, আপনার ব্যাক-এন্ড পরিষেবাগুলি কেমন পারফর্ম করছে তা কনফার্ম করতে লগ চেক করতে এবং আরও অনেক কিছু করতে পারবেন। তারপর, আপনি যদি আবার শুরু করতে চান, তাহলে আপনার ডেটাবেস মুছে দিন এবং নতুন ডিজাইনের আইডিয়া নিয়ে নতুন করে শুরু করুন।

আপনি Local Emulator Suite-এর সাথে শুরু করলে এগুলি উপলভ্য হবে:

firebase emulators:start

আমাদের কাল্পনিক অ্যাপের প্রোটোটাইপ তৈরি করতে, আসুন একটি বেসিক ক্লাউড ফাংশন সেট-আপ ও টেস্ট করি যাতে ডেটাবেসে টেক্সট এন্ট্রি পরিবর্তন করা যায় এবং Emulator Suite UI-এ সেই ডেটাবেস তৈরি ও পপুলেট করা যায় যাতে এটি ট্রিগার করা যায়।

  1. আপনার প্রোজেক্ট ডিরেক্টরিতে functions/index.js ফাইল এডিট করে ডেটাবেস রাইট দ্বারা ট্রিগার করা একটি ক্লাউড ফাংশন তৈরি করুন। আগে থেকে থাকা ফাইলের কন্টেন্ট নিম্নলিখিত স্নিপেট দিয়ে পরিবর্তন করুন। এই ফাংশন messages সংগ্রহে ডকুমেন্টের পরিবর্তন লক্ষ্য করে, ডকুমেন্টের original ফিল্ডের কন্টেন্ট বড় হাতের অক্ষরে পরিবর্তন করে এবং সেই ডকুমেন্টের uppercase ফিল্ডে ফলাফল সেভ করে।
  2.   const functions = require('firebase-functions/v1');
    
      exports.makeUppercase = functions.firestore.document('/messages/{documentId}')
          .onCreate((snap, context) => {
            const original = snap.data().original;
            console.log('Uppercasing', context.params.documentId, original);
            const uppercase = original.toUpperCase();
            return snap.ref.set({uppercase}, {merge: true});
          });
      
  3. firebase emulators:start-এর সাথে Local Emulator Suite লঞ্চ করুন। Cloud Functions এবং ডেটাবেস এমুলেটর চালু হয়, ইন্টারঅপারেট করার জন্য অটোমেটিক কনফিগার করা হয়।
  4. আপনার ব্রাউজারে http://localhost:4000-এ UI দেখুন। UI-এর জন্য পোর্ট 4000 ডিফল্ট হিসেবে সেট করা থাকে, তবে Firebase CLI-এর মাধ্যমে টার্মিনাল মেসেজ আউটপুট চেক করুন। উপলভ্য এমুলেটরের স্ট্যাটাস নোট করুন। আমাদের ক্ষেত্রে, Cloud Functions এবং Cloud Firestore এমুলেটর রান করবে।
    আমার ছবি
  5. UI-তে, Firestore > ডেটা ট্যাবে, কালেকশন শুরু করুন বিকল্পে ক্লিক করুন এবং messages কালেকশনে নতুন ডকুমেন্ট তৈরি করতে প্রম্পট অনুসরণ করুন, এতে ফিল্ডনেম original এবং ভ্যালু test থাকবে। এটি আমাদের ক্লাউড ফাংশন ট্রিগার করে। লক্ষ্য করুন যে শীঘ্রই একটি নতুন uppercase ফিল্ড দেখা যাবে, যা "TEST" স্ট্রিং দিয়ে পূরণ করা থাকবে।
    আমার ছবি আমার ছবি
  6. Firestore > অনুরোধ ট্যাবে, আপনার এমুলেট করা ডেটাবেসে করা অনুরোধগুলি পরীক্ষা করুন, যার মধ্যে সেই অনুরোধগুলি পূরণ করার অংশ হিসেবে করা সমস্ত Firebase Security Rules মূল্যায়ন অন্তর্ভুক্ত।
  7. আপনার ফাংশন ডেটাবেস আপডেট করার সময় কোনও সমস্যা হয়েছে কিনা তা কনফার্ম করতে লগ ট্যাব চেক করুন।

আপনি যে ডেটা ফ্লো খুঁজছেন তা না পাওয়া পর্যন্ত, ইন-অ্যাপ ডেটাবেস অ্যাক্সেস কোড স্পর্শ না করে, টেস্ট স্যুট রিকম্পাইল এবং পুনরায় রান না করে, আপনার ক্লাউড ফাংশন কোড এবং ইন্টারেক্টিভ ডেটাবেস এডিটগুলির মধ্যে সহজেই পুনরাবৃত্তি করতে পারেন।

এমুলেটরের সাথে আপনার অ্যাপ কানেক্ট করুন

ইন্টার‍্যাক্টিভ প্রোটোটাইপিংয়ের মাধ্যমে আপনি যখন ভাল অগ্রগতি করবেন এবং কোনও ডিজাইন চূড়ান্ত করবেন, তখন উপযুক্ত SDK ব্যবহার করে আপনার অ্যাপে ডেটাবেস অ্যাক্সেস কোড যোগ করার জন্য আপনি প্রস্তুত হবেন। আপনার অ্যাপের আচরণ সঠিক কিনা তা কনফার্ম করতে, আপনি ডেটাবেস ট্যাব এবং ফাংশনের জন্য, Emulator Suite UI-এ লগ ট্যাব ব্যবহার করা চালিয়ে যাবেন।

মনে রাখবেন যে Local Emulator Suite হল একটি লোকাল ডেভেলপমেন্ট টুল। আপনার প্রোডাকশন ডেটাবেসে লিখলে, আপনি স্থানীয়ভাবে যে ফাংশনের প্রোটোটাইপ তৈরি করছেন তা ট্রিগার হবে না।

আপনার অ্যাপ যাতে ডেটাবেসে লিখতে পারে সেই জন্য আপনাকে Cloud Firestore এমুলেটরে আপনার টেস্ট ক্লাস বা অ্যাপ-মধ্যস্থ কনফিগারেশন পয়েন্ট করতে হবে।

Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val firestore = Firebase.firestore
firestore.useEmulator("10.0.2.2", 8080)

firestore.firestoreSettings = firestoreSettings {
    isPersistenceEnabled = false
}
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
firestore.useEmulator("10.0.2.2", 8080);

FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
        .setPersistenceEnabled(false)
        .build();
firestore.setFirestoreSettings(settings);
Swift
let settings = Firestore.firestore().settings
settings.host = "127.0.0.1:8080"
settings.cacheSettings = MemoryCacheSettings()
settings.isSSLEnabled = false
Firestore.firestore().settings = settings
Unity
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
// Connects to the Firestore Emulator running on port 8080
db.Settings.Host = "127.0.0.1:8080";
db.Settings.SslEnabled = false;

Web

import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
connectFirestoreEmulator(db, '127.0.0.1', 8080);

Web

// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("127.0.0.1", 8080);
}

কাস্টম স্ক্রিপ্টের মাধ্যমে আপনার টেস্ট অটোমেট করুন

এখন সামগ্রিক ওয়ার্কফ্লোর শেষ ধাপের জন্য। আপনার ফিচারটি ইন-অ্যাপে প্রোটোটাইপ করা হয়ে গেলে এবং আপনার সব প্ল্যাটফর্মে এটি আশাব্যঞ্জক দেখালে, আপনি চূড়ান্ত প্রয়োগ এবং পরীক্ষার দিকে যেতে পারেন। ইউনিট টেস্টিং ও CI ওয়ার্কফ্লোর জন্য, আপনি এমুলেটর চালু করতে, স্ক্রিপ্টেড টেস্ট রান করতে এবং exec কমান্ডের মাধ্যমে একক কলে এমুলেটর বন্ধ করতে পারবেন:

firebase emulators:exec "./testdir/test.sh"

আরও গভীরভাবে স্বতন্ত্র এমুলেটর এক্সপ্লোর করুন

এখন আপনি ক্লায়েন্ট-সাইড ওয়ার্কফ্লো কেমন দেখতে হয় তা জেনে গেছেন, তাই আপনি Suite-এ থাকা স্বতন্ত্র এমুলেটর সম্পর্কে বিস্তারিত তথ্য জানা চালিয়ে যেতে পারেন, যার মধ্যে সার্ভার-সাইড অ্যাপ ডেভেলপমেন্টের জন্য সেগুলি কীভাবে ব্যবহার করতে হয় তাও অন্তর্ভুক্ত:

এরপর কী করতে হবে?

উপরে লিঙ্ক করা নির্দিষ্ট এমুলেটর সম্পর্কিত বিষয়গুলি পড়তে ভুলবেন না। তারপর: