2019年12月21日 星期六

用C#開發 LINE Bot (34) - 以.net core控制LINE Bot發送Push訊息

接續著上一篇介紹如何用 .net core的WebAPI來建立 LINE Bot WebHook,這一篇我們介紹如何使用 .net core的 razor page web app來建立發送(push)訊息的LINE Bot。

請先確定你使用的是.net core 3.0以上(建議3.1)的版本:

接著透過『dotnet new webapp -n test01』指令,來建立一個新的WebApp:

建立完成之後,別忘了先透過CD test01指令切到專案所在的資料夾,然後我們用底下指令,來安裝幾個套件:
dotnet add package isrock.web.core.razor
執行結果如下:

接著是重要的步驟,請利用底下指令,安裝我們在nuget上的linebot範本:
dotnet new --install isRock.Template.LineBotPush

成功執行之後,請繼續執行底下指令: dotnet new LineBotPush

你會看到該範本的程式碼已經加入我們專案中了,接著,我們用 『code .  』指令來開啟vs code:

你會看到專案中已經有我們寫好的範例程式碼。現在已經可以執行了。

請在VS Code的終端機中,用dotnet run執行這個WebApp:

開始運行之後,你就可以在瀏覽器中,以 https://localhost:5001/__samplelinebot 網址來執行該頁面:

您可以在上面這個頁面中,輸入channel access token, user id…等資訊,當然還有要傳送的訊息,按下Push即可發送訊息。

程式碼相當簡單:

詳細的操作影片可以參考底下:

-----------

線上課程:https://www.udemy.com/line-bot/
最新實體課程:http://www.studyhost.tw/NewCourses/LineBot
電子書:http://studyhost.blogspot.tw/2017/12/line-bot.html 
實體書:https://www.tenlong.com.tw/products/9789865022662?list_name=srh
LineBotSDK:https://www.nuget.org/packages/LineBotSDK
如果需要即時取得更多相關訊息,可按這裡加入FB專頁。若這篇文章對您有所幫助,請幫我們分享出去,謝謝您的支持。

2019年12月8日 星期日

用C#開發 LINE Bot (33) - 以.net core 3.1在30秒內建立WebHook

習慣使用.net framework的開發人員可能會覺得,用.net core開發LINE Bot比起傳統的.net要難上一些,甚至覺得沒有Visual Studio好像總是不很方便。倘若告訴你,其實使用 .net core開發LINE Bot要比傳統 .net 快得多,信不信?

底下就挑戰一下如何在安裝好 .net core 3.1的環境中30秒內建立一個 LINE Bot WebHook囉。

首先, 在命令列使用底下這行指令可以幫你建立一個空的WebAPI專案:

dotnet new webapi -n test01

然後切換到 test01 這個資料夾中。
cd test01

接著執行:
dotnet add package LineBotSDK

上面這行指令會幫你剛才建立好的WebAPI專案添加最新版的LineBotSDK套件。

接著,請執行底下這行:
dotnet new --install isRock.Template.LineWebHook

上面這行指令如果成功執行,系統會從網路上下載一個範本套件,安裝到你的開發環境上,上面這行指令只需要執行一次,除非套件有更新,否則以後就毋須重複執行。

正確的執行完畢之後,接著你就可以執行底下這行指令:

dotnet new linewebhook

上面這行指令會為你的WebAPI專案,添加一個LineWebHook範本程式碼,完成後顯示如下:

這時候,你可以在命令列下 code . 以visual studio code開啟剛才建立好的專案:

開啟Visual Studio Code後,你會發現剛建立好的WebAPI專案中,已經包含一個預先寫好的LineWebHookController.cs,這是透過前面 dotnet new linewebhook 這行指令產生的:

接著,您只需要將程式碼中第21行的ChannelAccessToken換成你LINE Bot的ChannelAccessToken,將16行的AdminUserID換成你的Admin User ID就完成囉。

哇啦,你的.net core 3.1版LINE WebHook寫完了。碼表停止。

要不要挑戰看看?你能不能在30秒內完成?嚴格說起來,指令只有底下幾行:

dotnet new webapi –n [專案名稱]
cd [專案名稱]
dotnet add package LineBotSDK
dotnet new linewebhook

改成以.net core搭配CLI開發,雖然你必須知道一些指令,但熟悉後整體的流暢度可能會比使用IDE快上不少,在隔壁同學的Visual Studio 2019還在啟動畫面時,你的WebHook已經可以run了說…

 

而且,還是可以跨平台運行的呢~

-----------

最新實體課程:http://www.studyhost.tw/NewCourses/LineBot
線上課程:https://www.udemy.com/line-bot/
電子書:http://studyhost.blogspot.tw/2017/12/line-bot.html
LineBotSDK:https://www.nuget.org/packages/LineBotSDK
如果需要即時取得更多相關訊息,可按這裡加入FB專頁。若這篇文章對您有所幫助,請幫我們分享出去,謝謝您的支持。

2019年12月2日 星期一

LINE Developer Day 2019 現場筆記 (三) – LINE Bot 與 DevOps


前面提過,LINE是一家非常熱愛Open Source的公司,諸多的solutions中,十有八九是藉由純Open Source技術來實現的,你很少很少很少看到其他軟體大廠的服務在LINE出現。也因此,當我在議程表當中,看到有Microsoft相關的場次時,不由得眼睛一亮,身為MVP,說什麼我也得前往瞧瞧…

議程表當中,共有兩個與Azure有關的場次,一場是由Kenichiro Nakamura分享的How to optimize bot development lifecycle with DevOps(這場非常有意思,我待會說),另一場則是Ayako Omori的Developing chatbot with Cloud 101 for LINE account auto-reply,兩場都是純日文演說,我也都硬著頭皮參加了。

Bot Framework

Ayako Omoris那一場是少數沒有英文即時翻譯的日文演說,導致我基本上是完全聽不懂講者在說什麼,不過,我卻大致可以掌握整場的內容。很矛盾? 一點也不。

因為內容是我非常熟悉的Azure Cognitive Services與Bot Framework,我發現技術語言是跨國籍的,我雖然完全聽不懂講者的日文,但只看Demo和操作,基本能夠掌握八成左右(所以如果讀者想去國外工作,大可不用過度擔心語文的問題),講者除了大致完整的介紹了MS Bot Framework與LINE Bot如何整合,還有如何使用LUIS和QnA Maker服務,這些過去我在書籍線上課程中大致也都有介紹,講者能在幾十分鐘的時間內把這些內容都塞進去,也算是不容易了。

除此之外,她也提到了MS最近釋出的BotFramework-Composer(這就是個新玩意了):

Bot Framework Composer是一套open source的Chat Bot設計工具,可以讓你用視覺化的方式來建立Chat Bot。除了支援上圖這樣的所視及所得對談設計界面,也支援LUIS和QnA Maker,讓設計人員可以自由的使用這些雲端服務並整合在Bot當中,雖然目前還只是預覽版本,但未來頗值得期待。我知道台灣坊間也不乏這樣的工具,但掛著微軟的招牌,加上又是open source,背後有MS Bot Framework撐腰,又有自然語言語意分析加持,其前景很讓人看好。

開發Chat Bot的DevOps自動化

另一個與微軟有關的場次是由Kenichiro Nakamura介紹的How to optimize bot development lifecycle with DevOps,講者是MS的開發人員,同時也是LAE:

主題的內容是開發Bot時的DevOps。

開發Chat Bot也需要DevOps? 當然,在這個時代不管開發麼甚麼,都需要DevOps,Chat Bot當然也是。講者談到了Chat Bot的開發其實更需要DevOps,特別是我們常常有正式、測試環境、為了讓LINE Bot的開發與測試更順暢,一般來說,我們在開發一個LINE Bot時,會特別建立2-3個LINE Bot Account,分別將其設定成Dev/UAT/Production環境。

而Azure WebApp的好處就在這邊體現了,我們可以透過WebApp的Slot機制來做不同的環境佈署。當我們建立了WebApp後,對該WebApp分別建立額外的Dev or UAT Slot,然後針對不同的Slot配置環境參數:

其實這個做法,基本我們在Azure Web App上幾乎是天天上演,算的上是開發Chat Bot的best practice了。然後,再搭配Azure DevOps,來實現自動化CI/CD:

只要在MS的世界中談到DevOps,那毫無懸念的就是採用Azure DevOps,然後LINE Bot的開發可以採用WebApp(不管是Linux based或是Windows based),以Slot切分出Dev/UAT/Production環境,搭配Azure DevOps的Release Management自動化佈署與簽核功能,在開發人員有任何修改後,自動上版到Dev/UAT環境,待UAT環境的測試人員確認無誤後,可以在portal上按下Approve鈕(上圖右),就繼續自動上版到Production環境。

這個在MS世界中幾乎算是理所當然、生來就有的流程,在Open Source世界多少還是需要一些環境上的配置,但Azure雲端服務搭配Azure DevOps,基本可以近乎自動的實現上面所有的流程。

有趣的Bot

對我來說,前面介紹的那些不算是特別新鮮的內容,但這位講者一上場,立即就吸引了我的目光…原因是,他帶來了一隻非常有意思的Bot。

開場的第一張投影片,他先請大家掃QR Code加一隻LINE Bot為好友,這隻Bot可以幹嘛呢? 它可以索取當前的投影片:

這是一隻有著Rich Menu的LINE Bot,按下該LINE Bot的Rich Menu,就可以下載講者當前螢幕上撥放的投影片!!!

這有意思,這樣大家就不用拍照了啊~

這對講師超級有用的!

為甚麼呢? 每次我在上課,總是會看到許多學員在底下拍照,可能是覺得某一張投影片相當精彩,所以想要拍照存證留念,但我自己也會坐在底下當學員,這樣拍照出來的品質我清楚的很,有時候實在慘不忍睹。

而且,不是每一個講者都會在會後立即釋出投影片,特別是我,我上課的投影片常常是幾百張裡面的幾十張。因為我會把同樣的主題放在一個.pptx檔案裡面,然後看不同的課程就挑其中一小段來講。因此,我不是很方便把整份投影片都給學員。

但學員常常需要做筆記或是從投影片上摘錄重要的資訊啊,怎麼辦呢? 這就是你常常看到學員在底下拍照的原因了。

現在有了這支Bot超讚的啊。

你只要在台下打開手機,眼睛盯著台上的螢幕,喜歡哪一張投影片,就立即在手機上按一下,那一張投影片就會自動下載到你的手機裡,超完美的啊。我看到這支Bot之後立刻被吸引,第一時間就給他安裝了起來,不過…

開場前10分鐘還可以用…後來似乎就…掛了。

發生了什麼事情嗎? 當下我不知道,但不管如何,這個Bot太讓人驚艷了,我立刻下定決心,我回台北之後要自己做一個出來玩。

發生了什麼?

後來,我跟講者聯繫上,請教了他是怎麼實現這個Bot的。他告訴我,基本上是採用了MS Office的VSTO開發技術,透過設計一個外掛(Add-Ins),在PowerPoint的 “下一頁” Event上,做一些動作,把當前的投影片位置提供給Bot的WebAPI(底下是講者blog上的介紹):

而到底當下究竟發生了什麼? 導致現場Bot有問題的呢? 這個故事你可以看底下講者的Blog,有現場報導般的說明:

在LINE Developer Day 2019通過LINE bot分發PowerPoint幻燈片的故事

你會發現,這個故事的主角不僅僅是這支Bot,還包含了講者開發這支Bot的過程,以及他如何使用Azure DevOps做開發的版控與rollback,是個非常精彩的故事。

這整個故事讓這場研討會變的很有意思,講者用自身的LINE Bot開發DevOps經驗,來講在開發LINE Bot時候DevOps扮演了如何重要的角色。不只是過程吸引人,產出的Bot也非常吸引人…

後記

從看到那隻Bot的那一天開始,一直到我回台灣,我始終對那隻LINE Bot念念不忘。終於,我找了一個周末的下午,在自己的環境重新開發了一隻類似的Bot,我改變了做法,在PowerPoint的VSTO當中,Hook 投影片播放的下一頁事件,在該事件發生時,再抓取當前的投影片,然後以非同步的方式上傳到Imgur圖床,並且把該位置丟給LINE Bot的WebAPI。

此時,只要有任何用戶按下Rich Menu上抓取當前投影片的按鈕,LINE Bot就會將該圖片下載到用戶手機上,完成當前投影片下載的任務…

哈,非常完美,下一次,換我帶給學員surprise~

LINE Developer Day 2019 現場筆記 (一) - 看見LINE、開發者、未來
LINE Developer Day 2019 現場筆記 (二) - 關於LIFF的改變與未來

2019年11月25日 星期一

LINE Developer Day 2019 現場筆記 (二) - 關於LIFF的改變與未來

我在現場看到LINE日籍講師使用 VS Code作為主要的開發工具,還頗讓人驚豔的

緣起

前陣子,LINE推進了LIFF這個框架來到 v2的版本,v1到v2是一個很大的改變,一般來說,我們改變主版號(from 1 to 2)意味著新釋出的版本將跟前一版有著不相容性,也就是一個重大的breaking changes,也確實,v2版本增加了很多亮眼的新功能,像是QR Code掃描、外部瀏覽器支援…等。

還不只如此,LINE 11/11發布了一個我認為很重大的消息:

Users can no longer add LIFF apps to Messaging API channels

看到這個消息的第一眼,我只有一堆問號…,WHY? 為何LIFF 2未來只能從LINE Login新增LIFF,為何將要取消過去LIFF綁在Bot(Messanging API)身上的方式???

我相信不只我有這個疑惑,很多熟悉LIFF的開發人員也是。我心裡始終帶著這些問號,來參加了今年的LINE Developer Day,當然,我希望能找到答案。

LIFF的改變

在Day 2關於LIFF的場次中,講師不免俗地把LIFF的歷史交代了一下:

其實從v1到v2也不過就是一年的時間,但重點當然不是歷史啊,重點是改變。到底有那些改變呢? 那得看當前的LIFF有些什麼:

上面這三張看似平淡無奇的投影片,其實是接下來講者埋的梗,我得說,後面看到差異的時候,是頗讓人興奮的。上面第一張投影片的Easy Development是理所當然,LIFF可以透過純HTML方式開發,且運行上是無需伺服器端的,但我們也知道,當前的LIFF只能運行在LINE的WebView環境,即便是開發方式和一般的HTML頁面相同,你還是會碰到像是開發階段難以debug之類的困擾。

是的,v1的LIFF是很難偵錯的,因為你必須在手機環境上(LINE的內部WebView)才能執行。我忍不住直接破梗好了,講者在最後ending的時候,上面第一張slide變成了:

with LIFF v2,你可以在手機的外部瀏覽器上運行,這也表示,你有機會可以在一般的瀏覽器上進行開發和除錯。對,你沒聽錯,過去非得在手機裡測試偵錯的時代即將過去了,當你用LIFF v2架構開發搭配SDK,基本上你的開發根本就像是一個純Web Application(只是這個App可以取得用戶的LINE身分,可以在手機上透過LINE與用戶互動)…

這甚麼道理呢? 請看…

因為LIFF 2本質上做了很大的一個改變,過去的liff,網址是  line://app/{liffId} 這樣的形式,但改版後的v2,可以寫成 https://liff.line.me/{liffId}/  這樣的 web (https) scheme,這意味著你將有機會可以在一般的瀏覽器中運行和除錯,講者示範了用VS Code開發和單步執行偵錯的展示:

用VS Code來Run和Debug耶,我差點要站起來鼓掌了!!!

這件事情超級重要的啊,這有機會解決過去LIFF很難開發和除錯的問題,但這個技術的背後是什麼道理? 為何能夠讓原本不能在一般瀏覽器上運行的LIFF,可以同時在LINE內建WebView與一般的瀏覽器上都可以運作呢?

這是講師在上面那三張平淡且樸實無華的Slides中埋下的第二個梗:

v2的LIFF deeplink,可以自動handles不同的用戶環境。什麼意思? 這就是我個人認為(官方沒有明確這麼說)v2會開始與LINE Login綁定的一個很重大原因了。

請回頭想想第一版的LIFF,第一版的LIFF功能不多,充其量只是在手機中抓取當前用戶的身分(User ID),但因為必須卡在LINE的手機WebView裡面,所以liff在很多環境是無法使用的(例如PC Desktop/iPad…etc.),但從上面的v2改變中你可以發現,v2之後的LIFF,本質上真的變成了一個純Web Application,既然可以採用 https://liff.line.me/{liffId}/   這樣的deeplink,這意味著透過v2開發的LIFF將可以有機會跨出LINE手機上的WebView。

但,跨出去之後怎抓取用戶身分,與用戶互動呢? 這一刻我懂了,它骨子裡其實就是倚賴LINE Login嘛,當與LINE Login整合之後,LIFF將有更高的可能性,更大的自由度。在手機裡它就像是一小程序,而跨出了手機,就是一個可以透過LINE Login抓取到用戶身分的Web Application,這樣的發展方向,非常讓人期待!

什麼是 Mini App?

說到了發展方向,就不能不提到Mini App, 在day 2的keynote中,我們有機會驚鴻一瞥:

它是什麼? 不知道你有沒有注意到,在你的LINE個人主頁下,有一個『服務』圖示,該圖示底下其實有著各式各樣的額外功能,LINE Music、LINE TAXI、LINE購物…等。

如果,有一天我們開發的LIFF可以透過這樣的方式呈現,和LINE更多的整合在一起,甚至可以從市集當中找到,豈不是頗讓人期待?是了,這就是即將出現的LINE Mini App。而對於開發人員來說,我們在意的是,Mini App到底如何開發?

根據我們在Booth現場直擊詢問LIFF開發團隊的的第一手資料顯示,Mini App基本上就是LIFF的變形,雖然目前僅開放給LINE的合作夥伴,但未來將有很大的發展可能性,我們既然人在現場,當然也不客氣地為LIFF開發人員發聲,建議LIFF也能提供類似App Store這樣市集,讓大家可以自由的上架自己的LIFF(或未來的Mini App),開發團隊也熱情的表示,將會傳達我們的聲音與需求:

NEW APIs

當然,如果LIFF改版沒有推出一些新的API,肯定無法滿足各界的期待的…

這些在路上的API相當多,不過由於部分涉及用戶權限的授予,某些API還需要一點時間才能陸續開放(我猜可能也是要搭配line developer後台的一些選項配置):

但這些APIs的出現將會很令人期待。

對了,人都已經到了會場,很多人關切LIFF的V2版本中,有一個掃描QR Code的API似乎在android手機上有些問題(android無法掃描非 https:// 開頭的QR Code內容,請參考這邊,你會發現iOS可以掃描電子發票,但此功能在android上卻無法實現),這部分我們當然也不客氣地問了,現場LIFF PM承諾,將會在年底前的改版解決,我們當場拍照存證留念(哈~):

總的來說,LIFF v2對開發人員釋出了不少利多,Deeplink、新的API是我最感興趣部分,當然,還有TypeScript的支援、以及在外部瀏覽器上的supports,這些都讓LIFF開始朝向一個更有想像空間的方向發展:

而LIFF v2.1的LINE Mini App,是否會帶來市場上更多的騷動呢? 這也將是一個頗讓人引頸期盼的feature:

以為這樣就結束了嗎?

講者在最後的最後,丟出了這張slide:

果不其然,SDK發展的差不多之後,UI/UX將會是下一個階段的重點,如同bootstrap一般,估計LINE也會推出自己的LIFF UI框架,讓LIFF UI有著更一致且美觀的呈現效果。

而緊接著在UI/UX之後呢? 大概這一張slide可以讓粉絲們對LIFF的遠景更充滿期待了…

結語

要推出一套好的軟體產品不是最難(其實我覺得已經很難 >_< ),但軟體服務或產品想獲得長遠的成功,關鍵在於,周遭的生態系是否健全

是的,你已經天天在使用LINE了,但這還不夠,當有更多的廠商,圍繞起LINE開發出更多的生活應用與服務時,才會建構出堅不可摧的城牆。

而這關鍵,就是LIFF...由此你不難得知,LINE對LIFF和Mini App將會有著如何的期待,對於開發人員來說,藉由一個成熟的平台,在足夠多且普及的用戶環境中,更能夠放手一搏,有機會將自己的應用創造更大的價值。

這一切,使LIFF的未來更讓人期待…


LINE Developer Day 2019 現場筆記 (一) - 看見LINE、開發者、未來
LINE Developer Day 2019 現場筆記 (三) – LINE Bot 與 DevOps

2019年11月24日 星期日

LINE Developer Day 2019 現場筆記 (一) - 看見LINE、開發者、未來

過去幾年,我身邊很多軟體開發人員,要嘛往大陸發展,要嘛待歐美棲身,但LINE選擇的路線,卻給了我一個不同的啟發…

今年的LINE Developer Day依舊位於東京舉辦,不過較之過往,擴大為兩天的議程,在keynote當中,講者有提到今年改為兩天的原因。總的來說,過去想說的事情多,能用的時間少,所以今年改為兩天乃是天經地義、理所當然(但…費用不就增加了一倍? )。

話雖然這麼說,但我其實一直對LINE的工程師文化很好奇,一個保有傳統謹慎保守基因的日系公司,怎麼去塑造一個對開發人員如此友善的開放文化? 你如果到日本東京新宿LINE辦公室的開放空間,會看到底下這樣的場景:

充滿自在氛圍的空間裡,有著喝咖啡寫程式的Developer、有著接洽外來訪客的員工、甚至放空休息的夥伴…在同一個空間裡,自在且互不打擾的完成自己當下的任務。

這種自由開放的氛圍很像這兩天的大會,當你仔細觀看,不難發現議程表上的內容,絕大部分都是LINE員工們真實開發經驗的分享,其中少數才是LINE相關產品和服務的介紹,這跟過去我們看到由企業主辦的年度大拜拜聚會完全不同,更有點像是open source社群聚會的感覺。

透過上百個議程,講者竭盡所能的,把自身的開發經驗,分享給與會的其他開發人員:

這些議程當中,大部分是LINE如何透過open source開發技術,實現自身所需的商務需求、以及自己在採用open source技術所碰到的挑戰與解決方案,那這些議程是怎麼決定的呢?

我問了來自台灣LINE團隊的講者,這些議程主題怎麼決定的? 台灣LINE團隊的講者跟我說,大部分都是由LINE員工投稿,獲選後由LINE贊助講者參加大會,一聽之下,發現身為LAE的我們,平白享有免費三天的東京飯店+來回機票,看起來待遇似乎比LINE自己的員工還好呢~

其中有個頗有趣的地方,由於LINE大量的使用了open source技術,對於過去很少接觸 OSS 的微軟 .net 開發人員來說,參加LINE的聚會會讓你突然恍如置身到另一個世界中的感覺,議程當中許多過去在 .net 世界中沒有的東西,霎那間頗有讓人目不暇給之感。

今年的場地改在台場日航飯店舉辦,這個地點是著名的觀光勝地,搭地鐵前往的路上,電車上路過的海景頗讓人心曠神怡。當天天氣很好,廣場上藍色的天空讓人一覽無遺。

到了夜晚,當地頗具盛名的購物中心和景點,也是觀光客難以錯過的行程。

回到會場,比起去年,今天的場地大概整整大了一倍有,兩天的議程,現場共分為A-F同時段六個Track,還有Short Track和Booth攤位:

你會看到,光是Booth就有超過十幾個攤位,包含我們後來抓著LIFF PM問問題問到飽的(例如 LIFF v2的QR Code Scan功能在Andorid上的問題,未來的Mini App是否會取代LIFF與兩者之間的定位的問題..etc. 這些容後說明)攤位。

下圖最下方合照中,右前方那位就是LIFF PM,頗親切的女生,我本來想PO一張他被台灣LAE們問到雙手抓著腦袋的照片(你知道TW LAE的強悍了),但…後來決定還是保留在相機裡好了。

報到

今年的報到採用人臉辨識,不用說,這當然是火力展示。去年LINE就大動作宣告要以AI作為接下來發展的主軸之一,沒想到今年就直接上場了。

那…效果如何呢? 長長的人龍在每個人報到時間30秒左右(包含領取物品),不一會兒很快的就消耗完畢:

技術交流

今年整個會場有為數眾多的座位區,每一個長桌上都配有好幾座電源線插座塔,插座數量多到你手機想要沒電也很難,我帶去的行動電源基本派不上用場。(下圖右上桌上的白色塔式電源插座就是了)

除了主session之外,今年安排了很多的Short Track(上圖左下),其中也不乏精彩的分享,上圖中隨處可見的白色小桌,主要是讓參與的會眾與講員都可以輕鬆的彼此交談,這個設計我很喜歡,很多人可能沒有發現,這個設計非常符合我過去提到過的環境誘導要素。人是很容易被環境影響的,你可能以為,就算沒有這些小桌,看似也沒甚麼差別,但仔細觀察,你會發現小桌一擺,立即可以有效的增加與會者之間Talk的機率(與頻率)。

此外,基本每一個Session教室的外面,都有這樣的一個小桌,便於讓講師分享完,可以在教室外就立即與會眾進一步討論、或回答問題(如此不僅不會耽誤到下一場次講師的設備準備,也可以讓意猶未盡的與會者問到滿意為止。

同樣的,因為開發人員的天性,在議程中不太可能舉手問問題,且這樣會打斷整個議程進行,而場外小桌這樣的設計,很有效的可以鼓勵會後的提問與分享,我很期待這樣的設計未來能夠更多的在台灣的各類型社群大會中看到。

餐盒與零食

去年分享了太多LINE Developer Day的用餐心得,為了避免失焦,今年我就不多提便當點心這回事了,基本我們看看數種餐盒中的一兩張照片就好…

其實我不真的很明白,為何日本的便當都會做的那麼精緻,連青菜都要獨立裝在迷你菜籃子裡,但我想,這應該也是一種文化的呈現吧。當你跟LINE有較多的接觸後,會發現它常常很特別的融合了西方與日式文化,卻又讓兩者之間沒什麼衝突。不只如此,下午茶時間的點心都是日本甜點名產,馬卡龍非常好吃,讓人回味再三。(其他的就不多說了…)

全英文投影片

上百場的議程,其中標示為(#guest)的部分是外請講師(非LINE員工),其中也有來自微軟的講員(我有作為聽眾參加了其中兩場,後面再跟大家說說心得),你會發現很有趣的是,即便講者用全日文演說,但絕大部分的投影片都是英文的(特別是外請講員,也就是LINE員工作為講者的場子,我看到幾乎是全英文投影片,下圖),我相信這對慣用日語的本地人來說應該是一大挑戰。

且現場幾乎每一間教室都有即時翻譯(下圖右下),我不知道大會到底有多少非日籍學員參加,但這樣的設計對與會者來說真的很貼心(因為有一半的英文場子,日本當地開發人員其實也需要即時翻譯)。我相信這是刻意的,這樣的訓練能讓LINE的員工可以更自由的與外籍人溝通、與外界的技術無縫接軌,在我們這一行,我覺得這是必須的,但在台灣,我們始終沒認真去面對這個問題

台灣這幾年其實社群也算蠻蓬勃發展的,如果能夠更多的與國際接軌,甚至開始將每一場中文議程同步處理成英文內容(不管是slide內容或是現場講師的即時翻譯),或甚至直接以英文進行演說分享,相信對台灣的技術能見度將會是一大提升。

有時候想想,身處在這一行當中,資訊的來源大多是從英語系的國家來的,不僅是為了方便接收新知,而且若是要讓我們手上的東西讓世界看到,恐怕得自己先踏出去才是關鍵的一步,台灣很多開發人員的能力很強,但礙於語文能力無法與國外直接接軌,損失了相當多機會。面對自己的短處、挑戰自己有形無形的限制,其實是能夠突破和成長的一大關鍵。

這一點,LINE讓自己的工程師們做到了。

比起日韓,台灣更有條件,也更必須在全球化與國際化上加倍努力,我們沒有日韓的內需市場,又不想倚賴大陸的市場,那我們更有必要能夠與全球無縫接軌,如果LINE在日本能做到,台灣就更該如此。

LAE(LINE API Expert) Round Table

不要懷疑,下圖中和Chat Bot社群夥伴們一起入鏡的,就是朴懿彬(Park Euivin)。如果不提,你應該很難想像,在幾位台灣Chat Bot開發者社群壯漢旁,這位身材嬌小的女性,就是LINE的CTO:

每一年的LAE(LINE API Expert)聚會,和CTO的Round Table是一大重點,今年當然也是。一行人來自泰國、印尼、日本、台灣…不同國家的LAE們,在會議室中輕鬆的與LINE CTO暢談了約莫一個小時的時間,其中有笑聲也有平時無法輕易得到答案的問題,都在這段時間內有了明確的解答…

After Party

每年辛苦的研討會結束之後,當然必須要有一段吃喝快樂的時間,今年也是。一如既往,在議程之後的After Party中,有酒、有肉、有朋友,在歡笑與buffet中度過難忘的一天。

LINE 的工程師文化、國際觀、與我們的未來

寫到這裡,我在想,我讓你看到了什麼? 是LINE對LAE(LINE API Experts)的尊榮禮遇? 或是年度技術饗宴的豐盛豪華? 還是LINE的多元開放與文化?

今年是我第二年參加這個盛會,從去年我就有一個疑問,到底LINE花大錢辦這樣的聚會目的是什麼? 當然,幾乎全球各大軟體(或軟體服務)公司都有著類似的盛會,微軟、Goodle每年都一如往昔的舉辦著。但LINE的母公司Naver在富士比全球企業的排行中排名距離第17的Alphabet(Google)以及排名第16的微軟,有著好大的一段距離,甚至連台灣的TSMC和鴻海,都遙遙領先在Naver的前面。

然而從LINE推出LAE Program, 從去年LINE發展AI的宣告和行動,一直到今年大會直接用刷臉入場的火力展示,讓人很難不認真看待LINE的企圖心。而一直到目前為止,你得說,LINE看起來確實做的很不錯

在台灣,市值比LINE還要高的公司比比皆是,曾經大聲說想要發展軟體甚至AI的廠商更是在所多有,但你卻從沒有在亞太(包含中國)看到一家廠商真的像LINE一樣說到做到,走出了自己的路線,並且昭告天下。

從最近這兩年開始,LINE很明顯的早已不把自己定位成開發手機通訊App的公司了,甚至也不是一家軟體公司,而是藉由軟體技術與平台提供各種服務(生活、金融、…)的公司,而軟體、AI技術則是他手上的資源和武器,我相信LINE清楚的知道,真正能夠成就這一切的關鍵,是資訊開發人員和AI專業人才…LINE採用各種open source的技術,自行研發資料庫 “Flash”、私有雲 “Verda”,發展自己的AI實作、區塊鏈、一直到網路銀行,LINE自己建構了非常完整的底層架構…我曾經不只一次在想:『LINE你認真?』

LINE用行動回答了我這個疑惑,它是玩真的。

然而回頭看,你又不難發現和遠在矽谷的美商不同,LINE在商務上十分接地氣地打入了太平洋島鏈這一塊地區的許多國家(我也慢慢明白為何LINE不往中國和歐美發展),這些國家有著和中美兩大市場不同的文化背景,不同的生活與技術需求。這些國家們正準備在另外兩個強勢的經濟市場與文化入侵中站穩腳步,也正準備走出自己的世界。而LINE就在這一刻,提供了各種契合當地所需的服務。如果我們這麼看,不難發現,LINE在亞太地區軟體服務的公司中,已然為自己打開了一條不同的路。

反觀台灣,不管是電子製造、代工、電子商務或是軟體服務,我們常常在中美兩個典範中忽左忽右,搖搖擺擺,有時依賴美國有時依靠大陸,但卻始終沒能走出自己的方向。台灣很多公司想做AI、想做雲端、但真的走對路線、拿出成果的…目前看起來似乎屈指可數(呃…你可能不仔細還數不太出來)。

最近,剛好讀到呂世浩老師的敵我之間,讀到古代春秋戰國時期,君王們都深知,想得天下者,必須先得天下人才。但對於以製造業思維起家的台灣,恐怕很難真正了解這究竟是什麼意思。我猜,光是一個open source的文化,就足以讓台灣所有業主退避三舍了,更遑論其他。然而有趣的是,LINE卻在這個時間點展現出了一種特別的企業文化,示範了如何在互聯網興起的時代,兼顧傳統價值與最新的技術,吸引並凝聚人才,而且能集中這些資源,真正產生出價值。

今年有幸再度參加LINE的活動,我聽了很多session,上了很多課,但我想,對我而言,真正最有收穫的一課,是這個企業、這家公司所展現出來的企圖心、對自己定位的自信、以及在當前全球混亂的政治經濟局勢中,所走出的路線背後清澈的思維。

面對現今的國際局勢,很多公司,都在想自己的下一步該怎麼走。其實開發人員也是,過去幾年,我身邊很多軟體開發人員,要嘛往大陸發展,要嘛待歐美棲身,但LINE選擇的路線,卻給了我一個不同的啟發。我曾在研討會上說,很少人喜歡改變,特別是改變,但在這個時代,改變已經無法阻擋,改變將帶來挑戰(Challenge),但也唯有改變(Change),才能為我們帶來新的機會(Chance)。

或許,當我們看到了其他國家、其他企業正拚著命的努力時所帶來的啟發,台灣的開發人員,也將有機會在這個混亂的時代中,走出一條自己與眾不同的道路。

LINE Developer Day 2019 現場筆記 (二) - 關於LIFF的改變與未來
LINE Developer Day 2019 現場筆記 (三) – LINE Bot 與 DevOps
Related Posts Plugin for WordPress, Blogger...

熱門文章