Static Lib

ห่างหายจากการเขียน tutorial ไปนานพอสมควร เมื่อวันก่อนมีคนมาถามผมใน Forums ว่าสร้างและใช้ Lib อย่างไร วันนี้เลยเขียน Blog เลยดีกว่า สำหรับใครที่ยังไม่รู้ว่า Static Lib คืออะไร ผมอธิบายง่ายๆว่ามันคือ การรวมชุดคำสั่ง เข้าไว้ด้วยกัน อาทิเช่น เราเขียนโปรแกรมคำนวน ด้วยสูตร ต่างๆที่ซับซ้อน และเราก็ต้องการใช้สูตรเหล่านี้ กับโปรแกรมอื่นๆ วิธีการก็คือ copy code มาแล้วก็ paste ลงไป ซึ่งมันก็ไม่สะดวก เพราะบางที code มันมีหลายพัน บรรทัด เราจึงเขียนมันออกมา เป็น Library และข้อดีของ Library คือหลังจากการ Compile ไปแล้ว เราสามารถให้คนอื่นเอาไปใช้ต่อ โดยที่ใช้แค่ .h และ lib เท่านั้น ตัว Source ไม่ต้องเอาไป

วันนี้สิ่งที่จะเขียนกันก็คือ Library ง่าย เอาละครับ ลงมือกันเลยดีกว่าเพื่อเป็นการไม่เสียเวลา

Static Lib Project

ก่อนอื่นเลยเราสร้าง Project ใหม่ขึ้นมาให้ชื่อว่า MyLib โดยเราเลือก Project Template ให้เป็น แบบ Static Library ดังรูป

static1

หลังจากนั้นก็จะเห็น Project ประมาณดังรูป

static2

จะเห็นว่า Project นั้นไม่ได้ให้ File อะไรมามากมาย เท่าการสร้างโปรเจคแบบอื่นๆเลย เอาละ ! ลำดับต่อไปคือ เพิ่ม Class เข้าไปยัง Project ของเรา  โดยผมให้ชื่อว่า MyClass  หลังจากเพ่ิม Class เข้าไปแล้วก็จะเห็น File เข้ามาดังรูป

static2-1

ต่อไปเราก็จะเขียน Code กัน

ในส่วนของ implement ก็มี code ง่ายๆดังนี้

จาก code ข้างบน คือ ผมมี Class ที่ชื่อว่า MyClass โดยมีฟังก์ชั่น ที่ชื่อ sayHello แค่ฟังก์ชั่นเดียว โดยในฟังก์ชั่นนี้ก็คือ ส่งคำว่า Hello World กลับมานั่นเอง

หลังจากนั้นก็ Compile ครับ เมื่อ Compile แล้วจะเห็น LibMyLib.a ดังรูป

static3

ลำดับต่อไปคือ เอามาใช้  การที่เราจะเอา Lib มาใช้นั้นสิ่งที่ต้องการมีอยู่สองอย่างครับคือ

  • Compile Lib ( File นามสกุล .a )
  • Header ( File นามสกุล .h )

จากรูปข้างบน จะเห็น path ของ lib ที่เราสร้างขึ้นมาครับ เราก็ไป  copy เอามาไว้ยัง Folder ใหม่ พร้อมกับ File .h

static6

ส่วนไฟล์อื่นๆ หลังจากการ Compile แล้วก็ไม่จำเป็นครับ

ต่อไปคือสร้าง โปรเจคที่ใช้งาน Lib ของเรา

Say Hello Project

เราก็สร้างโปรเจค ขึ้นมาใหม่ ผมตั้งชื่อว่า DemoLib เป็นแบบ View Base ดังรูป

static4

เมื่อเราสร้างเรียบร้อยแล้ว ต่อไปคือ เอามาใช้ .. สิ่งที่ต้องทำต่อไปคือเอา 2 Files ที่ได้จากโปรเจค แรก เข้ามายัง โปรเจคใหม่ โดยกด Click ขวาที่โปรเจค แล้วก็เลือก Add ครับดังรูปครับ

static5

เมื่อกด Add >> Existing Files …  แล้วจะเห็น หน้าต่างดังรูป ที่ผม ได้ขีดเส้นไว้คือ ถ้าหากเราเลือก option นี้มันจะ copy file มายังโปรเจคของเราเลย อันนี้ก็แล้วแต่สะดวกนะครับ ว่าจะให้มัน copy file มาหรือไม่ต้อง

static7

เมื่อเสร็จเรียบร้อยแล้ว ก็จะเห็นว่ามี File เข้ามายังโปรเจคของเราแล้ว ดังรูป

static8

ต่อไปครับ ลงมือเขียน code กัน

โดยที่โปรแกรมที่เราจะเขียน ก็ง่ายๆครับ คือกด ปุ่ม แล้วให้ Lable มันเปลี่ยนเป็นคำว่า Hello World เท่านั้นเอง

จาก ข้างบนเราประกาศ Outlet แค่ UILabel กับ Action ที่ชื่อ clickSayHello

ส่วน implement นั้น จะสังเกต เห็นว่าเรา ได้เรียนใช้ [MyClass sayHello]; ซึ่งเป็น Library ที่เราได้สร้างมานั่นเอง โดยที่ฟังก์ชั่นนี้ก็คือ ส่ง String กลับมาเป็นคำว่า Hello World นั่นเอง
และสุดท้าย ก็ออกแบบหน้าตาของโปรแกรมด้วย interface builder ครับ แล้วเราก็เชื่อม Action/ Outlet ให้เรียบร้อยดังรูป

static9

เท่านี้ก็เป็นอันเสร็จแล้ว เมื่อเรา compile / run ก็จะเห็นหน้าตาโปรแกรมดังรูป เมื่อกด Say Hello คำว่า Label ก็จะเปลี่ยนเป็นคำว่า Hello World ครับ

static10

สำหรับวันนี้ ก็เป็น tutorial ง่ายๆ แต่รับรองว่า มีประโยชน์ แน่ๆครับ ติชม ยังไง ก็ เม้นกันมาได้ครับ

Apple Pro day 2009 : Bangkok

เมื่อวาน ผมได้ไปร่วมงาน Apple Pro day’09 ที่โรงแรม Intercontinental Bangkok วันนี้เลยมาสรุปงานให้ฟังสำหรับคนที่พลาดโอกาส และอยากรู้ว่า งานมันมีอะไร

งานนี้แบ่งออกเป็น 3 ห้องครับ คือ

  • iPhone developer
  • Logic Pro
  • Final Cut Pro

สำหรับใครลงทะเบียนอะไรไว้ก็เข้าห้องไปตามนั้น งานเริ่มตั้งแต่ 13.00 ผมก็มาถึงเวลา 13.10 โดยประมาณ ก็ลงทะเบียนก่อนเลย

IMG_0028

ตอนลงทะเบียนก็ไม่ได้ใช้อะไรมาก ( ปล. สาวๆหน้า counter หน้าตาดีกันหลายคน ) แค่บอกชื่อไปก็โอเคละ หลังจากนั้นก็รองานเริ่มครับ ก็เริ่มประมาณ 13.30 ก็ไม่พูดพร่ำอะไรให้ยาวมาก พิธีการบอกว่า จะมีคนพูดสองคนคือ Benjamin กับ Lee สำหรับ Benjamin นั้นมากจาก Apple ส่วน Lee เค้าเป็น iPhone Developer

IMG_0030

สรุปหลักๆที่ Benjamin ได้พูดก็คือ

  • เค้าบอกว่า iPhone นั้นเป็นตลาดที่ใหญ่มาก
  • และกล่าวถึงว่า iPhone มีความสำคัญอย่างไร
  • เค้าพูดถึง web และการ optimize ให้มันสามารถอ่านได้ง่ายขึ้นใน iPhone และการใช้ tag ต่างๆช่วย
  • การพัฒนาโปรแกรมบน iPhone ทำได้ 2 วิธีคือ
  1. Web App โดยใช้ Dash Code
  2. Native App โดยใช้ XCode

แล้วเค้าก็ Demo ให้ดูครับว่า การใช้ Dash Code นั้นง่ายขนาดไหน โดยส่วนตัวผมไม่เคยใช้ Dash Code นะครับ แต่เท่าที่ดูจาก Demo แล้วคิดว่า น่าจะง่ายสำหรับ คนที่เขียน web app มาก่อน เพราะว่าลูกเล่นต่างๆ ทั้ง effect นั้นทำได้ง่ายมาก

ข้อดี Web App คือ

  • มัน update ตลอดเวลา
  • ไม่ต้องรอการ Approve จาก Apple
  • ไม่ต้องรู้ภาษา Objective-C เพราะมันเป็น HTML + Java Script
  • Dash Code เครื่องมืออันทรงพลัง ทำให้มันง่ายมากๆในการเขียน web app สำหรับ iPhone
  • ทำ multi-touch ก็ได้นะ

ข้อจำกัด

  • แน่นอนว่ามันไม่มี Hardware Feature อย่างเช่น camera , corelocation
  • ต้องต่อ internet ตลอดเวลา
  • อีกข้อผมเพิ่มเติมให้คือ .. จะขายโปรแกรมแบบ App Store ก็ไม่ได้ …

หลังจาก Benjamin พูดจบลำดับต่อไปก็คือ Coffee Break กัน

IMG_0031

คนเยอะมากๆ ของว่างก็พวก ขนม ผลไม้ กาแฟ ชา อะไรก็ว่ากันไป หลังจากเสร็จแล้วก็เป็นคิวของ Mister Lee.

IMG_0032

ระหว่างรอ คุณ Lee เค้าก็เปิด VDO เกี่ยวกับ iPhone Dev ให้ดู ( จากความรู้สึกผมคิดว่า VDO เค้าทำออกมาได้ดีทุกอันเลย ดูแล้วกระชับ และได้ใจความ พร้อมกับ inspiration ) หลังจากจบ VDO คุณ Mister Lee ก็เดินเข้ามาบรรยายต่อ

IMG_0033

มีพูดกัด Benjamin เล็กน้อยเกี่ยวกับ การพัฒนา Native App เค้าก็ถามว่าคนร่วมงาน ใครมี App ของตัวเองบน App store บ้าง เท่าที่ผมเห็นยกมือ ก็มีประมาณ 3-4 คนจากร้อยกว่าคน คนมาร่วมงานส่วนมากมาจาก java และ .net สิ่งแรกที่ Lee แนะนำสำหรับ .net java programmer เมื่อเริ่มเขียน iPhone คือ ลืมพวก Syntax หรือการเขียนโปรแกรมในแบบ java และ .net ออกจากหัว แล้วก็เรียนรู้สิ่งใหม่ๆ

สรุปว่า

  • Native App มันมีข้อดีอย่างไร เครื่องแรง อะไรก็ว่ากันไป
  • แสดงให้เห็นว่าการใช้ XCode นั้นง่ายแค่ไหน
  • ยอด Download App ตอนนี้อยู่ที่ 1.5 Billion ครั้ง เค้าก็บอกว่า ถ้าเราขาย App ละ บาท แค่คนโหลดล้านคนก็ล้านบาท
  • Demo การใช้งาน Multitouch , CoreLocation
  • พูดทาง Technical ค่อนข้างเยอะ ผมเห็นบางคนหลับก็มี !!!

จากการไปงาน Apple Proday 2009 ครั้งนี้ ผมขอสรุปในความคิดเห็นของผมว่า

  • งานไม่ค่อยมีอะไรน่าตื่นเต้นเลย อาจจะเป็นเพราะว่า ผมรู้เรื่องมาก่อนแล้วก็ได้
  • Web App น่าจะง่ายสำหรับหน่วยงาน บริษัทที่มี web app เป็นของตัวเองอยู่แล้ว
  • จาการพูดคุยกับคนในงาน พบว่าคนสนใจเขียน iPhone เยอะมากๆ และส่วนมากมักจะติดเรื่องของ 99$ ว่าทำไมต้องจ่าย จ่ายแล้วคุ้มไม๊
  • Programmer ส่วนมากไม่ค่อยอยากจะเรียนรู้ภาษาใหม่ อย่าง android ถ้ารู้ java มาก็สบาย ถ้า windows mobile ก็ vb.net , C# , C++ ในขณะที่ iPhone แหกคอกมาเป็น objective-c
  • กำแพงของการพัฒนา iPhone อีกอย่างคือ Mac  ก็เหมือนกับข้อข้างบน หลายคนล้มเลิกไปเพราะเหตผลที่ว่าไม่มีเครื่อง Mac

สำหรับตัวผม ถ้าหากจัดงานครั้งหน้า ผมคาดหวังว่าจะได้เห็นคนไทยที่ประสบความสำเร็จกับ App Store ได้เป็นคนพูดมากกว่าฝรั่ง ผมอยากได้ประสบการณ์และแนวคิดของคนเหล่านั้นมากกว่าเทคนิคการเขียนโปรแกรม ซึ่งหาอ่านได้จาก document อยู่แล้ว