API আসলে কি? বিস্তারিত দেখে নিন [উদাহরণ সহ]

আসসালামু আলাইকুম, আশা করি সকলে ভালো আছেন। আজকে আমি আলোচনা করব API এর উপর এবং এর ব্যবহার এবং কিছু উদাহরণ দিয়ে বুঝানোর চেষ্টা করব।

একনজরে টপিক সমূহঃ
API কি ?
API এর কয়েকটি উদাহরণ
API এর ব্যবহার

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

এপিআই কি?
এপিআই হল Application Program Interface (API) যার মাধ্যমে একটি প্রোগ্রাম আরেকটি প্রোগ্রামের সাথে  কিছু কথা (ডাটা) শেয়ার করতে পারে।

An application program interface (API) is a set of routines, protocols, and tools for building software applications. Basically, an API specifies how software components should interact. Additionally, APIs are used when programming graphical user interface (GUI) components.

তো কেন দরকার এত কথা, প্রোগ্রামদের মধ্যে এত প্রেম কেন দরকার? আমার প্রোগ্রামের ডাটা বা রিসোর্স আমি অন্য প্রোগ্রামের সাথে কেন শেয়ার করব? উদাহরনের মাধ্যমে বোঝার চেষ্টা করে দেখি বুঝতে পারি কি নাঃ
MS Word to API to Printer

এপিআই উদাহরন ১ :
ধরুন Canon কোম্পানি প্রিন্ট করার জন্য প্রিন্টার বানিয়েছে কিন্তু তারা তো মাইক্রোসফট ওয়ার্ড বা টেক্স এডিটর বানায়নি। তাহলে মাইক্রোসফট ওয়ার্ড কিভাবে ঐ প্রিন্টারে প্রিন্ট দিবে?

নিশ্চই Microsoft আর Canon এর মাঝে কোন গোপন ব্যাপার-স্যাপার আছে? ধরে নিলাম আছে, তাহলে অপেন অফিস বা অন্যন্য এডিটর, গুগল ক্রোম বা অন্যান্য প্রোগ্রাম গুলো কি করবে? কিংবা আপনি যদি কোন এডিটর বানান তবে আপনি কি করবেন? তাছাড়া Canon ছাড়াও আরো অনেক প্রিন্টার আছে, আর হাজার হাজার এ্যাপ্লিকেশন আছে যেগুলো থেকে প্রিন্ট করা যায়।

তাহলে এসব প্রোগ্রাম কিভাবে প্রিন্টারের সাথে তথ্য বা ফাংশন আদান প্রদান করে? কিভাবে একটি প্রোগ্রাম প্রিন্টারকে বলবে তার ডকুমেন্টটি প্রিন্ট করে দিতে?
এ.পি.আই আসলে নতুন কিছু না। Canon বা অন্য যে কোন প্রিন্টারের সাথে কোন এ্যাপ্লিকেশন সফ্টওয়ারের কোন সম্পর্ক নেই। দুটো প্রোগ্রামই একটি ইন্টারফেস বা মাধ্যম ব্যবহার করে যোগাযোগ করে থাকে। এই মাধ্যমকেই এপিআই বলে। মাইক্রোসফ্ট ওয়ার্ডে প্রিন্ট কমান্ড দিলে সে এপিআই এর কাছে প্রিন্টার স্ট্যাটাস রিকোয়েস্ট করে, এবং সব ঠিক থাকলে এপিআইকে ডকুমেন্ট প্রিন্ট করতে দেয়। এপিআই প্রিন্টার কে ঐ ডকুমেন্ট টি প্রিন্ট করতে বলে। প্রিন্টারের আসলে জানার দরকার সেই কোন প্রোগ্রাম প্রিন্ট করতে বলছে , তার কাছে এটা ডকুমেন্ট আসছে সে এটা রিড করে প্রিন্ট করবে।

এপিআই উদাহরন ২ঃ
এবার একটি ছোট প্রোগ্রাম এর উদাহারন দেখা যাক !

# Open a file file = open (‘api.txt’ , ‘r’ ) # Read line line = file .readline() print line

উপরের প্রোগামটি একটি টেক্স ফাইলের [api.txt] প্রথম লাইন প্রিন্ট করবে। কিন্তু সেটা কিভাবে? আমি কি সরাসরি হার্ডডিস্ক থেকে বাইনারী ডাটা রিড করছি নাকি আমি কারো ভায়া হয়ে ডাটা পাচ্ছি?

অথবা আপনি একটি ওয়ার্ড ফাইল ওপেন করলেন, মাইক্রোসফ্ট ওয়ার্ড প্রো.

প্রত্যেক অপারেটিং সিস্টেমের ই ফাইল হ্যান্ডেল করার জন্য ফাইল সিস্টেস এপিআই [File System API] থাকে। উইন্ডোজে NTFS এবং FAT ফাইল সিস্টেম অপারেশন হ্যান্ডেল করার জন্য এপিআই প্রদান করে থাকে , তেমনি লিনাক্সে ex2,ex3 সহ বিভিন্ন ফাইল সিস্টেম এপিআই থাকতে পারে। আমাদের প্রোগ্রামটি প্রথমে অপারেটিং সিস্টেমের ফাইল সিস্টেম এপিআই’র কাছে api.txt ফাইলটি রিড করার জন্য রিকোয়েস্ট করবে। ফাইল সিস্টেম এপিআই রিকোয়েস্ট ভেরিফাই করে ডাটা রিটার্ন করবে। অনুরুপভাবে রাইট করার জন্যও একইভাবে এপিআই এর মাধ্যমে এক্সেস করতে হবে। সুতরাং এপিআই হল একটা কন্টেন্ট প্রোভাইডার বা হেন্ডেলার। তবে এই প্রোভাইডার কিছু নির্দিষ্ট শর্তে ডাটা এক্সেস দেয় আর সেই শর্তগুলোই বিভিন্ন ফাংশনে বিভক্ত থাকে। তাহলে আমরা বলতে পারি, এপিআই হল বিভিন্ন ফাংশনের সমষ্টি যা দুটো সিস্টেমের মধ্যে ডাটা আদান প্রদানের মাধ্যম হিসেবে কাজ করে।

মি. এক্সঃ বুঝলাম এপিআই অনেক হাই লেভেলের সাবজেক্ট! অপারেটিং সিস্টেম, ডিভাইস কিংবা বড় বড় সিস্টেম বানানোর জন্য এপিআই এর প্রয়োজন! ভাই আমি অত্যন্ত সাধারন প্রোগামার, আমি এসব জেনে কি করব, ঘুমোতে গেলাম!

এপিআই কথনঃ আপনি যে টাইপের বা যে লেভের প্রোগ্রামারই হোন না কেন এপিআই কি এবং সেটা আপনার লাইফ কতটা সহজ করে দিচ্ছে তা পুরো টিউটোরিয়াল জুড়ে বিভিন্ন উদাহরনের মাধ্যমে দেখানো হয়েছে।

আমি প্রোগ্রামার নই! এপিআই কি তা জেনে আমি কি করব?

আপনি যদি কোন সফ্টওয়্যার বা ওয়েব সার্ভিস বা মোবাইল এ্যাপ অথবা কোন হার্ডওয়্যার সলুশন তৈরী করতে চান কিংবা আপনি একজন ডিসিশন মেকার হন তবে API আপনার কাজে দিতে পারে।

এপিআই এর সার্বজননীন ব্যবহার
একেক রকমের ব্যবহারকারীর কাছে একেক প্লাটফর্ম বেশি পছন্দের। কেউ স্মার্ট ফোনেই তাদের বেশিরভাগ কাজ করতে পছন্দ করে কেউ পিসিতে। কেউ এন্ড্রয়েড ব্যবহার করে কেউ বা আইফোন অথবা উইন্ডোজ, ফায়ারফক্স, লিনাক্স। প্রতিনিয়ত স্মার্টফোনের ব্যবহার বাড়ছে, সেই সাথে বাড়ছে নতুন নতুন ও.এস। এখন আপনি যদি চান আপনি যে সিস্টেম তৈরী করবেন তা সর্বাপেক্ষা বেশি মানুষকে অফার করতে, তাহলে অবশ্যই আপনার সিস্টেমকে মাল্টিপ্লাটফর্মের জন্য উপযুক্ত করে তৈরী করতে হবে।

উদাহরনঃ আপনি প্রাত্যহিক হিসাব রাখার একটা প্রোগ্রাম বানাবেন যেটা ল্যাপটপে, এন্ড্রয়েডে, আইফোনে ইত্যাদিতে চলবে এবং সব ডিভাইসে হিসাব নিকাশ সবসময় আপডেটেড থাকবে।

সাথে সাথে আপনি চাইবেন, অদূর ভবিষ্যতে আপনি নতুন কোন অপারেটিং সিস্টেম আসলে সেটাতে যেন সহজেই ইন্টগ্রেট করতে পারেন কিংবা আপনার পিএইচপি তে করা ওয়েব এ্যাপটি এঙ্গুলার জে.এস বা এ.এস.পি তে রি-ডেভেলপ করবেন।

এক্ষেত্রে আপনি সহজেই নতুন কোন ফ্রন্টএন্ড এপিআই এর সাথে জুড়ে দিয়ে নিশ্চিন্তে ঘুমাতে পারবেন। এপিআই অনেক টা আপনার শরীর এবং শরীরে বিভিন্ন ফাংশন যেমন, হাটা, কথা বলা, অনুভুতি, ঘুমানো ইত্যাদি। আপনাকে একেক ড্রেসে একেক সময় একেক রকম লাগে। আপনার বেশভূষন বা স্টাইল যাই হোক আপনার দেহের অভ্যন্তরীন কাজ একই।

যেহেতু আপনার সিস্টেম এন্ড্রয়েড, আইফোন, পিসি সব যায়গায় একই কাজ করবে তাহলে প্রত্যেকটার জন্য আলাদা আলাদা কোড না লিখে সবগুলোর জন্য একটি ব্রেইন তৈরী করলেন যার টেকনিক্যাল নাম এপিআই।
অনেকটা আপনি আপনার মাথা কেটে কয়েকটা বিভিন্ন স্টাইলের বডিতে ইন্টারনেটের মাধ্যমে যুক্ত করে দিলেন। এখন আপনি যদি এই ব্রেইনে কোন পরিবর্তন আনেন সাথে সাথে সব প্লাটর্ফমে কিংবা আপনার নির্ধারিত প্লাটফর্মে সেই আপডেট টা চলে যাচ্ছে ।
সুতরাং বোঝাই যাচ্ছে এপিআই শুধু বিগবস-রাই ব্যবহার করে না, কারণ এটি প্রতিনিয়তই ব্যবহার করতে হচ্ছে ডেভেলোপারদেরকে, আর এর ব্যবহার শুধু হার্ডওয়্যার এবং ওএস এর মধ্যে সিমাবদ্ধ না। নিচে কয়েক প্রকার এপিআই এর উদাহরন দেয়া হলঃ

Web Service APIs, OS Functional APIs, Hardware APIs, SOAP XML-RPC JSON-RPC REST, Access to file system, Access to User Interface, Video Acceleration, Hard Disk Drivers, PCI Busses ইত্যাদি।

তো বন্ধুরা আজ এ পর্যন্তই, জানিনা পোস্টটা কেমন হয়েছে, এটা আমার প্রথম পোস্ট, হয়ত কিছু এলোমেলো হয়ে থাকতে পারে। আজ থেকে লেখা শুরু করলাম, সুতরাং ভুলত্রুটি ক্ষমার চোখে দেখবেন, আর হ্যাঁ, পোস্টের কিছু তথ্য ইন্টারনেট থেকে সংগ্রহ করা হয়েছে ।

API সম্পর্কে আরো জানতে চাইলে Google তো আছেই ! Just Search and read !

দোয়া করি সবাই ভালো থাকুন এবং সুস্থ থাকুন।
আল্লাহ হাফেজ।

লেখকঃ সিফাত