সিনিয়র স্টাফ সফ্টওয়্যার ইঞ্জিনিয়ার
ডেভেলপার
রিমোট কম্পোজ, উইজেটের মতো রিমোট সারফেসে এক্সপ্রেসিভ ও ইন্টার্যাক্টিভ UI প্রোজেক্ট করার নতুন উপায় নিয়ে এসেছে। কমপ্যাক্ট বাইনারি পেলোডে লেআউট সিরিয়ালাইজ করার মাধ্যমে, RemoteCompose হোস্ট এক্সিকিউশন থেকে UI ডিকাপল করে উল্লেখযোগ্য সুবিধা প্রদান করে।
মূল সুবিধার মধ্যে রয়েছে এজ ইন্টার্যাক্টিভিটি যা রিমোট ডিভাইসে লোকাল এক্সিকিউশনের মাধ্যমে হাই-পারফর্ম্যান্স রেন্ডারিংয়ের সুবিধা দেয়, ফ্লুইড স্কেলিং যা রিমোট-সাইড কম্পোনেন্ট মূল্যায়নের মাধ্যমে বিভিন্ন ফর্ম ফ্যাক্টর জুড়ে UI-কে রিফ্লো করার সুবিধা দেয় এবং ইউনিফায়েড ডেভেলপার ওয়ার্কফ্লো যা পরিচিত Jetpack Compose API-এর মাধ্যমে প্ল্যাটফর্ম-নির্দিষ্ট রিমোট UI ফ্রেমওয়ার্কের প্রয়োজনীয়তা দূর করে।
এই সেশনে এইসব সুবিধা সম্পর্কে বিস্তারিত আলোচনা করা হবে এবং লাইভ প্রোডাকশনের উদাহরণ দেওয়া হবে, যার মধ্যে আধুনিক Wear OS উইজেট এবং Runkeeper-এ এক ঝলকে দেখা যায় এমন Wear ওয়ার্কআউট ট্র্যাকার অভিজ্ঞতা অন্তর্ভুক্ত।
ট্রান্সস্ক্রিপ্ট করা
হ্যালো।
আমার নাম নিকোলাস রোরার্ড, আমি রিমোট কম্পোজ প্রোজেক্টের টেক লিড।
আমি জন হোফোর্ড।
আমি Remote Compose-এর একজন ডেভেলপার।
আমি জন জোয়েলার, আমি Wear OS-এ ডেভেলপার রিলেশনস হিসেবে কাজ করি।
ঠিক আছে, শুরু করা যাক।
তাই, আমি প্রথমে আপনাকে রিমোট কম্পোজের মাধ্যমে আমরা ঠিক কী ধরনের সমস্যা সমাধান করার চেষ্টা করছি তার একটি দ্রুত ওভারভিউ দেব, ঠিক আছে?
তাই সাধারণত আপনি যখন Android-এ UI সম্পর্কে কথা বলেন বা চিন্তা করেন, তখন আপনি UI-কে আপনার অ্যাপ্লিকেশন এবং আপনার অ্যাপ্লিকেশন প্রসেসের অংশ হিসেবে ভাবেন, তাই না?
এমন অনেক জায়গা আছে যেখানে আপনি নিজের UI নিয়ে যেতে, প্যাকেজ করতে এবং রিমোট সারফেসের মতো অন্য কোথাও পাঠাতে চান।
রিমোট সারফেস বলতে আমরা যা বুঝি, তা হল এই ধরনের উদাহরণ, যেমন ঘড়ির স্টাইল, উইজেট, এমনকি আপনার নিজের অ্যাপ বা অন্য কোনও অ্যাপও হতে পারে, ঠিক আছে?
তাই, এগুলি সবই হল রিমোট সারফেসের উদাহরণ।
তাই, অন্য কোথাও, অন্য কোনও জায়গায়, আপনার অ্যাপে বা সার্ভারে, অন্য কোথাও জানা আছে যে রিমোট সারফেসে কী পাঠাতে হবে।
এবং…
আমার স্পিকারের কী হয়েছে?
এই দুটির মধ্যে মূলত একটি দূরত্ব রয়েছে।
এবং সেই দূরত্ব আক্ষরিক অর্থে একটি প্রকৃত দূরত্ব হতে পারে, একটি নেটওয়ার্ক কানেকশন হতে পারে, তাই না?
এছাড়াও, এটি শুধু একটি প্রসেস বাউন্ডারি হতে পারে।
আপনি একই ডিভাইসে থাকতে পারেন।
তবে, যাই হোক না কেন, এর জন্য খরচ করতে হয়।
আর সেই UI-এর স্ক্রিন কপি নিয়ে পাঠিয়ে দেওয়া হল সবচেয়ে সহজ উপায়, তাই না?
কিন্তু সমস্যা হল, এটি খুব দ্রুত কাজ করে না, তাই তো?
তাই, আমরা রিমোট কম্পোজের মাধ্যমে যা করি তা হল, সেই UI-কে উপস্থাপন করে এমন একটি ডকুমেন্ট পাঠাই।
আর এটা মনে রাখবেন, ছোট হওয়ার অনেক সুবিধা আছে।
এটি গুরুত্বপূর্ণ।
আপনার পাঠানো প্রথম পিক্সেল থেকে আমরা এটি দেখেছি, তবে আপনি সেই সারফেসে যেকোনও ধরনের আপডেট করতে চাইলে এটি আসলে সত্যি, তাই না?
আপনি যাওয়া আসার টিকিট পেয়েছেন।
তাই আপনি সেই রিমোট সারফেসে ইভেন্ট, ক্লিক, টাচের মতো কিছু পান।
নতুন ভার্সন পেতে হলে, যিনি এটি তৈরি করেছেন তার কাছে আপনাকে ফিরে যেতে হবে।
আর সেটা, সেটা ভালো নয়।
তাই, অনেক দিক থেকে, রিমোট কম্পোজের মাধ্যমে আমরা এই সমস্যারই সমাধান করার চেষ্টা করছি।
তাই আমরা ডকুমেন্টটি পাঠানো হচ্ছে তা দেখেছি।
ডকুমেন্টের পাশে, আপনি জানেন যে, দুটি ক্ষেত্র রয়েছে যা খুবই গুরুত্বপূর্ণ।
একটি হল, আপনি কীভাবে সেই ডকুমেন্ট তৈরি করেন।
আর দ্বিতীয়টি হল, আপনি কীভাবে খেলবেন।
আমি উল্লেখ করেছি যে আমরা একটি ডকুমেন্ট তৈরি করছি।
আমরা স্ক্রিনের কপি পাঠাচ্ছি না এবং আমরা কোনও অ্যাপ্লিকেশনও পাঠাচ্ছি না।
তাই, সেই ডকুমেন্ট তৈরি করতে আপনাকে সাহায্য করার জন্য আমাদের কাছে তিনটি আলাদা উপায় আছে।
প্রথমটি হল Compose API, দ্বিতীয়টি হল প্রসিডিউরাল Kotlin API, KMP এবং তৃতীয়টি হল JSON ফর্ম্যাট।
এগুলি সব একই বাইট নির্গত করে।
তাই আমরা সেইসব ডকুমেন্ট তৈরি করার জন্য এক সেট টুল প্রদান করি এবং Compose API-এর মাধ্যমে, আমরা আসলে Android Studio-তে আগে থেকে থাকা টুলিংয়ের সুবিধা নিতে পারি।
যেমন, আপনি যা ডেভেলপ করছেন তা সরাসরি IDE-তে লাইভ দেখার জন্য প্রিভিউ ব্যবহার করতে পারেন।
তবে, আমরা ডকুমেন্ট ইন্সপেক্টরের মতো কিছু নতুন শক্তিশালী টুল নিয়েও কাজ করছি।
আসুন, ডকুমেন্টটি আসলে কী তা এক ঝলকে দেখে নেওয়া যাক।
এটি মূলত একটি কমপ্যাক্ট বাইনারি উপস্থাপনায় এনকোড করা অপারেশনগুলির একটি তালিকা এবং সেই অপারেশনগুলি একটি স্বতন্ত্র ইউজার ইন্টারফেস বর্ণনা করে যা সেই রিমোট সারফেসে পাঠানো যেতে পারে।
তাই, এই ধরনের ডকুমেন্টের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল, এগুলি ছোট হয়।
এবং আমরা যেমন দেখেছি, ছোটই ভাল।
তাহলে সাধারণত আমরা কয়েক কিলোবাইটের কথা বলছি, তাই তো?
কিন্তু আরও জটিল UI-এর ক্ষেত্রে, যেখানে খুব অ্যাডাপ্টিভ লেআউট আছে, সেখানেও আমরা কয়েক ডজন কিলোবাইটের কথাই বলছি, তাই না?
এবং আমরা সেই ডকুমেন্টে সব অ্যাসেট প্যাকেজ করি।
তাই আপনি যদি এটি সম্পর্কে চিন্তা করেন, তাহলে একমাত্র জিনিস যা সত্যিই ডকুমেন্টে জায়গা নিতে পারে তা হল আপনি যদি বিটম্যাপ প্যাকেজিং শুরু করেন।
তাই এটি মনে রাখবেন।
এই কারণেই আমরা স্ক্রিন কপি না পাঠিয়ে ডকুমেন্ট পাঠাচ্ছি।
আমরা যখন ছোট এবং গুরুত্বপূর্ণ হওয়ার কথা বলি, তখন শুধু যোগাযোগের কথাই বলি না।
এটি রিমোট কম্পোজের পিছনে দর্শনের এক ধরনের কেন্দ্রীয় কোণার কেস।
আমরা যেমন দেখেছি, স্ক্রিনে প্রথম পিক্সেল পেতে যে সময় লাগে তার উপর স্পষ্টতই এর প্রভাব রয়েছে, তবে ওহো, দুঃখিত।
এর অর্থ হল, আমরা সারফেসের সমান ক্ষমতা সমান ক্যাপাসিটিতে ব্যবহার করতে পারি, আমরা অন্যথায় যত ডকুমেন্ট ব্যবহার করতে পারি তার চেয়ে বেশি ডকুমেন্ট ব্যবহার করতে পারি, তাই না, তাও আবার দক্ষভাবে।
আর উইজেট সাপোর্ট করার সময় আমরা এই সুবিধাটি কাজে লাগাব।
প্লেয়ারগুলিও সাধারণত খুব ছোট হয় এবং খুব কম ডিপেন্ডেন্সি থাকে।
এবং এগুলি ছোট এবং অল্প ডিপেন্ডেন্সি থাকার অর্থ হল আমরা যেখানে আসলে রিমোট কম্পোজ ডকুমেন্ট চালাতে পারি সেখানে আমরা নাগাল বাড়াতে পারি।
এবং এটি সীমাবদ্ধ প্ল্যাটফর্মের জন্য বিশেষভাবে গুরুত্বপূর্ণ, যেমন আপনি দেখতে পাবেন।
আমি ট্রান্সপোর্ট ও দূরত্ব সম্পর্কে অনেক কথা বলেছি, তবে রিমোট কম্পোজ নিজে থেকে ট্রান্সপোর্ট নিয়ে কাজ করে না।
সেটা আপনার উপর নির্ভর করে।
আমরা যা করি তা হল, আমরা সেই সমস্ত কিছুকে একটি বাইট বাফারে প্যাকেজ করি যা আপনি উপযুক্ত পদ্ধতি ব্যবহার করে রিমোট সারফেসে পাঠাতে পারেন।
উইজেটের জন্য, আমরা আপনাকে সাহায্য করি, আমরা আপনার জন্য একটি কানেক্টর প্রদান করি।
তবে সাধারণত, এটি মনে রাখা একটি দরকারী জিনিস, আপনি পরিবহনের দায়িত্বে আছেন।
এবং কোনও প্লেয়ার সেই ডকুমেন্ট পাওয়ার পরে, আপনি যেভাবে এটি পাঠান না কেন, এটি অপারেশনের তালিকা এক্সট্র্যাক্ট করতে পারে এবং ড্র কমান্ড, লেআউট ট্রি, এক্সপ্রেশনে কনভার্ট করতে পারে এবং এই সব একসাথে একটি সত্যিই সমৃদ্ধ ব্যবহারকারীর অভিজ্ঞতা তৈরি করতে পারে।
তাই, একটি জিনিস মনে রাখতে হবে, আপনি কীভাবে ডকুমেন্ট ট্রান্সফার করতে চান তা সিদ্ধান্ত নেওয়ার ক্ষমতা আপনাকে দেওয়ার অর্থ হল, আপনি অনেক পরিস্থিতিতে টুল হিসেবে রিমোট কম্পোজ আবার ব্যবহার করতে পারবেন, যার মধ্যে কিছু আমরা হয়ত ভাবিওনি, তাই না?
কোনও প্লেয়ার ডকুমেন্ট লোড করলে, এটি নিজে থেকেই রান করে।
আর এটাই হল পুরো আইডিয়া।
আমরা চাই যে ডকুমেন্টটি এমন একটি UI তৈরি করুক যা কিছুটা স্বায়ত্তশাসিত, যা যে এটি তৈরি করেছে তার কাছে ফিরে যেতে হবে না, তাই না?
এবং এই সব কিছু একসাথে, আমরা সাপোর্ট করতে পারি, আপনি জানেন, ছোট বড় করা, স্ক্রল করা, টাচ ইভেন্ট, আপনি জানেন, কম্পোনেন্ট, অ্যানিমেশন, কিছু টাচ ইভেন্ট এবং কিছু টাচ হ্যান্ডলিং দেখানো বা লুকানোর সিদ্ধান্ত নেওয়া, প্লেয়ারে ফিরে না গিয়ে ডকুমেন্টে করা যেতে পারে।
আর কখনও কখনও, আপনি যদি ফিরে যেতে চান, দুঃখিত, ক্রিয়েশনে, আপনি আসলে একটি অ্যাকশনের জন্য অনুরোধ করতে পারেন, "আমাকে একটি নতুন ডকুমেন্ট দিন।"
আমরা রিমোট কম্পোজে AndroidX লাইব্রেরির মাধ্যমে মূলত তিনটি অফিসিয়াল প্লেয়ার প্রদান করি।
একটি হল Compose প্লেয়ার, তাই আপনি এটি আপনার Compose অ্যাপ্লিকেশনে ব্যবহার করতে পারবেন।
আপনি এখনও View ব্যবহার করলে, আমাদের কাছে View প্লেয়ারও আছে।
এছাড়াও, আমাদের কাছে একটি RemoteViews ইমপ্লিমেন্টেশন আছে যা API 36 থেকে Android প্ল্যাটফর্মে শিপিং করা হচ্ছে এবং এটি আপনাকে Remote Compose ব্যবহার করে লঞ্চারে চলা Android উইজেট তৈরি করতে দেয়।
আপনি আগ্রহী হলে আমাদের কাছে কিছু এক্সপেরিমেন্টাল প্লেয়ারও আছে, Skia, TypeScript এবং এমনকি Compose Multiplatform-এ কিছু C++ রান করছে।
তাই, আপনি যে প্রযুক্তি ব্যবহার করছেন সেটিই মূলত বিভিন্ন সারফেস ও প্ল্যাটফর্মে রেন্ডার করার জন্য ব্যবহার করা যেতে পারে।
সুতরাং, সংক্ষেপে বলতে গেলে, আমি যে দূরত্বের কথা বলছি তা এখনও আছে, তবে আমরা এটিকে শুধুমাত্র তখনই গুরুত্বপূর্ণ করার চেষ্টা করছি যখন এটি আসলে গুরুত্বপূর্ণ।
হ্যাঁ।
তাহলে, রিমোট কম্পোজ ডকুমেন্টের মধ্যে আপনি কী কী সুবিধা পাবেন সেই সম্পর্কে একটু আলোচনা করা যাক।
তাই, এর বেসে একটি Canvas আছে এবং এটিতে Android Canvas-এর সব ফিচার আছে।
তবে, এতে কিছু অতিরিক্ত API আছে।
তবে, একটি বিশেষ জিনিস হল, Android Canvas-এ আপনার কাছে থাকা সব ফ্লোট এক্সপ্রেশন দিয়ে পরিবর্তন করা যেতে পারে।
এর ফলে আপনি অ্যানিমেশন, ডায়নামিক স্কেলিং, ফ্লেক্সিবল লেআউট করতে পারবেন, যেমনটি এখানে দেখছেন।
এটি দিয়ে অনেক ধরনের কাজ করা যায়।
এক্সপ্রেশন সম্পর্কে আরও কিছু তথ্য।
আপনার কাছে সাধারণ গণিত, ত্রিকোণমিতি, অ্যারে অ্যাক্সেস, স্প্লাইন ইন্টারপোলেশন থেকে শুরু করে অপারেটরের একটি সমৃদ্ধ সেট রয়েছে।
আর একটি দারুণ জিনিস হল, পরিবর্তন হয় এমন যেকোনও ভ্যালু অ্যানিমেট করা যায়, তাই আপনি যেকোনও ভ্যালুর স্ট্যাটাসে পরিবর্তন অ্যানিমেট করতে পারবেন।
এখানে আপনি যে নির্দিষ্ট ড্রয়িংটি দেখছেন, সেখানে প্রতিটি পেন্ডুলাম আলাদা আলাদা ধরনের অ্যানিমেশন বেছে নেয় এবং সেগুলি সবই Remote Compose-এ উপলভ্য।
তার উপরে, আমাদের কাছে বেসিক কম্পোনেন্ট, কম্পোজ স্টাফ, আপনার জানা স্টাফ আছে।
এটি খুব পরিচিত API, বক্স, সারি, কলাম, এই ধরনের জিনিস তৈরি করে।
তবে, এর উপরে আমাদের কাছে অ্যাডাপ্টিভ কম্পোনেন্ট আছে।
এর একটি ভালো দিক হল, যেহেতু সেই মুহূর্তে আপনার ডকুমেন্টের উপর আপনার কোনও নিয়ন্ত্রণ থাকে না, তাই এটি অবজেক্ট অদৃশ্য হয়ে যাওয়া এবং আবার দেখা যাওয়া, ছোট বড় করার কারণে চলে যাওয়া, ফিরে আসা ইত্যাদি সব কিছু ডকুমেন্টের সোর্সে ফিরে না গিয়েই ম্যানেজ করতে পারে।
এবং তারপরে, আমাদের কাছে কম্পোনেন্ট অ্যানিমেশন আছে।
সব পরিবর্তন অ্যানিমেট করা যেতে পারে, তাই কোনও কিছু চলে গেলে, আপনি এটি অ্যানিমেট করতে পারবেন।
এবং আপনি নিজের কাস্টম অ্যানিমেশন লিখতে পারেন।
এই ক্ষেত্রে, আপনি দেখতে পাচ্ছেন যে তাদের মধ্যে কেউ কেউ শেডার, সব ধরনের জিনিস ব্যবহার করছে।
আমরা আরও একটি কাজ করতে পারি, সেটি হল সেখানে থাকাকালীন ইন্টার্যাক্ট করা, তাই এটি শুধু সুন্দর ছবি নয়।
আপনি বিভিন্ন জিনিসে ক্লিক করতে, টাচ ইভেন্ট, স্ক্রল করা, এই ধরনের কাজ করতে পারবেন।
এছাড়াও, অ্যাক্সেসিবিলিটি গুরুত্বপূর্ণ, তাই আপনার সব অ্যাক্সেসিবিলিটি API সেখানে আছে।
এখানে আপনি যা দেখছেন তার মধ্যে একটি হল আমি একটি সম্পূর্ণ স্টপওয়াচ তৈরি করছি যাতে এক ধরনের আকর্ষণীয় UI রয়েছে এবং এই সব কিছুই প্লেয়ার সাইডে ঘটছে।
এটি ডকুমেন্টের মধ্যেই আছে।
আপনি যা কিছু দেখেন, তার জন্য সার্ভারে ফিরে যেতে হবে না।
এখন, আপনি যদি এটি কোনও অ্যাপ্লিকেশনের মধ্যে তৈরি করেন, তাহলে এই ক্ষেত্রে, নীল অংশগুলি হল একটি অ্যাপ্লিকেশন এবং কালো অংশগুলি হল একটি রিমোট কম্পোজ ডকুমেন্ট।
আপনি আসলে এই দুটির মধ্যে ইন্টার্যাক্ট করতে পারবেন।
এখানে, আমি ভ্যালু বাড়াচ্ছি এবং আপনি দেখছেন যে অ্যাপ্লিকেশন সেগুলি রিসিভ করছে, যাকে আমরা হোস্ট বলি এবং আমি স্লাইডারও সরাতে পারি এবং এটি ডকুমেন্টের মধ্যে ভ্যালু পরিবর্তন করবে।
তাই, আমি দু'দিকেই যেতে পারি।
তাহলে, এই ডকুমেন্টগুলির মধ্যে একটি কীভাবে তৈরি করতে হয় তা জেনে নেওয়া যাক।
আসলে তিনটি API আছে: Compose, Kotlin এবং JSON।
Compose API, আপনি জানেন যে এটি কেমন।
এতে কিছু টুইস্ট আছে এবং আমরা বিস্তারিতভাবে তা দেখব।
Kotlin API-এর পদ্ধতি খুবই সহজ।
আপনি ডকুমেন্টে এক ধরনের কমান্ড দেন, তাই এটি এক ধরনের ওয়ান-টু-ওয়ান।
JSON হল একটি JSON সিনট্যাক্স যা আপনি আমাদের কাছে কনভার্টার আছে যা এটিকে রিমোট কম্পোজে কনভার্ট করবে।
আপনি LLM-এর সাথে কাজ করলে এটিও উপযোগী কারণ তারা ডকুমেন্ট পড়তে ও লিখতে পারে।
তাহলে, আসুন Compose-এ গিয়ে কিছু তৈরি করি।
এই ক্ষেত্রে, আপনি দেখতে পাবেন যে আপনি এটি একটি কম্পোজেবল এবং একটি রিমোট কম্পোজেবল।
আমাদের কাছে ক্যানভা আছে-- ক্যানভাস নয়, তবে রিমোট ক্যানভাস ও রিমোট মডিফায়ার আছে, তবে মডিফায়ারগুলি একই ধরনের, যেগুলি আপনি জানেন ও পছন্দ করেন।
এখন, এর মধ্যে থাকা সব কমান্ড আসলে রিমোট কমান্ড রিমোট কম্পোজ ডকুমেন্ট কমান্ড তৈরি করছে।
এই ক্ষেত্রে, একটি বৃত্ত আঁকা এবং তারপরে কিছু ফ্লোট এবং এক্সপ্রেশন যোগ করা, সেই এক্সপ্রেশনে সময় ব্যবহার করা।
এবং আমি যখন অ্যানিমেশনে গিয়ে এটি চালু করি, তখন লক্ষ্য করুন যে এটি Android Studio থেকে একটি লাইভ প্রিভিউ এবং এটি আসলে আপনার জন্য লাইভ চলবে।
আপনি সেখানে সেই অভিব্যক্তি দেখতে পাবেন।
আসুন, এই বিষয়ে এবং এটি কীভাবে কাজ করে সেই সম্পর্কে একটু জেনে নেওয়া যাক।
বাঁদিকে, আপনি দেখতে পাবেন যে স্প্রেডশিটের মতো দেখতে একটি জিনিস রয়েছে।
এটি ফ্লোটে থাকা ভ্যালুর একটি টেবিল।
এছাড়াও, এতে ডিপেনডেন্সি ট্রি আছে, তাই আপনি জানতে পারবেন যে একটি জিনিস অন্যটির সাথে কোথায় কানেক্ট করা আছে।
যখনই কোনও কিছু পরিবর্তন হয়, তখন তার উপর নির্ভরশীল বিষয়গুলিকে পরিষ্কার করার জন্য এবং অ্যাডজাস্ট করার জন্য ডার্টি হিসেবে চিহ্নিত করা হয়।
এবং এটি রান করার সময়, এর সব ডিপেন্ডেন্সি ক্লিন-আপ করবে এবং শুধুমাত্র পরিবর্তন হওয়া ডিপেন্ডেন্সি মূল্যায়ন করবে।
তাই, এটি খুবই দক্ষ এবং ধরুন কোনও অবজেক্টের সাইজ পরিবর্তন হলে, সেই ডিপেন্ডেন্সি পরিবর্তন হয় এবং এটি প্রতিফলিত করতে হয়।
এটি কম্পিউটিংয়ের খুব, খুব দক্ষ উপায়, কারণ আপনি উপর থেকে নিচে যাচ্ছেন এবং খুব দক্ষতার সাথে যাচ্ছেন।
তাই, আমরা ঘড়ির আইডিয়াটা একটু বড় করে দেখাই যাতে বোঝা যায় যে আমরা বাস্তবসম্মত জিনিস তৈরি করতে পারি।
এই ক্ষেত্রে, আমরা যা করছি তা হল, আমরা প্রান্তে কিছু টিক চিহ্ন যোগ করতে যাচ্ছি এবং আপনি কিছু লুপ দেখতে পাবেন, যাতে আপনি আসলে স্থানীয় এবং ডানদিকে লুপ করতে পারেন।
তারপর, আমরা কিছু ঘণ্টার কাঁটা এবং মিনিটের কাঁটা যোগ করি এবং তারপরে সেকেন্ডে যাই-- সেকেন্ড যোগ করি, তারপরে এটিকে শেষ করার জন্য কয়েকটি ভিন্ন বোতাম দিয়ে এটি শেষ করি এবং আমাদের কাছে একটি লাইভ ঘড়ি রয়েছে।
আপনি জানেন, এটি আসলে সময় দেখাচ্ছে।
অন্য একটি মজার বিষয় হল, আপনি JSON-এ একই জিনিস লিখতে পারেন এবং এটি JSON-এ থাকলে, আপনি সহজেই LLM-এর সাথে ইন্টার্যাক্ট করে বলতে পারেন, "মিনিটের কাঁটাটি সবুজ রঙে পরিবর্তন করো" এবং এটি আপনার কথার অর্থ বুঝে নেবে।
তাই, সেই দিক থেকে এটি খুব ভালো।
ঠিক আছে।
ডানে।
সুতরাং, আশা করি, এটি আপনাকে রিমোট কম্পোজের ক্ষমতা সম্পর্কে ধারণা দেবে।
আমি আপনাকে ডেভেলপারদের জন্য আমাদের কাছে যে সহায়তা আছে সে সম্পর্কে একটু বলি, ঠিক আছে?
আমি উল্লেখ করেছি যে সেগুলি মূলত AndroidX লাইব্রেরি, তাই DAC-তে যা কিছু আছে, আপনি জানেন যে সেগুলি কোথায় পাবেন।
আপনি লেটেস্ট রিলিজ, ডকুমেন্টেশন এবং আরও অনেক কিছু পাবেন।
যথারীতি, আমরা দেখেছি যে জন Android Studio-তে আমরা কী করতে পারি তা দেখিয়েছেন।
আমার মতে, সবচেয়ে ভালো জিনিস হল লাইভ প্রিভিউ, যা ডেভেলপমেন্টের সময়কে সত্যিই কমিয়ে দেয়।
আমরা আরও একটি বিষয় নিয়ে কাজ করছি, সেটি হল ফর্ম্যাটের জন্য এক ধরনের সর্বজনীন ওপেন স্পেসিফিকেশন, তাই তো?
আমরা এমন কিছু করার চেষ্টা করছি না যা সম্পূর্ণ লুকানো, এটি বাইরেই আছে।
এটি কীভাবে কাজ করে, কীভাবে এটি আসলে তৈরি এবং এনকোড করা হয়েছে তা আপনি দেখতে পারবেন।
আপনার অ্যাপ্লিকেশনে আপনি যে সাধারণ জিনিসগুলি ব্যবহার করছেন তার মধ্যে একটি হল অ্যানিমেটেড ভেক্টর ড্রয়েবেল এবং আপনি জানেন যে এটি খুব সুবিধাজনক।
বিটম্যাপ সম্পর্কে আমি যা বলছিলাম তা মনে রাখবেন।
আমরা বিটম্যাপের পরিবর্তে ভেক্টর পেতে বেশি আগ্রহী, তাই তো?
তাই আমরা এমন কিছু টুল তৈরি করছি যা আপনাকে Lottie বা অন্য কোনও ফর্ম্যাটকে RemoteCompose কম্পোনেন্টে কনভার্ট করতে সাহায্য করবে। আপনি এই কম্পোনেন্টটি আপনার RemoteCompose ফাইলে ব্যবহার করতে পারবেন।
আমি আগেই উল্লেখ করেছি যে আমরা অতিরিক্ত টুল নিয়ে কাজ করছি, বিশেষ করে ডকুমেন্টের জন্য লাইভ লাইক ইন্সপেক্টর নিয়ে, কারণ ডেভেলপারদের জন্য তৈরি করার অভিজ্ঞতা এক জিনিস, কিন্তু সেই সৃষ্টির ফলাফল পরীক্ষা করতে পারা অন্য জিনিস।
আর আমাদের ক্ষেত্রে, সেটি হল একটি ডকুমেন্ট।
তাই, আমরা যে টুল নিয়ে কাজ করছি তার একটি প্রিভিউ এখানে ঝটপট দেখে নিন।
এটি হল RemoteCompose ডকুমেন্ট ইন্সপেক্টর এবং নাম থেকেই বোঝা যাচ্ছে যে এটি আপনাকে ডকুমেন্ট ইন্সপেক্ট করতে এবং এতে বিভিন্ন উপযোগী টুল ও ভিজ্যুয়ালাইজেশন প্রয়োগ করতে দেয়।
এর একটি ভালো উদাহরণ হল, আপনি কোনও ডকুমেন্ট খুলে তাতে উল্লেখ করা বিভিন্ন অপারেশন ধাপে ধাপে করে দেখতে পারেন, যাতে সবকিছু কীভাবে একসাথে কাজ করে তা আরও ভালোভাবে বুঝতে পারেন।
তবে আমাদের কাছে অতিরিক্ত টুলিং আছে।
যেমন, আমি এটি খুব পছন্দ করি, যা আপনার ডকুমেন্টকে বিভিন্ন ঘনত্ব ও সাইজে দেখায়, যাতে আপনি খুব দ্রুত দেখতে পারেন যে আপনি যা তৈরি করছেন তা বিভিন্ন সাইজে মানানসই হবে কিনা।
আমরা যে লেটেস্ট জিনিসগুলির উপর কাজ করছি তার মধ্যে একটি হল সম্পূর্ণ লেআউট ইন্সপেক্টর, তাই, Android Studio-তে আপনি যে ধরনের লেআউট ইন্সপেকশন ক্ষমতা ব্যবহার করেন, কিন্তু এখানে, অপারেশন এবং ডকুমেন্টে প্রয়োগ করা হয়, তাই না?
এবং আমরা 3D-এর ক্ষেত্রে আরও এগিয়ে যেতে পারি।
আমি আগেই বলেছি এবং আশা করি এখন পর্যন্ত আমি আপনাকে বোঝাতে পেরেছি যে ছোট একটি ফিচার।
এটি গুরুত্বপূর্ণ।
আমরা সত্যিই ছোট ডকুমেন্ট চাই।
এটি সবাইকে সাহায্য করে।
এটি করুন।
তাহলে, এর জন্য আমরা কী করতে পারি?
UI-এর একটি সাধারণ উদাহরণ নেওয়া যাক, তাই না?
এমন কিছু যেখানে আপনি একগুচ্ছ সারি পেয়েছেন।
আপনি জানেন যে, প্রতিটি সারিতে একটি নাম, একটি ছোট গ্রাফ এবং সম্ভবত একটি বোতাম থাকে।
বেশ সাধারণ।
সেই UI-এর সাইজ আগে থেকেই যথেষ্ট ছোট।
আমরা প্রায় ২৫ কেবি সাইজের কথা বলছি, তবে RemoteCompose-এ বিভিন্ন ফাংশনালিটি আছে যা আপনাকে সাইজ আরও ছোট করতে সাহায্য করবে।
তাহলে, আসুন সেগুলি দেখে নেওয়া যাক।
প্রথমত, আমরা এটি করি এবং এটি ফ্রিতে করা হয়, আমরা আপনার জন্য এটি করব, আপনি যদি একই স্ট্রিং পাঠান, আমরা তা লক্ষ্য করি।
একই স্ট্রিংয়ে পয়েন্ট করে আমরা কিছু বাইট কমাতে পারি।
তবে আমরা আরও অনেক কিছু প্রদান করি, যেমন লুপ।
তাহলে এখানে, আমি আমার ছোট গ্রাফ আঁকার জন্য এই লুপ অপারেশন ব্যবহার করেছি, তাই না?
আর এতে আরও কয়েক বাইট সেভ হয়।
আমাদের ফাংশনও আছে।
সুতরাং, আপনি একটি ফাংশন তৈরি করতে পারেন এবং এখানে, আমি সেই গ্রাফের জন্য আবার এটি করছি এবং তারপরে আমি সেই গ্রাফটিকে একাধিকবার কল করতে পারি।
আর এর ফলে, আমার কিছু বাইটও বেঁচে যাবে।
আর কম্পোনেন্টের জন্য আমাদের কাছে টেমপ্লেট আছে, তাই তো?
ফাংশনের মতো একই ধরনের আইডিয়া, তবে কম্পোনেন্টের জন্য আরও বেশি, তাই তো?
তাই, আমি সঠিক প্যারামিটার সহ সেই টেমপ্লেটটি ব্যবহার করে সেইসব বিভিন্ন কম্পোনেন্ট, বিভিন্ন সারি পরিবর্তন করতে পারি এবং এটি ডকুমেন্টে অনেক জায়গা বাঁচায়।
আর শেষ যে জিনিসটি আমরা আউট অফ দ্য বক্স হিসেবে সাপোর্ট করি তা হল ডকুমেন্ট কম্প্রেস করা।
সাধারণত, আপনি এইভাবে ডকুমেন্টের সাইজের প্রায় অর্ধেক সেভ করতে পারবেন বলে আশা করতে পারেন।
একটি মজার বিষয় হল, ডকুমেন্টের হেডারটি একটু বিশেষ ধরনের।
আমরা এটি কম্প্রেস করি না।
আপনি যদি ডিকম্প্রেস না করেই প্রচুর ডকুমেন্ট খুব দ্রুত ঘেঁটে দেখতে চান, তাহলে এটি খুবই সুবিধাজনক।
সুতরাং, মূল কথা হল, ডকুমেন্টগুলি ছোট, আপনি জানেন, আউট-অফ-দ্য-বক্স, তবে আপনি সেগুলিকে আরও ছোট করতে পারেন।
এবং আপনি দেখতে পাচ্ছেন, এই ছোট উদাহরণটির মাধ্যমে, এটিকে আক্ষরিক অর্থে একটি মাত্রার ক্রম দ্বারা হ্রাস করা কতটা সহজ, কারণ ছোট একটি বৈশিষ্ট্য।
আমি Android প্ল্যাটফর্মে উইজেট এবং বিশেষ করে লঞ্চার উইজেট সম্পর্কে কথা বলেছি।
আমরা কী করছি এবং কী কী আগে থেকেই আছে সেই বিষয়ে একটু আলোচনা করা যাক।
তাই আমরা প্রথমে যা করতে পারি তা হল, আমরা একটি বিদ্যমান উইজেটকে রেপ্লিকেট করতে পারি, যেমন সেই ঘড়ি, সম্পূর্ণরূপে RemoteCompose-এ এবং এটি মূলত একই আচরণ করবে, শুধু RemoteCompose-এ।
কিন্তু আমরা আরও বেশি করতে পারি, তাই না?
তাই আপনি যদি আরও অ্যাডাপ্টিভ UI, উইজেট চান যা ছোট বড় করা যায় এবং সঠিকভাবে অ্যানিমেট করে, আমরা এখন তা করতে পারি, তাই না?
কারণ, রিমোট ভিউয়ের মাধ্যমে আপনি যা করতে পারেন তার বিপরীতে এটি করার জন্য আমরা সঠিক প্রিমিটিভ পেয়েছি।
আমরা আপনাকে আরও অনেক বেশি নমনীয়তা এবং ক্ষমতা প্রদান করি।
আর ক্ষমতার কথা বলতে গেলে, এখানে একটি দ্রুত উদাহরণ দেওয়া হল যা আপনি করতে পারেন, তাই না?
এটি আপনাকে উইজেটে একটি সম্পূর্ণ গেম দেখায়।
এবং আমি সেই উইজেটের আসল সাইজ দেখাব।
আমরা ৪ কেবি সম্পর্কে কথা বলছি।
আমি উল্লেখ করেছি যে ট্রান্সপোর্ট এমন কিছু নয় যা আমরা সরাসরি রিমোট কম্পোজে ডিল করি।
যদিও, বিশেষ করে উইজেটের জন্য, আমরা একটি RemoteCompose Widget কানেক্টর ক্লাস প্রদান করি যা আপনাকে খুব সহজেই একটি ডকুমেন্ট নিতে এবং লঞ্চারে পাঠাতে দেয়।
তবে, আপনার কাছে আগে থেকেই উইজেট থাকলে, আমরা আপনাকে Glance ব্যবহার করা চালিয়ে যেতে উৎসাহিত করি, কারণ Glance-এর লেটেস্ট ভার্সন প্ল্যাটফর্মে রিমোট কম্পোজ এমিট করার জন্য অটোমেটিক ব্যাক-এন্ড প্রদান করে।
আর এখন, Wear OS সম্পর্কে কথা বলা যাক।
ধন্যবাদ, নিকো।
কী খবর, সবাই কেমন আছো?
আমি জন জোয়েলার।
Wear OS সম্পর্কে আপনার সাথে কথা বলতে আমি এখানে এসেছি।
এই প্রেজেন্টেশনের জন্য আমি প্রায় ৩০টি জোক লিখেছিলাম, কিন্তু সেগুলি আমার মাকে শোনাতেই তিনি বললেন যে এর মধ্যে কোনও একটিও বললে আমার চাকরি চলে যাবে।
তাই, আমি সেটি এড়িয়ে গিয়ে শুধু প্রেজেন্টেশনটিই করব।
তাই, রিমোট কম্পোজ এবং Wear OS-এ এর কিছু দুর্দান্ত সুবিধা সম্পর্কে কথা বলা যাক।
প্রথমে, আমরা নতুন Wear OS ওয়ার্কআউট ট্র্যাকার সম্পর্কে কথা বলব।
এখন, আমরা এটি তৈরি করতে রিমোট কম্পোজ ব্যবহার করেছি এবং আমরা জানি যে Wear-এর জন্য একটি সম্পূর্ণ ফিচারযুক্ত, উচ্চ-মানের ওয়ার্কআউট ট্র্যাকার তৈরি করা সত্যিই কঠিন।
এতে কিছুটা সময় লাগে।
তাই, আমরা আপনার জন্য এটি করেছি এবং আমরা কিছু সত্যিই চমৎকার নতুন আধুনিক ওয়ার্কআউট ফিচার অন্তর্ভুক্ত করেছি, যেমন লাইভ মেট্রিক্স এবং মিডিয়া নিয়ন্ত্রণ করতে পারা।
এবং রিমোট কম্পোজের জন্য ধন্যবাদ, আমরা সমস্ত এক্সিকিউশন থেকে UI ডিকাপল করতে পেরেছি, তাই এটি খুব দক্ষতার সাথে চলতে পারে এবং ব্যবহারকারীদের ব্যাটারি ড্রেন না করতে সাহায্য করে।
রিমোট কম্পোজ ছাড়া, আমরা যদি সাধারণ কম্পোজের মাধ্যমে এটি করতাম, তাহলে আমরা প্রতি সেকেন্ডে স্ক্রিনে লাইভ মেট্রিক রিফ্রেশ করতে পারতাম না।
এতে আসলে এক মিনিট সময় লাগবে, কারণ শুধু একটি মেট্রিক দেখানোর জন্য আপনাকে অ্যাম্বিয়েন্ট মোডে স্মার্টওয়াচ চালু করতে হবে।
তাই, এটি একটি দারুণ সুবিধা।
আর, বিশ্বাস করুন বা না করুন, এটি আসলে একটি GIF।
এটি কোনও ছবি নয়।
আমি জানি যে এটি এখনও সরেনি এবং পরবর্তী মেট্রিক আপডেট পেলে এটি প্রায় ৪৫ সেকেন্ডের মধ্যে সরে যাবে।
তবে, রিমোট কম্পোজের সুবিধা হল এটি।
আর কী অনুমান করুন?
এটি আসলে উপলভ্য, Wear Workout Tracker উপলভ্য।
ASICS Runkeeper অ্যাপ এটির সাহায্যে তাদের নতুন অ্যাপ্লিকেশন তৈরি করেছে এবং আপনি এই লিঙ্কে গিয়ে তাদের ওপেন বিটা টেস্টে যোগ দিয়ে আজই এটি ব্যবহার করে দেখতে পারেন।
এরপরে, আমাদের কাছে Wear OS উইজেট আছে।
রিমোট কম্পোজ কীভাবে কাজ করে, এটি তার আরেকটি দারুণ উদাহরণ।
এগুলি পুরনো ProtoLayout টাইলস লাইব্রেরির পরিবর্তে ব্যবহার করা হয়, তাই আপনাকে আর বিভিন্ন ডিভাইসের জন্য দুই ধরনের UI ফ্রেমওয়ার্ক ব্যবহার করতে হবে না।
আপনি রিমোট কম্পোজের মাধ্যমে এই সব করতে পারবেন।
এবং যেহেতু সেগুলি Jetpack Glance-এর অংশ, তাই Wear OS-এর উইজেটগুলি উইজেটের ইউনিফায়েড Android ইকোসিস্টেমের অংশ।
ঠিক আছে, এবং এই ইকোসিস্টেমের অংশ হিসেবে, RemoteCompose উইজেটের UI যেকোনও নির্দিষ্ট অ্যাপ প্রসেস থেকে সম্পূর্ণভাবে ডিকাপল করা হয়, যাতে সেগুলি নিরাপদে সিরিয়ালাইজ করা যায় এবং Android স্ট্যাকের বাকি অংশের মতো একই প্রযুক্তি ব্যবহার করে Wear OS ডিভাইসে রেন্ডার করা যায়।
এছাড়াও, Remote Compose উইজেটে আধুনিক গ্রাফিক্স ও রেসপন্সিভ লেআউট নিয়ে আসে এবং এটি করার সময় ব্যাটারির চার্জও খুব কম খরচ হয়।
এছাড়াও, Wear OS 7-এর সাথে, হার্ডওয়্যার প্রস্তুতকারকরা আগে থেকেই ভার্টিক্যাল স্ক্রলিং ট্রে গ্রহণ করছে।
এটি হল Samsung Galaxy Watch এবং আপনি দেখতে পাচ্ছেন যে কীভাবে উইজেটগুলি এখানে ট্রেতে উল্লম্বভাবে স্ক্রোল করছে।
আপনার টাইলকে উইজেটে মাইগ্রেট করার ব্যাপারে আরও জানতে চাইলে, এই লিঙ্কটি চেক করে দেখতে পারেন।
পুরনো ডিভাইসে, যেখানে টাইল দেখানোর জন্য অনুভূমিক ক্যারোজেল ব্যবহার করা হয়, সেখানে উইজেট অটোমেটিক ফুল-স্ক্রিন টাইল হিসেবে দেখানো হবে।
এছাড়াও, এগুলি Wear OS 4-এর সাথে সম্পূর্ণ ব্যাকওয়ার্ড কম্প্যাটিবল।
এছাড়াও, এই লিঙ্ক থেকে আপনি ব্যাকওয়ার্ড কম্প্যাটিবিলিটি সম্পর্কে আরও জানতে পারবেন।
এছাড়াও, আমাদের আরও কিছু পার্টনার আছেন যারা আগে থেকেই উইজেট ব্যবহার করছেন।
আপনি একবার দেখে নিতে পারেন।
আমার জন্য এই পর্যন্তই।
হ্যাঁ, এবার তোমার পালা নিকো।
ধন্যবাদ।
ঠিক আছে।
তাহলে, আমাদের আলোচনা এখানেই শেষ।
আমরা রিমোট কম্পোজের কিছু ক্ষমতা পর্যালোচনা করেছি।
আরও কিছু আছে যেগুলি সম্পর্কে আমরা কথা বলিনি।
এটি একটি খুব সমৃদ্ধ ফ্রেমওয়ার্ক।
আমি আপনাকে উপলভ্য ডকুমেন্টেশন এবং আসন্ন ডকুমেন্টেশন দেখার জন্য উৎসাহিত করছি।
আমি বলব যে আমাদের লক্ষ্য হল এমন একটি ভবিষ্যৎ তৈরি করা যেখানে আপনি সত্যিই সেই সমস্ত বিভিন্ন রিমোট সারফেসের জন্য রিমোট কম্পোজ ব্যবহার করতে পারবেন।
And you saw some of them, right, like the wear, widgets.
তবে আরও অনেক কিছু আসতে চলেছে।
আমি আরও বলব যে এটি একটি চলমান প্রোজেক্ট।
এটি ডেভেলপ করা হচ্ছে।
আমরা, আপনি জানেন, আমরা সেইসব কিছু ওপেন সোর্সে ডেভেলপ করি।
আমরা কী করছি তা আপনি দেখতে পাবেন।
তবে, আমি বলব, আমরা সত্যিই ডেভেলপারদের কাছ থেকে শুনতে চাই, তাই না?
আমরা আপনার জন্য সেটি তৈরি করছি।
তাই, আপনার কাছে অতিরিক্ত আইডিয়া থাকলে, আপনি কিছু মিস করলে, আমাদের সাথে কথা বলুন।
আপনার থেকে এই বিষয়ে জানতে পারলে আমরা খুশি হব।
আমি এই কথা বলে শেষ করতে চাই যে, আপনি যে পুরো প্রেজেন্টেশনটি দেখলেন, সেটি অবশ্যই Remote Compose-এ তৈরি করা হয়েছে, যার মধ্যে অ্যানিমেশনও অন্তর্ভুক্ত।