सभी लेख

Edistera के अंदर

B2B कॉमर्स के लिए Kotlin-फर्स्ट नेटिव मोबाइल ऐप सबसे बेहतर क्यों है

Devanshu Kaushik · 18 जुलाई 2022

B2B कॉमर्स के लिए Kotlin-फर्स्ट नेटिव मोबाइल ऐप सबसे बेहतर क्यों है

B2B के लिए सॉफ्टवेयर बनाना मुश्किल है। SaaS (सॉफ्टवेयर एज़ अ सर्विस) प्रोडक्ट बनाने की अपनी चुनौतियाँ हैं। eCommerce सॉल्यूशन बनाना भी उतना ही कठिन है। इन्हें मिला दीजिए और एक डेवलपर के रूप में आपके हाथ में शुरुआत से ही 3 गुना पैमाने की प्रोडक्ट जटिलता आ जाती है। सौभाग्य से, SaaS और eCommerce दोनों तरह के प्रोडक्ट बनाने का अनुभव रखने वाली टीम के साथ, हमें पता था कि इस प्रोडक्ट यात्रा की शुरुआत से पहले खुद से कौन-से सही सवाल पूछने हैं। हमें पता था कि अपने ग्राहकों की — और परोक्ष रूप से अपने प्रोडक्ट की — सफलता सुनिश्चित करने के लिए हमारे पाँच सिद्धांत होंगे।

  1. तेज़ी से विकसित हों और डिलीवर करें: कोई प्रोडक्ट कभी परफेक्ट नहीं होता, बल्कि प्रासंगिक बने रहने के लिए उसे लगातार विकसित होते रहना पड़ता है। हमारी 3X जटिलता (B2B + SaaS + eCommerce) को ध्यान में रखें, तो यह सिद्धांत हमारे लिए जीने-मरने की तलवार है। हमें याद रखना है कि हमारा सॉफ्टवेयर कई तरह के यूज़र इस्तेमाल करेंगे — ऑफिस का स्टाफ, और उससे भी ज़्यादा तात्कालिक रूप से फील्ड सेल्स रेप्स तथा हमारे ग्राहकों के खरीदार — जिसका मतलब है कि लगातार बदलते B2B कॉमर्स परिदृश्य के साथ ऐप की किसी भी समस्या या फ़ीचर की कमी को बेहद तेज़ रफ़्तार से ठीक/पूरा करना होगा।
  2. बड़े पैमाने पर डिलीवर करें: उतना ही ज़रूरी यह याद रखना है कि हमारे ऐप सिर्फ़ हमारे ग्राहकों तक नहीं, बल्कि उनके खरीदारों तक भी पहुँचेंगे — यानी हमारे प्रोडक्ट इन्फ्रास्ट्रक्चर और यूज़ेबिलिटी की ज़रूरतों को हमारी ग्रोथ के साथ घातीय रूप से (रेखीय नहीं) स्केल करना होगा, ज़िम्मेदारियों के स्पष्ट बँटवारे के साथ। इसलिए परफॉर्मेंस वाकई मायने रखती है — तेज़ लोड टाइम और सटीक ऑर्डरिंग से ही सकारात्मक यूज़र अनुभव बनता है।
  3. अपने ग्राहकों के ब्रांड चरित्र को आत्मसात करें: प्रोडक्ट बनाना शुरू करते समय हमारा एक मुख्य लक्ष्य था — अपने ग्राहकों को B2B कॉमर्स की दुनिया में उनका अपना B2B स्टोर और पहचान देना। इसलिए प्रोडक्ट-व्यापी ब्रांडिंग और कस्टमाइज़ेशन फ़ीचर ‘अच्छा हो तो ठीक’ से बढ़कर अनिवार्य बन जाते हैं।
  4. खरीदारों के पास अक्सर कमज़ोर इंटरनेट होता है: मोबाइल कॉमर्स का मक़सद ही सुविधा है — खरीदार कभी भी, कहीं भी, किसी भी डिवाइस से ऑर्डर दे सके। चाहे स्टोर में इंटरनेट कमज़ोर हो या उनके फोन में सिर्फ़ वाई-फाई हो, अपने खरीदारों को आपसे न खरीदने की कोई वजह न दें।
  5. हाई-फ्रीक्वेंसी ऑर्डरिंग वर्कफ़्लो: कई B2B खरीदार स्टॉक की गिनती करते-करते शेल्फ़ के पास खड़े-खड़े ऑर्डर लेना पसंद करते हैं। नेटिव मोबाइल कॉमर्स ऐप मोबाइल डिवाइस के कैमरे को बारकोड स्कैनर की तरह इस्तेमाल कर सकता है, जिससे आपका खरीदार ज़रूरत पड़ते ही फटाफट ऑर्डर दे सके।

अपनी प्रोडक्ट यात्रा की शुरुआत में हमने दो अलग-अलग ऐप की ज़रूरत तय की — एक जो हमारे ग्राहकों के प्रोडक्ट्स के खरीदारों (रिटेलर्स, होलसेल खरीदार, रिपीट खरीदार आदि) के लिए होगा, और दूसरा जो उनके फील्ड सेल्स स्टाफ को ग्राहक ऑनबोर्डिंग, ऑर्डरिंग, पेमेंट, अपसेलिंग और क्रॉस-सेलिंग जैसे रोज़मर्रा के कामों की चेकलिस्ट तेज़ और ज़्यादा कुशल ढंग से पूरी करने में सक्षम बनाएगा। खरीदार वाले छोर पर कस्टमाइज़ेशन और ब्रांडिंग की ज़रूरत सर्वोच्च प्राथमिकता थी। फील्ड में सेल्स रिप्रेज़ेंटेटिव द्वारा इस्तेमाल होने वाले ऐप के लिए हमने यूज़ेबिलिटी, स्केलेबिलिटी और स्पीड को प्राथमिकता दी, साथ ही फुटप्रिंट हल्का रखा। हमें पता था कि अधिकतम मार्केट पहुँच सुनिश्चित करने के लिए दोनों ही मामलों में हमें Android से शुरुआत करनी होगी। सवाल बस यह था — कौन-सी भाषा या फ्रेमवर्क इन सभी ज़रूरतों पर खरा उतरता है?

खासतौर पर Android के लिए, हमें मूल रूप से दो तरह के विकल्पों में से चुनना था:

  1. क्या हम Flutter या ReactNative जैसे क्रॉस-प्लेटफॉर्म सॉल्यूशन के साथ जाएँ?
    मूल रूप से इसका मतलब था Android, iOS और Web जैसे प्लेटफॉर्म्स पर हमारे ऐप्स के लिए एक ही कोडबेस चुनना। Flutter एक क्रॉस-प्लेटफॉर्म फ्रेमवर्क है, जो Dart नाम की प्रोग्रामिंग भाषा इस्तेमाल करता है — दोनों Google ने बनाए हैं। ReactNative बेहद लोकप्रिय वेब डेवलपमेंट फ्रेमवर्क ReactJS का मोबाइल-विशिष्ट भाई-बंद है, जिसे हम पहले ही अपने वेब-आधारित Edistera Hub डैशबोर्ड के लिए चुन चुके थे। कम मेंटेनेंस ओवरहेड को देखते हुए यह वाकई लुभावना विकल्प था — इसमें क्लासिक “एक बार बनाओ, हर जगह डिप्लॉय करो” वाली बात थी।
  2. या हम Android की दुनिया के फर्स्ट-क्लास सिटिज़न — Java या Kotlin — के साथ रहें
    Java प्रोग्रामिंग भाषा के रूप में घर-घर का नाम है — इस हद तक कि जिन्हें प्रोग्रामिंग का एक शब्द नहीं आता, उन्होंने भी इसका नाम सुना है। उसने यह दर्जा इसलिए पाया, क्योंकि वह समय की कसौटी पर खरी उतरी है। मैंने खुद अपनी प्रोग्रामिंग यात्रा Java में Android डेवलपमेंट से शुरू की थी, और Kotlin के अपने अस्तित्व के लगभग 6-7 साल तक यही स्थिति रही। दूसरी ओर Kotlin अपेक्षाकृत नई थी, लेकिन बेहद आशाजनक।

चुनाव कठिन था। लेकिन हमने Kotlin चुनी, क्योंकि हमें लगा कि वह हमारे पाँचों सिद्धांतों पर खरी उतरती है। बल्कि उसके पास देने को और भी बहुत कुछ है। समझाता हूँ।

Kotlin बनाम बाकी सब

सबसे पहले Kotlin का संक्षिप्त परिचय — Kotlin एक जनरल-पर्पस प्रोग्रामिंग भाषा है, जो Java (जो जैसा आप जानते ही होंगे, अपने आप में एक प्रोग्रामिंग महारथी है) के साथ पूरी तरह इंटरऑपरेबल है। इसे JetBrains ने बनाया (वही मशहूर संस्था जिसने IntelliJ बनाया, जो Java समेत कई भाषाओं में ऐप डेवलप करने का इंडस्ट्री-स्टैंडर्ड इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट है)। इसका पहला वर्ज़न (इस पोस्ट के लिखे जाने के समय) 10 साल से भी पहले, 22 जुलाई 2011 को रिलीज़ हुआ था। 7 मई 2019 को Google ने घोषणा की कि Kotlin प्रोग्रामिंग भाषा अब Android ऐप डेवलपर्स के लिए उसकी पसंदीदा भाषा है। Lyft, Coursera, Airbnb, Pinterest जैसे अपनी-अपनी इंडस्ट्री में अग्रणी लोकप्रिय ऐप्स के Android ऐप का कुछ हिस्सा या पूरा ऐप पहले से Kotlin में बना है।

B2B eCommerce ऐप के लिए Kotlin बनाम ReactNative और Flutter

इस मोड़ पर ज़ाहिर सवाल है — हम Flutter और ReactNative जैसे क्रॉस-प्लेटफॉर्म सॉल्यूशन के साथ क्यों नहीं गए? खासकर Edistera Direct ऐप के लिए, हम निश्चित रूप से देर-सबेर Android के अलावा दूसरे प्लेटफॉर्म्स (यानी iOS और Web) को टारगेट करने वाले हैं। हालाँकि हमने अनुभव के आधार पर कुछ इंडस्ट्री-विशिष्ट eCommerce यूज़-केस और Kotlin के अपने प्रोडक्ट रोडमैप को देखा और पाया कि कुछ बातें पलड़ा Kotlin के पक्ष में झुका देती हैं:

  1. कैमरा जैसे डिवाइस पेरिफेरल्स का सपोर्ट
    Kotlin में Android ऐप डेवलप करने का मतलब है कैमरा, ब्लूटूथ और अन्य पेरिफेरल्स तक पहुँचने के लिए बिल्ट-इन फर्स्ट-पार्टी API — जो पेमेंट, इन्वेंटरी मैनेजमेंट आदि के लिए बारकोड/QR कोड स्कैनर जैसे B2B eCommerce-विशिष्ट फ़ीचर बनाने में अनिवार्य हैं। Flutter और ReactNative भी इन तक पहुँच सकते हैं, लेकिन इसके लिए वे थर्ड-पार्टी या ओपन-सोर्स समुदायों द्वारा मेंटेन किए जाने वाले प्लगइन और मॉड्यूल पर निर्भर हैं। इन मॉड्यूल/प्लगइन का रखरखाव/अपग्रेड अक्सर फ्रेमवर्क की अपनी लोकप्रियता से सीधे जुड़ा होता है, जो जैसा हमने अतीत में देखा है, हर कुछ साल में घटती-बढ़ती रह सकती है। Google द्वारा Kotlin को Android की पसंदीदा भाषा के रूप में समर्थन देने से कहीं ज़्यादा भरोसा मिलता है कि ये API लंबी अवधि तक उपलब्ध रहेंगे और कहीं ज़्यादा नियमितता से अपडेट होंगे — जो हमें अपने फ़ीचर सपोर्ट को अप-टू-डेट रखने में मदद करता है।
  2. खास प्लेटफॉर्म फ़ीचर्स तक पहुँच
    B2B eCommerce की दुनिया में यूज़र एंगेजमेंट कस्टमर सक्सेस के स्तंभों में से एक है। इसका एक बड़ा योगदानकर्ता है — पुश नोटिफिकेशन। डिवाइस पेरिफेरल्स की तरह, यहाँ भी Kotlin के पास पुश नोटिफिकेशन जैसे OS फ़ीचर्स के लिए फर्स्ट-पार्टी API एक्सेस है। Google सेवाओं (जैसे Maps आदि) के API Kotlin की भाषा-विशेषताओं को ध्यान में रखकर परफॉर्मेंस-ऑप्टिमाइज़्ड हैं, और यह बताने की ज़रूरत ही नहीं कि B2B eCommerce के नज़रिए से ऑर्डर फुलफिलमेंट, कस्टमर रिलेशन मैनेजमेंट में Google Maps की लोकेशन सर्विसेज़ कितनी अपरिहार्य हैं। इन API की फर्स्ट-पार्टी प्रकृति से जुड़े फ़ीचर्स का इम्प्लीमेंटेशन और डिबगिंग कहीं तेज़ हो जाता है।
  3. छोटा फुटप्रिंट
    सिर्फ़ Kotlin से बने ऐप्स का डाउनलोड साइज़ छोटा रहता है, क्योंकि ये एक ही प्लेटफॉर्म को टारगेट करते हैं — यानी संबंधित एंड यूज़र के लिए ऐप का नया इंस्टॉल या अपडेट कम समय लेगा।
  4. Kotlin का लक्ष्य खुद एक पूरी तरह क्रॉस-प्लेटफॉर्म भाषा बनना है!
    अब उस बात पर आते हैं, जो प्लेटफॉर्म-विशिष्ट फ्रेमवर्क या भाषा चुनते समय बड़ा नुकसान लगती है — “जब आप iOS जैसा नया प्लेटफॉर्म टारगेट करेंगे, तो सब कुछ दोबारा कोड करना पड़ेगा? क्यों न React Native चुनकर मामला खत्म करें?” तो अच्छी ख़बर यह है कि प्लेटफॉर्म्स के पार पहुँचना Kotlin के अपने प्रोडक्ट रोडमैप के केंद्र में है। Multiplatform Mobile के साथ इसका लक्ष्य सिर्फ़ Android और iOS के लिए एक कोडबेस सपोर्ट करना नहीं है — यह दृष्टिकोण में एक उल्लेखनीय फ़र्क के साथ ऐसा करता है, और वह है दोनों प्लेटफॉर्म्स पर नेटिव यूज़र अनुभव का समर्थन। इस तरह डेवलपर्स और यूज़र्स दोनों को दोनों दुनियाओं का सर्वश्रेष्ठ मिलता है — ऐप को चलाने वाला बिज़नेस लॉजिक एक बार Kotlin में लिखा जाएगा, जबकि यूज़र इंटरफेस क्रमशः Swift और Kotlin में कोड किए गए नेटिव iOS और Android विजेट इस्तेमाल करेगा, जिससे ऐप के यूज़र को उसके पसंदीदा प्लेटफॉर्म पर अपनापन महसूस होगा। यही नहीं, Kotlin/JS इस दृष्टिकोण को Web तक ले जाता है। “ठीक है, तो मेरे ख़याल से इसने React Native और Flutter के यूज़-केस लगभग कवर कर लिए” — लेकिन और भी है! Kotlin, जनरल-पर्पस भाषा होने के अपने मक़सद के अनुरूप, Spring, AWS Lambdas, Heroku आदि जैसी लोकप्रिय सर्वर-साइड टेक्नोलॉजी में भी समर्थन पाती है। यह उम्मीद पूरी तरह यथार्थवादी है कि निकट भविष्य में हमारे टेक्नोलॉजी स्टैक का बड़ा हिस्सा Kotlin इस्तेमाल कर रहा होगा।

Kotlin बनाम Java

“तो किसी प्लेटफॉर्म की फर्स्ट-क्लास सिटिज़न भाषा होने के फ़ायदे हैं, लेकिन क्या ये तर्क Java पर भी लागू नहीं होते?” — कुछ होते हैं, लेकिन कई नहीं। Java समय की कसौटी पर खरी उतरी भाषा है और रहेगी, लेकिन यही बात उसके खिलाफ़ भी जाती है। यहाँ बताया गया है कि Kotlin इस मोर्चे पर लगातार कैसे आगे निकल रही है:

  1. डेवलपमेंट की तेज़ रफ़्तार
    Kotlin ऐसा सिंटैक्स देती है, जो Java से कहीं ज़्यादा संक्षिप्त हो सकता है — समान काम के लिए कम बॉयलरप्लेट कोड। पिछले दशक में वह Java से कहीं तेज़ रफ़्तार से विकसित हो पाई, और ऐसी भाषा-विशेषताएँ (जैसे कोरूटीन) विकसित कीं, जो समानांतर निष्पादन के मामले में Java के थ्रेड-आधारित तरीके से कहीं कम संसाधन खर्च करती हैं। इस तरह यह हमारी सबसे तेज़ संभव डिलीवरी के पहले सिद्धांत के अनुरूप है और दूसरे सिद्धांत द्वारा माँगी गई स्केलेबिलिटी देती है।
  2. कस्टमाइज़ेशन का अवसर देती है
    हमारा तीसरा सिद्धांत — कस्टमाइज़ेशन और ब्रांडिंग — Jetpack Compose से संभव हुआ, जो Google द्वारा पूरी तरह Kotlin में बनाया गया Android के लिए एक आधुनिक, डिक्लेरेटिव UI फ्रेमवर्क है। Compose की डिक्लेरेटिव प्रकृति, और यह तथ्य कि वह रिएक्टिव UI पैराडाइम पर आधारित है, हमें अपने Edistera Direct के इंटरफेस में ब्रांड-विशिष्ट कलर थीम सहजता से जोड़ने की सुविधा दी। Android पर Compose से पहले के दिनों में ऐप की थीमिंग अपने आप में एक कठिन काम हुआ करती थी, और Java जितनी भी अच्छी हो, फ़िलहाल आप उसमें Jetpack Compose UI प्रोग्राम नहीं कर सकते। ऐसी ही थर्ड-पार्टी UI फ्रेमवर्क लाइब्रेरीज़ हैं जो Java सपोर्ट करेंगी, लेकिन मुझे लगता है कि Jetpack Compose के उभार के साथ उनकी लोकप्रियता, उपयोग और रखरखाव जल्दी ही घट जाएगा।
  3. बेहतर बैकवर्ड कम्पैटिबिलिटी
    Kotlin खुद शुरुआत में Java 6 से प्रोग्राम की गई थी। इसका मतलब है कि उसकी भाषा-विशेषताएँ भविष्य में न सिर्फ़ Java की अच्छी बातें आत्मसात करेंगी, बल्कि उन नई विशेषताओं की Android के पुराने वर्ज़न के साथ कहीं बेहतर कम्पैटिबिलिटी होगी। इसके उलट, डेटा प्रोसेसिंग के लिए Java 8 का एक लोकप्रिय फ़ीचर “streams”, जो वेब और सर्वर-साइड डेवलपमेंट में बड़े पैमाने पर इस्तेमाल होता है, Android 9.0 से पुराने Android वर्ज़न में सपोर्ट नहीं पाता।
  4. यह Java के साथ पूरी तरह इंटरऑपरेबल है
    मान लीजिए भविष्य में किसी मोड़ पर Java वाकई कोई ऐसा फ़ीचर ले आए, जो Kotlin में नहीं है और जो हमारे डेवलपमेंट के किसी हिस्से को तेज़ कर देगा। उस स्थिति में हम आसानी से ढल सकते हैं — प्रोग्राम का वह हिस्सा Java में लिखकर — क्योंकि Kotlin 100% इंटरऑपरेबिलिटी देती है: आप Kotlin में Java क्लास इस्तेमाल कर सकते हैं, और इसका उल्टा भी। इस तरह Kotlin चुनना काफ़ी फ्यूचर-प्रूफ विकल्प भी है, और हमारे सिद्धांतों के स्केलेबिलिटी पहलू का भी फिर से समर्थन करता है।

वाह, यह पोस्ट तो काफ़ी लंबी हो गई, लेकिन हम इंजीनियर अपनी टेक्नोलॉजी के बारे में ऐसे ही लंबा बोलने के लिए जाने जाते हैं। फिर भी मेरी सच्ची उम्मीद है कि मैं Edistera द्वारा पेश किए गए जैसे भरोसेमंद और लचीले स्टैक पर बने B2B कॉमर्स मोबाइल ऐप को चुनने के फ़ायदे दिखा पाया, ताकि आप जानें कि आप अच्छे हाथों में हैं। अपने खरीदारों को बेहतरीन मोबाइल कॉमर्स अनुभव देने के लिए मोबाइल वेब अनुभव की जगह Kotlin मोबाइल कॉमर्स ऐप में निवेश करना बेहद ज़रूरी है।

अगर आप हमारे प्रोडक्ट को उसकी पूरी Kotlin शान में काम करते देखना चाहते हैं, तो आज ही हमारे विशेषज्ञ के साथ 10 मिनट की कॉल के लिए साइन अप करें।

चलिए, शुरू करते हैं

बेहतर होलसेल बिक्री से आप बस एक क़दम दूर हैं — आज ही इसे ऑनलाइन ले जाएँ। Edistera के B2B कॉमर्स क्लाउड का पर्सनलाइज़्ड मुफ़्त डेमो बुक करें।