การเขียนโค้ดสำหรับเว็บ
(mrmr.io)- Apple มอบอุปกรณ์ที่ปลอดภัยและมีภาระการดูแลต่ำให้ลูกค้า แต่จากประสบการณ์ได้ข้อสรุปว่าไม่ได้สร้าง ความพึ่งพาซึ่งกันและกัน ในระดับเดียวกันกับนักพัฒนาอิสระ
- บั๊กโหมดมืด/สว่างของ Google Search ถูกใช้เป็นตัวอย่างที่แสดงว่า ความไม่สะดวกที่ไม่กระทบรายได้ อาจถูกปล่อยทิ้งไว้นาน ไม่ใช่เพราะขาดความสามารถทางเทคนิค
- คุณค่าหลักของ Apple อยู่ที่คอมพิวเตอร์และอุปกรณ์ที่ผู้ใช้ใช้งานได้โดยไม่ต้องดูแลจัดการเอง มากกว่าระบบนิเวศของแอป และมองว่า iPhone หรือ iPad ยังมีเหตุผลให้ซื้อแม้ไม่มีแอป
- Apple Music API ที่เคยคาดหวังไว้ในปี 2016 แม้ผ่านไป 8 ปีแล้วยังมีบั๊กและข้อจำกัดการเข้าถึง และแม้จะทดลองใช้ง่าย ๆ ก็ต้องมี บัญชีนักพัฒนาปีละ 100 ดอลลาร์
- แพลตฟอร์มเว็บ ที่ไม่มีบริษัทเดียวเป็นเจ้าของนั้นไม่สมบูรณ์และเปราะบาง แต่ยังเป็นตัวเลือกที่เป็นจริงสำหรับนักพัฒนาที่ต้องการผูกติดกับโครงสร้างเกมผลรวมศูนย์ของบริษัทใดบริษัทหนึ่งให้น้อยลง
Apple แข็งแกร่งต่อหน้าลูกค้า แต่ไม่ได้พึ่งพานักพัฒนา
- แกนหลักของมุมมองนี้คือ Apple มอบคุณค่าที่ชัดเจนให้บุคคลทั่วไปซึ่งเป็นลูกค้า แต่มีเหตุผลเชิงโครงสร้างน้อยกว่ามากที่จะใส่ใจ นักพัฒนาอิสระ ในแบบเดียวกัน
- ความสัมพันธ์แบบพึ่งพาไหลจาก
Developer -> Apple,Apple -> Consumerและแทบไม่มีการพึ่งพาย้อนกลับจาก Apple ไปยังนักพัฒนาอิสระ - แม้นักพัฒนาทั้งหมดจะหยุดพัฒนาบนแพลตฟอร์ม Apple โดยรวมแล้ว Apple ก็น่าจะอยู่รอดได้ เพราะข้อเสนอคุณค่าหลักของ Apple ไม่ได้ขึ้นอยู่กับนักพัฒนาแต่ละราย
- ความร่วมมือกับ “พาร์ทเนอร์” ที่เป็นนักพัฒนาระดับองค์กรอาจจำเป็น แต่เป็นคนละประเด็นกับการพึ่งพานักพัฒนาอิสระ
- บริษัทข้ามชาติบางแห่งวางนักพัฒนาไว้เป็นแกนกลางของกลยุทธ์ แต่เห็นว่า Apple ไม่ใช่บริษัทประเภทนั้น
- เมื่อยอมรับการแบ่งแยกนี้แล้ว ก็สามารถแยกความรู้สึกชอบผลิตภัณฑ์ Apple ออกจากความอยากพัฒนาสำหรับ Apple ได้
กรณี Google: บั๊กที่ไม่กระทบรายได้อาจคงอยู่นาน
- Google Search มีปัญหาในสภาพแวดล้อมที่ระบบเปลี่ยนโหมดสว่าง/มืดแบบไดนามิก โดยหน้าผลการค้นหาหน้าแรกแสดงเป็นธีมตรงข้าม
- ตอนกลางคืน ทั้งระบบอยู่ในโหมดมืด แต่หน้าผลลัพธ์แรกกลับสว่างจนแสบตา
- ตอนเช้า หลังแล็ปท็อปกลับเป็นโหมดสว่าง ผลการค้นหากลับแสดงเป็นพื้นหลังสีดำที่อ่านยาก
- บั๊กนี้ดำเนินมาหลายปี และมองว่ามีโอกาสแก้ไขต่ำ เว้นแต่จะถูกแก้โดยบังเอิญระหว่างการปรับปรุงครั้งใหญ่
- สาเหตุไม่ได้ถูกตีความว่า Google ไม่มีความสามารถจะแก้ แต่เป็นเพราะ มันไม่กระทบรายได้
- คนที่ใช้เสิร์ชเอนจินทางเลือกอย่าง DDG ก็ออกไปแล้ว และผู้ใช้ส่วนใหญ่ท่วมท้นยังผูกติดกับ Google
- DDG ชูจุดขายเรื่องความเป็นมิตรต่อความเป็นส่วนตัว แต่เหตุผลที่ใช้จริงคือ UX ที่เรียบง่ายชวนให้นึกถึง Google ยุคแรก ผลการค้นหาแบบตรงตัวที่คุณภาพดี และโฆษณาที่ไม่รบกวน
- Google ไม่ได้มองผู้ใช้เป็นเป้าหมายเชิงทฤษฎีเกม และการปฏิสัมพันธ์ที่เป็นปฏิปักษ์ต่อผู้ใช้เมื่อจำเป็นต้องใช้ผลิตภัณฑ์ Google ก็ถูกยอมรับว่าเป็นผลลัพธ์ของโครงสร้างเช่นนั้น
คุณค่าหลักของ Apple: คอมพิวเตอร์ที่ปลอดภัยและไม่ต้องดูแลมาก
- ราวปี 2009 ขณะเลือกคอมพิวเตอร์สำหรับครอบครัว ได้ตัดสินว่า Windows ในเวลานั้นมีความปลอดภัยอ่อนแอเกินไป ส่วน Linux ต้องการการสนับสนุนทางเทคนิคอย่างต่อเนื่อง
- ท้ายที่สุดจึงเตรียมคอมพิวเตอร์ที่ติดตั้ง OpenBSD, Firefox และเกมพื้นฐานไว้ แต่เพื่อแลกกับความปลอดภัย ความเป็นส่วนตัว และภาระซัพพอร์ตต่ำ ความสามารถในการใช้งานกลับถูกจำกัดอย่างมาก
- หลังได้ใช้ Mac สำหรับงานที่บริษัทแอป iOS ก็สรุปว่า “นี่คือคอมพิวเตอร์ที่อยากให้แม่ใช้”
- จึงเก็บเงินซื้อ MacBook และเมื่อเวลาผ่านไป ฟอร์มแฟกเตอร์ที่ครอบครัวใช้เปลี่ยนจากโน้ตบุ๊กเป็น iPad แต่คุณค่าหลักเดิมยังคงได้รับการตอบสนอง
- แม้เป็น iPhone ที่ไม่มีแอป สำหรับตนเองก็ยังมีความเป็นไปได้ที่จะซื้อ และสำหรับครอบครัวมองว่าแทบจะแน่นอนว่าเป็นอุปกรณ์ที่จะซื้อ
- ในโมเดลธุรกิจของ Apple นักพัฒนาไม่ใช่องค์ประกอบที่ขาดไม่ได้ และตีความว่าแม้นักพัฒนาจะมีความสุขก็ไม่เป็นไร แต่โครงสร้างไม่ได้บังคับว่าต้องทำให้นักพัฒนามีความสุข
- ภายใน Apple มีบุคคลที่ใส่ใจนักพัฒนาและพยายามปรับปรุงอยู่ แต่การกระทำในระดับบริษัทอาจไม่สม่ำเสมอ
ความคาดหวังและความผิดหวังต่อ Apple Music API
- ราวปี 2016 เมื่อ Apple Music API ถูกประกาศที่ WWDC ก็มีความคาดหวังสูง แต่ในความเป็นจริง “ทุกอย่างเปลี่ยนไป” ไม่ได้เกิดขึ้น
- ยังรู้สึกว่าเครื่องเล่นเพลงของ Apple เองใช้งานยาก และเครื่องเล่นทางเลือกที่ลองใช้โดยมากก็เดินตามแนวทางแบบ Spotify
- เคยคาดหวังว่าจะสร้างประสบการณ์เครื่องเล่นเพลงส่วนตัวที่รวดเร็ว ลื่นไหล ต่อเนื่องไม่สิ้นสุด เหมือนยุค Justin Frankel ของ Winamp ขึ้นมาใหม่ได้
- มองว่าหากมีแค็ตตาล็อกเพลงของ Apple ก็สามารถสร้างประสบการณ์นั้นขึ้นใหม่ได้โดยไม่ต้องพึ่งพาการละเมิดลิขสิทธิ์เหมือนในอดีต
- เมื่อมีเวลาว่าง จึงสร้างเครื่องเล่นเพลงชื่อ Flowers และตั้งใจจะเขียนทูทอเรียลเพื่อให้คนอื่นสร้างเครื่องเล่นเพลงของตนเองได้
- ระหว่างการพัฒนา หลังผ่านไป 8 ปี ก็สรุปว่า API นั้น มีบั๊กและไม่ได้เปิดเผยต่อสาธารณะอย่างแท้จริง
- แค่ทดสอบ API ก็ต้องจ่ายให้ Apple ปีละ 100 ดอลลาร์
- ค่าใช้จ่ายนี้ไม่ได้เป็นค่าการใช้งานจำนวนมาก แต่จำเป็นแม้เพียงเพื่อเข้าถึงสำหรับทดลองใช้งาน
- แม้ใช้บัญชีนักพัฒนาแบบเสียเงิน ก็ได้รับ API ที่ถูกจำกัดเท่านั้น
- เมื่อพิมพ์
MusicKit.getInstance().developerTokenในคอนโซลของเบราว์เซอร์บนเว็บเพลเยอร์เพลงของ Apple จะได้รับ root token แบบไม่จำกัดฟรี จึงมองว่าขั้นตอนสำหรับนักพัฒนานั้นไม่สมเหตุสมผล
เว็บคือแพลตฟอร์มร่วมที่ไม่มีเจ้าของรายเดียว
- ข้อสรุปนำไปสู่ทิศทางว่าให้เขียน โค้ดที่รันบนเว็บ
- เว็บเป็นแพลตฟอร์มร่วมที่ไม่มีหน่วยงานเดียวเป็นเจ้าของ และแตกต่างจากแพลตฟอร์มของบริษัทใดบริษัทหนึ่งตรงที่แม้แต่เจตนาดีก็อาจถูกทำลายด้วยความไร้ประสิทธิภาพได้
- แพลตฟอร์มเว็บอยู่ในสภาพเปราะบางเพราะปัจจัยต่อไปนี้
- รัฐบาลที่แทรกแซงมากเกินไป
- โครงสร้างตลาดเบราว์เซอร์ที่มีสองขั้วใหญ่
- ระบบนิเวศนักพัฒนาที่ซับซ้อน
- ไม่มีหลักประกันว่าเว็บจะรุ่งเรืองต่อไป แต่จนถึงตอนนี้มันอยู่รอดมาได้ และยิ่งอยู่รอดนานเท่าไร โอกาสที่จะรุ่งเรืองต่อไปในอนาคตก็ยิ่งมากขึ้น
- ระบุว่าโค้ด workaround ล่าสุดที่ต้องเขียนเกี่ยวกับเว็บนั้นเกิดจากพฤติกรรมเฉพาะตัวของ Safari
- ขณะเดียวกัน Google ก็กำลังทำสิ่งยอดเยี่ยมเพื่อเว็บ จึงประเมินว่าในบริบทนี้ Google มีบทบาทที่ดี
ความสัมพันธ์กับบริษัทแบ่งเป็นดีชั่วแบบตายตัวได้ยาก
- เช่นเดียวกับที่การแบ่งคนเป็นคนดีและคนเลวแบบตายตัวไม่ค่อยมีประโยชน์ บริษัทก็ยากจะแบ่งถาวรเป็นบริษัทดีหรือบริษัทเลว
- บริษัทมีคุณสมบัติคล้ายมนุษย์ตรงที่มีสติปัญญา บุคลิกภาพ การถือกำเนิด การเติบโต การดับสูญ และสถานะนิติบุคคล
- เช่นเดียวกับที่เราอยู่ไม่ได้โดยไม่มีผู้คน ก็อยู่ไม่ได้โดยไม่มีบริษัท และแม้จะมีลักษณะที่ไม่ใช่มนุษย์ รูปแบบเชิงแฟร็กทัลขององค์กรมนุษย์ก็ยังคงดำรงอยู่
- หากไม่จัดบริษัทไว้ในหมวดดีชั่วแบบตายตัว ก็จะสร้างความสัมพันธ์ได้อย่างยืดหยุ่นมากขึ้น
- เมื่อบริษัทผลักเราเข้าไปในเกมผลรวมศูนย์ ก็ลดระดับการพึ่งพา
- เมื่อบริษัทเปิดให้มีความสัมพันธ์แบบเกื้อกูลกันมากขึ้น ก็กลับเข้าไปมีส่วนร่วม
- Steve Jobs กล่าวไว้ในปี 1996 ว่าบริษัทขนาดใหญ่ กลาง และเล็ก ต่างเริ่มมองเว็บเป็นช่องทางกระจายสินค้าสู่ลูกค้าโดยตรงขั้นสุดท้าย และเป็นเส้นทางจากผู้จัดหาไปยังผู้บริโภคโดยตรงโดยข้ามคนกลาง
1 ความคิดเห็น
ความเห็นจาก Hacker News
ตอนแรกตัดสินใจว่าจะไม่เรียน การพัฒนาแอปมือถือแบบเนทีฟ และทุ่มเวลาที่มีจำกัดทั้งหมดไปกับเว็บ ซึ่งมองว่าครั้งนี้เป็นการตัดสินใจที่ถูกต้อง
ตอนนี้เราสร้างสิ่งน่าทึ่งบนเบราว์เซอร์ได้ และในความเห็นส่วนตัวมาก ๆ นอกจาก Uber, Google Drive และเกมแล้ว แอปส่วนใหญ่น่าจะควรเป็น เว็บแอป
ฉันเคยทำงานในวงการสื่อ ซึ่งช่วงต้นทศวรรษ 2010 ในประเทศของเราคือยุคที่สำนักข่าวซึ่งแทบไม่มีเงินต่างทุ่มงบไปกับการทำแอปมือถือ และฉันเป็นคนแหกคอกที่ปฏิเสธกระแสนั้น
ฉันรู้อยู่แล้วว่าแอปส่วนใหญ่คงไม่มีคุณภาพดี และบริษัทต่าง ๆ ก็จะไม่อัปเดตฝั่งมือถืออย่างต่อเนื่อง ซึ่งสุดท้ายก็เป็นแบบนั้นจริง ๆ
ตอนนี้เราถูกขังอยู่กับแอปที่แทบไม่ได้รับการบำรุงรักษา และส่วนใหญ่ก็ดูเหมือนซากจากยุคที่ผ่านมา ซึ่งจริง ๆ ก็เป็นแบบนั้นแหละ
แต่ไม่เข้าใจว่าทำไมถึงเป็น Uber Uber มีหรือเคยมีเว็บไซต์มือถือที่รองรับการเรียกรถและแทบทุกอย่างที่แอปทำได้ดีอยู่แล้ว และมองไม่ค่อยออกว่าแอปเนทีฟเพิ่มคุณค่าอะไรให้ผู้ใช้
เกมมือถือส่วนใหญ่ก็เหมือนกัน มักเป็นกราฟิกเรียบง่ายที่เบราว์เซอร์เรนเดอร์ได้แรงพออยู่แล้ว และหลายครั้งก็ทำคอมโพเนนต์ UI ทั่วไปขึ้นมาใหม่เอง ดังนั้นการใช้ปุ่มระบบแบบเนทีฟไม่ได้ก็แทบไม่ต่างมาก
PWA ก็ให้พื้นที่เก็บข้อมูลเพียงพอสำหรับไฟล์ในเครื่องและข้อมูลเกมได้เช่นกัน แน่นอนว่าเกมที่รีดขีดจำกัดของระบบเป็นข้อยกเว้น
ฉันไม่ได้คาดหวังว่าเกมอย่าง Death Stranding หรือ RE4 รีเมกจะรันได้ดีโดยไม่เข้าถึงการเร่งกราฟิกแบบเนทีฟโดยตรง และมันก็ใหญ่เกินกว่าจะโหลดเป็นเว็บหน้าเดียว
แต่แอปมือถือส่วนใหญ่ รวมถึงเกมเล่นฟรีทำเงินสูงที่ถ้าไปอยู่บนเว็บก็เก็บรายได้เพิ่มได้อีก 30% ไม่ได้อยู่ในกลุ่มนั้น
แล้วทำไมถึงไม่ทำเว็บเป็นเป้าหมายล่ะ? โดยสัญชาตญาณแล้ว ผู้ใช้มือถือถูกฝึกให้หาแอปและเกมจากแอปสโตร์ ขณะที่ผู้ใช้เดสก์ท็อปคาดหวังว่าแอปจะให้บริการผ่านเบราว์เซอร์ ยกเว้นเครื่องมือเฉพาะทางบางอย่างและเกมสเปกสูง
สุดท้ายแล้วส่วนใหญ่เป็น ปัญหาทางวัฒนธรรม และการรองรับ PWA ที่ไม่ดีของ Apple ก็ไม่ได้ช่วยอะไร
ความอึดอัดส่วนใหญ่มาจากเครื่องมือ โดยเฉพาะ TypeScript อธิบายสั้น ๆ ยาก แต่ฉันต้องไปปล้ำกับระบบ type ของ TypeScript มากกว่าฝั่งเนทีฟเยอะมาก
เพียงแต่กังวลว่า Google กับ Apple จะมีแรงจูงใจให้ช่วยพัฒนา PWA จนแข่งขันกับแอปเนทีฟได้จริงหรือไม่ เพราะถ้าไปถึงจุดนั้นก็อาจกระทบรายได้ของพวกเขา
เอาเวลาไปลงทุนกับ องค์ประกอบพื้นฐาน ของเทคโนโลยีน่าจะดีกว่า
ทั้งหมดนี้ทำผ่านเว็บได้ทั้งนั้น
เหตุผลที่ Apple ไม่ใส่ใจนักพัฒนาก็เพราะอย่างที่เจ้าตัวอธิบายไว้ พวกเขาสร้างฐานผู้ใช้ที่เกือบเป็นลัทธิแบบ สวนปิด เอาไว้แล้ว
ถ้านักพัฒนาไม่ทำผลิตภัณฑ์ลงแพลตฟอร์มนั้น ก็จะเสียตลาดไปครึ่งหนึ่งหรือมากกว่านั้น
ในงานหลักของฉันที่ทำเกมมือถืออยู่ในสตูดิโอเล็ก ๆ ภายใต้บริษัทยักษ์ใหญ่ เราต้องสู้กับ Apple ตลอด ไม่ใช่แค่เรื่องเทคนิค แต่รวมถึงนโยบายและการอนุมัติด้วย
แต่ก็ยากจะจินตนาการถึงการออกเกมมือถือที่เล่นบน iOS ไม่ได้ เลยจำเป็นต้องทำตาม
ในหลายด้าน กลยุทธ์พีซียุคดั้งเดิมของ Microsoft เป็นภาพตรงกันข้ามอย่างสิ้นเชิง พวกเขาดูแลนักพัฒนาและให้ทั้งเอกสาร ตัวอย่าง และเครื่องมือจำนวนมหาศาล
บริษัทที่มีนักพัฒนาเหล่านั้นอยู่ก็มีแรงจูงใจที่จะสร้าง โปรโมต และขายซอฟต์แวร์สำหรับ Microsoft และคลื่นของนักพัฒนาอิสระที่ปล่อยซอฟต์แวร์ Windows จำนวนมาก ก็ทำให้เกิดระบบปฏิบัติการเดสก์ท็อปที่ครองตลาดมาจนถึงทุกวันนี้
การมีส่วนร่วมกับระบบนิเวศของ Apple เป็นทางเลือก ไม่ใช่การบังคับ นักพัฒนาที่มีส่วนร่วมกับระบบนิเวศของ Apple ก็กำลังมีส่วนร่วมกับสภาพที่เป็นอยู่ในตอนนี้อย่างแข็งขัน
Apple ทำสิ่งนี้ได้ด้วยการปฏิบัติกับนักพัฒนาอย่างไม่ค่อยดี หรือให้แม่นกว่านั้นคือไม่ยอมให้นักพัฒนาปฏิบัติกับลูกค้าอย่างไม่ค่อยดี
มันคล้ายกับวิธีที่กดดันซัพพลายเออร์อย่างหนัก แต่สุดท้ายก็เกิดระบบนิเวศที่แข็งแรงและมั่งคั่ง และนักพัฒนากับซัพพลายเออร์ก็ยังคงส่งแอปเข้าไปอยู่ดี
เช่นโซเชียลเน็ตเวิร์ก แอปหาคู่ Reddit และ Stack Overflow ไม่ใช่บริการที่พึ่งพาประสบการณ์บนมือถืออย่าง Uber ที่ต้องติดตามตำแหน่ง หรือเกมมือถือที่ออกแบบมาให้เล่นระหว่างเดินทาง
ถ้าธุรกิจไม่ได้พึ่งพาประสบการณ์บนมือถือ ก็สามารถให้บริการได้โดยไม่มีแอปเนทีฟ
ผู้ใช้มือถือก็ยังเข้าผ่านเบราว์เซอร์มือถือได้ และแม้อาจไม่ใช่ประสบการณ์ในอุดมคติ แต่ก็ยังเป็นทางเลือก
ประเด็นสำคัญคือ ถ้าแพลตฟอร์มมือถือไม่ใช่สิ่งจำเป็นหรือไม่ได้เป็นสิ่งที่ธุรกิจพึ่งพา ก็ไม่ควรสร้างสำหรับแพลตฟอร์มนั้น
เมื่อหลายปีก่อนฉันเคยพยายามเรียนรู้ Swift และการพัฒนา iOS แบบเนทีฟอย่างจริงจัง แต่สุดท้ายก็ไม่อาจคุ้นเคยกับการใช้ Xcode ได้เลย
UI/UX ของ Xcode แย่มากจนแทบหาคำบรรยายไม่ได้ และต้องคอยเปิดปิดพาเนลอยู่ตลอดเพื่อกดไอคอนที่ไม่ได้จัดกลุ่มอย่างเป็นธรรมชาติ
พอเปิดพาเนลหนึ่ง อีกพาเนลก็มักถูกย่อโดยบังคับ และรู้สึกเหมือนหนึ่งในสิบของเวลาทั้งหมดหมดไปกับการ “ขับพาเนล”
ดูเหมือนว่านักออกแบบของ Apple อยากสร้าง IDE ที่สวย มินิมอล มากกว่า IDE ที่ทำให้นักพัฒนาทำงานได้ลื่นไหลโดยมีแรงเสียดทานต่ำ
แต่ IDE ไม่จำเป็นต้องมินิมอล และควรปล่อยให้นักพัฒนาแต่ละคนปรับแต่งหรือจัดวางให้รกได้เท่าที่ต้องการตามสิ่งที่กำลังสร้าง
ถ้าลองนึกถึงโต๊ะทำงานในโรงรถจริง ๆ Visual Studio จะให้คุณทำพื้นที่ทำงานให้รกและปรับแต่งได้ตามใจ แต่ Apple ให้ความรู้สึกเหมือนบังคับให้เก็บเครื่องมือชิ้นก่อนหน้าใส่กล่องทุกครั้งก่อนจะหยิบชิ้นถัดไป
นี่แหละคือความหมายของคำว่า “ขับพาเนล” ที่ฉันพูดถึง และก็สงสัยว่านักพัฒนาคนอื่นรู้สึกแบบนี้เหมือนกันไหม
คำว่าให้ความสำคัญกับรูปลักษณ์มากกว่าการใช้งาน ช่วยให้ฉันอธิบายได้เสียทีว่าฉันไม่ชอบอะไรใน Xcode
ฉันอยู่ใน ecosystem ของ JetBrains มานานกว่าสิบปี มันก็มีข้อเสียอยู่บ้าง แต่ไม่เคยรู้สึกเลยว่า JetBrains ไม่พยายามทำให้ IDE ทำงานในแบบที่ฉันต้องการ
แต่สิ่งที่ทำให้ฉันถอยห่างจากการพัฒนาแอปเนทีฟบนแพลตฟอร์ม Apple จริง ๆ คือการผสมกันของบั๊กกับเอกสารที่ไม่เพียงพอ
ตอนที่ใช้ครั้งล่าสุดเมื่อปีก่อน SwiftUI ยังไม่อยู่ในสภาพที่เหมาะกับจุดประสงค์ และแม้แต่ไลบรารีที่โตเต็มที่กว่าก็มักมีเอกสารน้อยมาก
ยังยากเลยที่จะรู้ว่าอะไรถูกเลิกใช้ไปแล้ว
สำหรับงานของฉัน ข้อดีของแอปเนทีฟจากมุมผู้ใช้เดิมทีก็มีน้อยอยู่แล้ว ส่วนใหญ่ก็แค่ที่เก็บข้อมูลภายในเครื่องที่เสถียรกว่า
ถ้าประสิทธิภาพการผลิตต่ำกว่าการทำเว็บแอปมาก ก็ยากจะหาเหตุผลมารองรับต้นทุนและความเสี่ยงเพิ่มเติมจากการต้องพึ่งความเมตตาของผู้ผูกขาดดั่งเจ้าผู้ครองอาณาจักร
Xcode ไม่ได้กวนใจฉันเลย แต่ Android Studio ที่สร้างบน IntelliJ ซึ่งใคร ๆ ก็ชื่นชม กลับทำให้หงุดหงิดอยู่เรื่อย
Visual Studio ก็คล้ายกัน คืออึดอัดและมีข้อจำกัดแปลก ๆ เช่นฉันไม่เข้าใจว่าทำไมถึงใช้ตัวเอียงกับการเน้นไวยากรณ์ไม่ได้
ตัวแก้ไขข้อความก็เหมือนกัน VS Code มีจุดเล็ก ๆ ที่น่ารำคาญต่างจาก Sublime Text หรือ TextMate
มันให้ความรู้สึกเหมือน IDE หนัก ๆ แบบสมัยก่อน ยิ่งยอมทำตามแนวทางของมันก็ยิ่งใช้ง่ายขึ้น แต่ขณะเดียวกันก็ยังรู้สึกว่าฉันไม่ได้เป็นฝ่ายควบคุม
ถ้า Apple ใส่ใจจริง ๆ ก็น่าจะทำให้มันลื่นขึ้นได้อย่างน้อยสักครึ่งหนึ่งของ VS Code ต่อให้ไม่ถึงระดับเดียวกันก็ตาม ซึ่งก็คงดีกว่าตอนนี้มาก
แค่การรองรับปุ่มลัดแบบ Vim ที่แย่มากก็ทำให้ฉันหงุดหงิดแล้ว เช่นแทบจะสั่งทำซ้ำการกระทำส่วนใหญ่ อย่าง
cหรือrไม่ได้ฉันไม่แน่ใจว่าตอนนั้นคุณใช้ SwiftUI หรือกำลังต่อสู้กับ storyboard ของ UIKit แต่แบบหลังนี่คือประสบการณ์ที่เลวร้ายที่สุดจนไม่อยากแนะนำให้แม้แต่ศัตรู
SwiftUI ยังอยู่ในช่วงเริ่มต้นและยังต้องขัดเกลาอีกมาก แต่เมื่อเทียบกันแล้วมันยังให้ความรู้สึกเหมือนอนาคต
ครั้งหนึ่งเมื่อก่อน เราจำเป็นต้องตั้งค่า บัญชีนักพัฒนา Apple เพื่อแสดงว่าแอปหนึ่งของเทศบาลเรานั้นเป็นของเรา
แอปอื่นไม่ต้องทำแบบนั้น ฉันก็ไม่รู้ว่าทำไม แต่ยังไงก็ต้องทำ และมันเป็นประสบการณ์ที่ค่อนข้างแย่มาก
ก่อนอื่นต้องมีบัญชี Apple และเพราะไม่อยากใช้บัญชีส่วนตัว ฉันเลยต้องสร้างบัญชีสำหรับงานขึ้นมาใหม่
ไม่สามารถสร้าง “บัญชีองค์กร” ได้ เลยถูกผูกกับตัวฉันในฐานะบุคคล และโชคดีที่มี iPhone เก่าที่กำลังจะปลดระวางอยู่เครื่องหนึ่งเลยใช้เครื่องนั้นได้
จากนั้นก็ต้องรอหลายวันให้ Apple ตรวจสอบตัวตนของฉัน ซึ่งในทางปฏิบัติก็คือ Apple โทรหาคนที่ฉันระบุว่าเป็นหัวหน้า แล้วให้คนนั้นยืนยันว่าฉันเป็นฉันจริง
ฉันอยากเชื่อว่าพวกเขาตรวจสอบอย่างอื่นมากกว่านั้น แต่ก็ไม่มั่นใจ และคนที่โทรมาก็พูดอังกฤษได้แย่กว่าเราเสียอีก อย่างน้อยก็เลยออกแนวขำ ๆ
ต่อมาก็ต้องตั้งค่าการชำระเงิน ซึ่งไม่รู้เหมือนกันว่าทำไมการมีบัญชีนักพัฒนา Apple ถึงต้องเสียเงิน
สำหรับงบรวมของเมืองที่มีประชากร 60,000 คน มันอาจเป็นเงินที่แทบมองไม่เห็น แต่เพราะเป็นค่าสมัครจากต่างประเทศ และ Apple ก็ไม่มีวิธีจัดการให้เป็นการซื้อแบบ B2B ที่ลงทะเบียนกับหน่วยงานภาษีท้องถิ่นได้ง่าย จึงถูกหยิบขึ้นมาทบทวนทุกปี
การจ่ายเงินก็ทำได้ด้วยบัตรเครดิตเท่านั้น และบัตรองค์กรก็ยังผูกกับบุคคลจริงอยู่ดี จึงต้องมีคนรับผิดชอบเรื่องการต่ออายุ
คนเราก็ย้ายงานกันได้ และถ้าจะเปลี่ยนเจ้าของก็ต้องให้ Apple ติดต่อกับคนจริง ๆ โดยตรง คุณคงเดาได้ว่ามัน “สนุก” แค่ไหน
แม้จะเป็นเรื่องเมื่อหลายปีก่อนและอาจเปลี่ยนไปแล้ว แต่จากโซลูชัน IT สำหรับองค์กรกว่า 300 รายการที่ฉันเคยแตะต้องมา ก็ไม่มีอะไรแย่เท่า Apple อีกแล้ว
เพื่อความเป็นธรรม ฉันเป็นนักพัฒนา เลยไม่รู้เหมือนกันว่าทำไมถึงได้มาทำเรื่องนี้ และในฝั่ง IT operations เรื่องแบบนี้อาจปกติกว่านี้ก็ได้
ยกเว้นเสียแต่ว่าคุณเป็นบริษัทยักษ์ใหญ่ในสหรัฐฯ ที่จัดการงานเอกสารพวกนี้ได้ง่าย
มันยังคงสุ่มอยู่ อาจผ่านได้ทันที หรือถ้าดวงซวยไปเจอบั๊กสุ่มในกระบวนการนี้ ก็อาจล้มเหลวอยู่เป็นเวลานาน
ไม่แน่ใจว่าเริ่มเมื่อไร แต่ไม่ใช่เรื่องที่เพิ่งเกิดขึ้นไม่นานนี้
บางครั้งก็ลืมไปว่าเดิมทีเว็บ/www เปิดกว้างแค่ไหน และเมื่อเทียบกับ “ระบบนิเวศของแอป” ที่ Apple และ Google ผูกขาดอยู่ในตอนนี้ มันยังเปิดกว้างกว่ามากโดยรวม
แน่นอนว่ามี “คลาวด์” อยู่ แต่ก็ไม่มีอะไรขวางไม่ให้คุณเช่าเซิร์ฟเวอร์แล้วโฮสต์ของของตัวเองโดยตรง
ถ้ามันไม่เวิร์ก ก็ย้ายออกแล้วไปเช่าเซิร์ฟเวอร์อื่นได้
มันอาจมีผลของการล็อกอินและอาจไม่ง่าย แต่ก็ไม่ใช่ว่าเป็นไปไม่ได้
แต่ถ้ามองทั้งระบบนิเวศของแอป ทางเลือกมีแค่ 2 ทาง และพูดตามตรงก็ขึ้นอยู่กับความเมตตาของพวกเขา
สำหรับผมคงไม่มีวันเอาธุรกิจทั้งหมดไปฝากไว้กับ “แอป” เพียงตัวเดียวแน่ ๆ
ถ้าผู้ใช้ต้องการจริง ๆ ก็อาจมีแอปเป็นช่องทางเสริมเล็ก ๆ ได้ แต่ก็แค่นั้น
ผมไม่ชอบสินค้าที่บังคับให้ต้องใช้แอปบนอุปกรณ์พกพา
แบบ
m.website.comกลับมาจะดีกว่า และผมอยากเลี่ยงทั้งระบบนิเวศของแอปไปเลยคุณอาจตกอยู่ในสภาพที่ต้อง “ไปอ้อนวอนขอความช่วยเหลือบนหน้าแรกของ HN” ข้ามคืน ด้วยเหตุผลใดก็ตามหรือไม่มีเหตุผลเลยก็ได้
ผมหวังว่ากระแส sideloading ใหม่ของ EU จะจุดให้เกิดข้อเรียกร้องแบบเดียวกันในสหรัฐฯ ด้วย แต่ก็รู้ดีเหมือนกันว่ามันจะเกิดขึ้นได้ก็ต่อเมื่อมีคนจำนวนมากพอที่รู้และสนใจว่าคำว่า “สวนปิด” หรือ “sideloading” หมายถึงอะไร
เว็บนั้นยอดเยี่ยมในทางทฤษฎี แต่สภาพแวดล้อมของเบราว์เซอร์ให้มาแค่ ขั้นต่ำพื้นฐาน เลยไม่ค่อยน่าดึงดูดในฐานะแพลตฟอร์มแอป ถ้าคุณคุ้นกับประสบการณ์พัฒนาแบบรวมทุกอย่างพร้อมใช้เหมือนบนแพลตฟอร์มของ Apple
บน macOS คุณสามารถพัฒนาแอปที่ทรงพลังและขัดเกลาอย่างดีได้ โดยมี dependency และ subdependency แค่นับนิ้วได้ หรือถ้าพยายามหน่อยก็อาจไม่ต้องมีเลย
แต่เว็บแอปที่เทียบกันได้กลับมี dependency เป็นหลักสิบถึงหลักร้อยเพื่ออุดช่องว่างของฟีเจอร์
ตัวอย่างเช่น ผมไม่เห็นเหตุผลเลยว่าทำไมเบราว์เซอร์ถึงไม่ควรมี list/table view พื้นฐานที่รีไซเคิลเซลล์ได้อย่างมีประสิทธิภาพ โดยไม่ต้องใช้ JavaScript เลยหรือใช้น้อยมาก
งานที่ต้องเลื่อนดูรายการหลักร้อยถึงหลักพันโดยไม่ให้เครื่องกระตุกหรือหน่วยความจำหมด ไม่ใช่เรื่องแปลกอะไร
AppKit, UIKit, SwiftUI, Android Framework, Compose และน่าจะรวมถึง Flutter ก็จัดการเรื่องนี้ได้ดีเป็นพื้นฐานอยู่แล้ว แต่บนเบราว์เซอร์กลับต้องดึงไลบรารีเข้ามาหรือเขียนโค้ดเองเพียงเพื่อฟีเจอร์พื้นฐานมาก ๆ แบบนี้
พอรวมเรื่องการจัดการแพ็กเกจและปัญหาเครื่องมือโดยรวมเข้าไปด้วย ปัญหารากเดิมก็ยังคงอยู่แบบดื้อด้าน แม้โซลูชันจะผลัดกันมาแล้วก็ไป
ผมก็เคยทำแอป iOS/iPad มาพอสมควรตั้งแต่ 15 ปีก่อน
ข้อดีของเว็บคือมักจะมีไลบรารีหรือเฟรมเวิร์กที่ตรงกับความต้องการอยู่แล้ว เช่น Electron
ฝั่ง Apple มักไม่มีไลบรารีดี ๆ และ SwiftUI ก็มีบั๊กเยอะเกินไป
React แค่ใช้งานได้ดี และในเชิงแนวคิดก็เรียบง่ายกว่า การทำ data binding สองทางเป็นความคิดที่ไม่ดี
Apple ดูเหมือนจะเชื่อว่าตัวเองกำลังทำให้ทุกอย่างง่ายขึ้น แต่ในความเป็นจริงบ่อยครั้งกลับทำให้ยุ่งยากและยากขึ้น
ตารางถูกเติมข้อมูลที่ต้องใช้และเรียงลำดับที่ถูกต้องมาจากเซิร์ฟเวอร์เรียบร้อยแล้ว
ดังนั้นจึงไม่จำเป็นต้องรีไซเคิลเซลล์และแถว และถึงจะมีหลายพันแถว ข้อมูลก็มีขนาดแค่ระดับ KB เลยทำงานได้ลื่น
เมื่อพิจารณาทางเลือกอย่าง WebAssembly และ Flutter ด้วยแล้ว การที่เบราว์เซอร์มีความสามารถพื้นฐานไม่พอไม่น่าจะเป็นปัญหาอีกต่อไป
ผมไม่คิดว่าคำพูดที่ว่านักพัฒนาไม่ได้ทำอะไรให้ Apple เลยจะเป็นเรื่องจริง
ถ้าไม่มีแอปจาก third-party บน iPhone Apple ก็คงขายโทรศัพท์ได้น้อยกว่านี้มาก
ในทางทฤษฎี แอปจำนวนมากอาจย้ายไปอยู่บนเว็บได้ แต่ถึงอย่างนั้นแอปจาก third-party ก็ยังทำให้ iPhone น่าครอบครองมากขึ้นอย่างชัดเจน
ถ้ามีการแข่งขันที่แท้จริง ผู้ผลิตระบบปฏิบัติการก็จะพยายามอย่างหนักเพื่อดึงดูดนักพัฒนา ลองนึกถึงวิดีโอ “developers developers developers” ของ Ballmer ในอดีตก็ได้
เพราะพวกเขารู้ว่านักพัฒนาเพิ่มคุณค่าให้แพลตฟอร์มและมีอิทธิพลต่อการเลือกของผู้บริโภค
ปัญหาในทุกวันนี้คือไม่มีการแข่งขันที่มีความหมาย
ไม่ว่ากฎของ Apple จะเป็นอย่างไร นักพัฒนาก็ต้องมีอะไรสักอย่างสำหรับ iPhone และ Apple ก็วางใจได้ว่าแทบไม่มีโอกาสที่แพลตฟอร์มมือถือรายที่สามจะตั้งหลักได้
Apple รู้เรื่องนี้ และก็พลิกสถานการณ์อย่างโหดร้ายด้วยนโยบายที่เข้มงวด
ทั้งที่นักพัฒนามีบทบาทอย่างมากในการทำให้ iPhone น่าครอบครอง Apple กลับเก็บภาษีจากรายได้ทั้งหมด โดยทำเหมือนว่าตัวเองกำลังมีพระคุณที่อนุญาตให้พวกเขาเข้าถึงลูกค้า iPhone ได้
นี่คือ การใช้อำนาจเหนือตลาดในทางที่ผิด และอย่างที่บล็อกนั้นบอกไว้ สิ่งที่พอจะทำได้มีไม่มากนอกจากแจกจ่ายผ่านเว็บ
มันไม่สมบูรณ์แบบ แต่ถ้าไม่นับการกำกับดูแล ก็แทบไม่มีทางเลือกอื่นที่มีความหมาย และ Apple ก็ไม่มีเหตุผลจะยอมปล่อยรายได้หลายพันล้านดอลลาร์จากการเก็บภาษีนักพัฒนาแอปไปเอง จึงจะใช้ทุกวิถีทางเพื่อหลีกเลี่ยงการกำกับดูแล
ผมหวังว่าเว็บจะมีพลังมากขึ้นในฐานะวิธีหลีกเลี่ยงกฎการแจกจ่ายแอปที่เอาเปรียบ
ทุกวันผมคิดถึงว่าเว็บยอดเยี่ยมแค่ไหน และน่าเสียดายเพียงใดที่ Apple พยายามทำลายเว็บให้ได้มากที่สุดเท่าที่จะทำได้ โดยผลักให้นักพัฒนาสร้างแอป iOS แทนเว็บแอป
ถ้าไม่มี App Store เว็บคงดีกว่านี้มาก
คงมีความหลากหลายมากกว่านี้ทั้งในการเสพคอนเทนต์ แหล่งที่มาของโซเชียลมีเดีย คำแนะนำจากอัลกอริทึม และประสบการณ์ดิจิทัล
เว็บทำงานได้ทุกที่ และยังมี API ที่ยอดเยี่ยมมากมายสำหรับสร้างแอปแบบ immersive/next-gen อย่าง WebXR
แต่ถ้ามีคนสร้าง แอป WebXR บนเว็บไซต์ของตัวเองแล้วขายแบบเสียเงิน Apple ก็ไม่ได้อะไรจากมัน ดังนั้น Apple จึงไม่มีวันโปรโมตเว็บแอปแบบนี้
ในระยะยาว เว็บจะไม่ตาย บริษัทต่าง ๆ เข้ามา ตักตวงผลประโยชน์ แล้วก็จากไป แต่เว็บจะไม่ตาย
Apple มี API หลายพันตัวที่ช่วยให้พัฒนาแพลตฟอร์มได้ง่ายขึ้น สร้างภาษาการเขียนโปรแกรมของตัวเองที่ผสานกับแพลตฟอร์มได้ดี และยังมี IDE แบบบูรณาการเต็มรูปแบบที่ทำงานร่วมกับทั้งสองอย่างนั้นด้วย
ใช่แล้ว “เพื่อน” พวกเขาไม่สนใจคุณหรอก เว้นแต่ว่าคุณจะพัฒนาเพื่อแพลตฟอร์มของพวกเขา
แล้วจะไปโทษใครได้ล่ะ? สิ่งที่กล่าวมาข้างต้นล้วนเป็นการลงทุนที่แพงมากและใช้เวลานาน
ฉันเคยพยายามพัฒนาแอปบน macOS โดยไม่ใช้ Swift และเครื่องมือของ Apple แล้ว มันทรมานมาก
พวกเขาเลิกใช้และตรึงเวอร์ชัน OpenGL แบบที่แทบอธิบายอย่างอื่นไม่ได้นอกจากต้องการดันเครื่องมือของตัวเอง
แค่จะโหลด external DLL สักตัวก็แทบเป็นไปไม่ได้
อะไรก็ตามที่เป็น cross-platform ต้องถูกดึงลงมาอยู่ในระบบเครื่องมือของ Apple เช่นการแปลง Vulkan เป็น Metal
macOS เป็นกรณีที่แปลกและเฉพาะทางยิ่งกว่าดิสโทร Linux ทั้งหมดเสียอีก
พอเห็นว่า Windows พัฒนาง่ายแค่ไหนแล้วก็น่าประหลาดใจ ฝั่ง Microsoft แทบทั้งหมดเป็น cross-platform
ในสิ่งที่พูดถึงเกี่ยวกับ Apple ไม่มีอะไรที่ช่วยให้ทำงานแบบไม่ยึดติดกับแพลตฟอร์มได้เลย
ตรงกันข้าม Windows แม้จะรองรับเทคโนโลยีของตัวเองอย่าง DirectX แต่ก็ยังยอมให้รัน Vulkan, OpenGL ฯลฯ ได้โดยตรง
แต่การที่ผู้เขียนเข้าไปทำงานกับแอปเพลงนี่มีนัยสำคัญ API ด้านเสียงของ Apple นั้นยุ่งเหยิงสุดๆ
ทั้ง Media Player, AVPlayer, Core Audio, AVFoundation, AVAudioEngine และอีกมากมาย ดูเหมือนเป็นไลบรารีจากทีมที่แข่งกันเองซึ่งย้อนไปได้ถึงยุค NeXT และบังเอิญว่าทั้งหมดรอดมาถึงยุค iPhone
ช่วงล็อกดาวน์ COVID ฉันใช้เวลาไปราวสามเดือนพยายามทำ Shoutcast/Icecast player แล้วมันทรมานจริงๆ
พวกเขาทำให้การเขียนโค้ด native แบบ cross-platform ที่รันบน iOS กลายเป็นสิ่งที่แทบเป็นไปไม่ได้ และทำทุกอย่างเท่าที่จะทำได้ภายใต้ข้อจำกัดทางการเมืองเพื่อไม่ให้เว็บแอปมาแข่งกับ native app ได้
ชอบท่าทีที่ผู้เขียนมีต่อบริษัทใหญ่แบบมีสุขภาวะดี นี่คือทักษะการเอาตัวรอดพื้นฐานในยุคนี้
ถ้าเลือกได้เอง ฉันก็อยากไม่ต้องติดตั้งแอปอะไรเลยบน iPhone หรือ iPad แต่ข้อจำกัดของแพลตฟอร์มทำให้ในทางปฏิบัติมันจำเป็น
ฉันเห็นเว็บแอป X/Twitter บน Safari เล่นวิดีโอไม่ได้ ทั้งที่ปิด Lockdown Mode สำหรับ X ไปแล้วก็ยังเป็นอยู่
อยากรู้ว่านี่เป็นความผิดของ Apple ที่ทำให้แพลตฟอร์มไม่สอดคล้องกัน หรือเป็นความตั้งใจของ X ที่อยากบังคับให้ผู้ใช้ติดตั้งแอป
ฉันเชี่ยวชาญด้าน deep learning และ LLM แต่ก็สนุกกับการพัฒนาเว็บมาโดยตลอด
สิ่งที่ฉุดไว้คือเครื่องมือมันซับซ้อนเกินไป
แต่ก็มีคนที่ฉันรู้จักเขียนถึง ClojureScript + Dart เยอะมาก เลยคิดว่าอาจจะลองดู
อยากหาเว็บแอปสแตกที่เรียบง่าย เรียนได้ภายในไม่กี่วัน และมีการซัพพอร์ตที่ดี ถ้ามีคำแนะนำก็คงดี
ส่วนสำคัญมากของการพัฒนาเว็บคือการรู้จักเบราว์เซอร์ให้ดี และ web.dev เป็นแหล่งข้อมูลที่ยอดเยี่ยม
จากนั้นก็ไปเรียน React + TypeScript ได้เลย ส่วน react.dev เวอร์ชันใหม่ก็ทำได้ดี
React ไม่ได้สมบูรณ์แบบ แต่ในฐานะกระบวนทัศน์สำหรับสร้าง UI มันดีมากเสียจน Apple ยังเอาไปเป็นแบบอย่างตอนสร้าง SwiftUI
หยิบ Vite ขึ้นมาแล้วเริ่มเขียนโค้ดได้เลย
สิ่งที่อยากแนะนำที่สุดคือศึกษาข้อมูลเหล่านั้นให้จริงจัง ต้องเริ่มจากหน้าแรกของเอกสารแล้วค่อยๆ ตามไปจนจบ
แต่สิ่งที่เรียนได้ภายในไม่กี่วันนั้นมีไม่มาก งานฝั่งฟรอนต์เอนด์มันยากด้วยเหตุผลที่สมควรแล้ว