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
MS Word to API to Printer
এপিআই উদাহরন ১ :
ধরুন Canon কোম্পানি প্রিন্ট করার জন্য প্রিন্টার বানিয়েছে কিন্তু তারা তো মাইক্রোসফ্ট ওয়ার্ড বা টেক্স এডিটর বানায়নি । তাহলে মাইক্রোসফ্ট ওয়ার্ড কিভাবে ঐ প্রিন্টারে প্রিন্ট দিবে ?
কিংবা আপনি যদি কোন এডিটর বানান তবে আপনি কি করবেন ? তাছাড়া Canon ছাড়াও আরো অনেক প্রিন্টার আছে, আর হাজার হাজার এ্যাপ্লিকেশন আছে যেগুলো থেকে প্রিন্ট করা যায়।
তাহলে এসব প্রোগ্রাম কিভাবে প্রিন্টারের সাথে তথ্য বা ফাংশন আদান প্রদান করে? কিভাবে একটি প্রোগ্রাম প্রিন্টারকে বলবে তার ডকুমেন্টটি প্রিন্ট করে দিতে?
এ.পি.আই আসলে নতুন কিছু না । Canon বা অন্য যে কোন প্রিন্টারের সাথে কোন এ্যাপ্লিকেশন সফ্টওয়ারের কোন সম্পর্ক নেই । দুটো প্রোগ্রামই একটি ইন্টারফেস বা মাধ্যম ব্যাবহার করে যোগাযোগ করে থাকে ।
এই মাধ্যমকেই এপিআই বলে । মাইক্রোসফ্ট ওয়ার্ডে প্রিন্ট কমান্ড দিলে সে এপিআই এর কাছে প্রিন্টার স্ট্যাটাস রিকোয়েস্ট করে, এবং সব ঠিক থাকলে এপিআইকে ডকুমেন্ট প্রিন্ট করতে দেয় ।
এপিআই প্রিন্টার কে ঐ ডকুমেন্ট টি প্রিন্ট করতে বলে। প্রিন্টারের আসলে জানার দরকার সেই কোন প্রোগ্রাম প্রিন্ট করতে বলছে , তার কাছে এটা ডকুমেন্ট আসছে সে এটা রিড করে প্রিন্ট করবে ।
এই মাধ্যমকেই এপিআই বলে । মাইক্রোসফ্ট ওয়ার্ডে প্রিন্ট কমান্ড দিলে সে এপিআই এর কাছে প্রিন্টার স্ট্যাটাস রিকোয়েস্ট করে, এবং সব ঠিক থাকলে এপিআইকে ডকুমেন্ট প্রিন্ট করতে দেয় ।
এপিআই প্রিন্টার কে ঐ ডকুমেন্ট টি প্রিন্ট করতে বলে। প্রিন্টারের আসলে জানার দরকার সেই কোন প্রোগ্রাম প্রিন্ট করতে বলছে , তার কাছে এটা ডকুমেন্ট আসছে সে এটা রিড করে প্রিন্ট করবে ।
এপিআই উদাহরন ২ :
এবার একটি ছোট প্রোগ্রাম এর উদাহারন দেখা যাক !
# Open a file file = open (‘api.txt’ , ‘r’ ) # Read line line = file .readline() print line
# 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 ফাইলটি রিড করার জন্য রিকোয়েস্ট করবে ।
ফাইল সিস্টেম এপিআই রিকোয়েস্ট ভেরিফাই করে ডাটা রিটার্ন করবে । অনুরুপভাবে রাইট করার জন্যও একই ভাবে এপিআই এর মাধ্যমে এক্সেস করতে হবে। সুতরাং এপিআই হল একটা কন্টেন্ট প্রোভাইডার বা হেন্ড্যেলার ।
তবে এই প্রোভাইডার কিছু নির্দিষ্ট শর্তে ডাটা এক্সেস দেয় আর সেই সর্তগুলোই বিভিন্ন ফাংশনে বিভক্ত থাকে । তাহলে আমরা বলতে পারি, এপিআই হল বিভিন্ন ফাংশনের সমষ্টি যা দুটো সিস্টেমের মধ্যে ডাটা আদান প্রদানের মাধ্যম হিসেবে কাজ করে ।
তেমনি লিনাক্সে 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 ইত্যাদি ।
SOAP XML-RPC JSON-RPC REST, Access to file system, Access to User Interface, Video Acceleration, Hard disk drivers, PCI Busses ইত্যাদি ।
কোন মন্তব্য নেই