みなさま、こんにちは。
テラスカイ西日本のニンです。
TrailheaDXの2日目が終わりましたが、この2日間は、本当にあっという間でした。
本日Lightning Web Component(LWC)のハンズオンワークショップに参加しましたので、その内容を含めた参加レポートをお届けします。
テラスカイ西日本のニンです。
TrailheaDXの2日目が終わりましたが、この2日間は、本当にあっという間でした。
本日Lightning Web Component(LWC)のハンズオンワークショップに参加しましたので、その内容を含めた参加レポートをお届けします。
そもそもLWCとは
2015年のLightning Componentの発表から4年後に発表された、Web標準に寄せた技術のことで、より高いパフォーマンスを発揮します。
今回のKeynoteでは、Lightning Web Components Frameworkをオープンソース化することが発表されました。Salesforce以外の環境でも利用できるようになるので、より柔軟に開発ができるようになります。
新しい技術により、古いものから全部移行する必要がなく、並行して使えるようになりました。
Salesforce組織から直接実装できることはできないので(開発者コンソールとかではアクセスできない)、VS CodeといったIDEからアクセスする必要があります。将来的には、SalesforceがLWCのIDEもリリースするようです。
IDEの使用に関する詳細な実装方法については特に触れませんが、後ほど紹介するTrailheadのプロジェクトにはあるので、気になる方はぜひチェックして見てください。
それでは、ハンズオンワークショップの紹介をしていきます。
今回のKeynoteでは、Lightning Web Components Frameworkをオープンソース化することが発表されました。Salesforce以外の環境でも利用できるようになるので、より柔軟に開発ができるようになります。
新しい技術により、古いものから全部移行する必要がなく、並行して使えるようになりました。
Salesforce組織から直接実装できることはできないので(開発者コンソールとかではアクセスできない)、VS CodeといったIDEからアクセスする必要があります。将来的には、SalesforceがLWCのIDEもリリースするようです。
IDEの使用に関する詳細な実装方法については特に触れませんが、後ほど紹介するTrailheadのプロジェクトにはあるので、気になる方はぜひチェックして見てください。
それでは、ハンズオンワークショップの紹介をしていきます。
Build an App with Lightning Web Component
本日は朝8時から始まるBuild an App with Lightning Web Componentのハンズオンワークショップに参加しました。
このハンズオンワークショップは、Trailheadのプロジェクト”Lightning Web コンポーネントを使用した熊追跡アプリケーションの作成”で、LWCを作成するような感じです。会場は満席で、自身のパソコンを持ち込んで参加している人が10人位いました。それでも外にはまだ長い行列ができており、大変人気のあるセッションです。
このハンズオンワークショップは、Trailheadのプロジェクト”Lightning Web コンポーネントを使用した熊追跡アプリケーションの作成”で、LWCを作成するような感じです。会場は満席で、自身のパソコンを持ち込んで参加している人が10人位いました。それでも外にはまだ長い行列ができており、大変人気のあるセッションです。
セッション内は講師1人とエキスパートが5人いました。わからないことがあれば、講師やエキスパートにすぐに聞けます。流れとしては、まず講師からLWCの実装に対しての説明があり、その後、ハンズオンをする、という感じです。
最初にNaming Rulesに対して説明しました。
Naming Rules
・ロウアーケースで始まる
・アルファベットと数字を組み合わせとアンダースコアだけにする(ハイフンもダメ!)
・ユーニクである
・スペースを含むことはできない
・アンダースコアで終わらない
・二つ連続のアンダースコアを含むことはできない
・フォルダ名とファイル名は同じプレフィックスであること
最初にNaming Rulesに対して説明しました。
Naming Rules
・ロウアーケースで始まる
・アルファベットと数字を組み合わせとアンダースコアだけにする(ハイフンもダメ!)
・ユーニクである
・スペースを含むことはできない
・アンダースコアで終わらない
・二つ連続のアンダースコアを含むことはできない
・フォルダ名とファイル名は同じプレフィックスであること
必須ファイルはスライドの通りHTML,JavaScriptとMetadataだけです。
次はコードに対しての説明です。
JavaScript
① LightningElement → 標準Webエレメントのカスタムラッパー
② 'lwc' → LWCのコアモジュール
③ myComponent → パスカルケース
JavaScript
① LightningElement → 標準Webエレメントのカスタムラッパー
② 'lwc' → LWCのコアモジュール
③ myComponent → パスカルケース
import { LightningElement } from 'lwc'; export default class myComponent extends LightningElement {}
myComponent.js
HTML
c-child-componentみたいなコンポーネントをレファレンスする時にケバブケースを使用する。
c-child-componentみたいなコンポーネントをレファレンスする時にケバブケースを使用する。
<template> <c-child-component></c-child-component> </template>
parentcomponent.html
Configuration File
①コンポーネントをLightning App Builderに表示したい場合は、isExposedをtrueに設定する
②Targetsで表示するLightning Pageのタイプを指定する(例. Lightning__HomePage, Lightning__RecordPage, Lightning__AppPage)
①コンポーネントをLightning App Builderに表示したい場合は、isExposedをtrueに設定する
②Targetsで表示するLightning Pageのタイプを指定する(例. Lightning__HomePage, Lightning__RecordPage, Lightning__AppPage)
<?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>45.0</apiVersion> <isExposed>true</isExposed> <targets> <target>lightning__AppPage</target> </targets> </LightningComponentBundle>
myComponent.js-meta.xml
続いて、Reactive Propertyに対しての説明がありました。
Reactive Propertyはプロパティの値が変更される度にコンポーネントのテンプレートを更新するように強制します。
publicかprivateかに設定できます。
Reactive Propertyはプロパティの値が変更される度にコンポーネントのテンプレートを更新するように強制します。
publicかprivateかに設定できます。
@track → privateのreactive propertyを定義
※@trackを使用時 lwc モジュールから track がインポート必須
※@trackを使用時 lwc モジュールから track がインポート必須
import { LightningElement, track } from 'lwc'; export default class helloWebComponent extends LightningElement { @track greeting = 'Trailblazer'; }
helloWebComponent.js
Data Binding
次のようにデータバインディングすることが出来ます。
実際にコードを動いてみると入力テキストを変更するとコンポーネントも直に更新されていることを確認できます。
次のようにデータバインディングすることが出来ます。
実際にコードを動いてみると入力テキストを変更するとコンポーネントも直に更新されていることを確認できます。
<template> <lightning-card title = { capitalizedGreeting } icon-name="standard:apex_plugin"> <div class="slds-m-around_medium"> <h2>Hello {greeting}</h2> <lightning-input label="Name" value={greeting} onchange={ handleGreetingChange }></lightning-input> </div> </lightning-card> </template>
helloWebComponent.html
import { LightningElement, track } from 'lwc'; export default class helloWebComponent extends LightningElement { @track greeting = 'Trailblazer'; handleGreetingChange(event) { this.greeting = event.target.value; } }
helloWebComponent.js
ハンズオンの途中で説明があった@wireと@apiについてもちょっと紹介していきます。
@wireと@apiを使用する際は、必ずlwcモジュールからのインポートが必須なので、ここは要注意です。
@wireはjavaScript変数のapexから読み込むときに使います。
@apiは@trackの逆で、publicのreactive propertyを定義します。
両方ともプロジェクトの中で使用していますのでチェックしてみてください。
それではみなさんも一緒にハンズオンやってみましょう!
@wireと@apiを使用する際は、必ずlwcモジュールからのインポートが必須なので、ここは要注意です。
@wireはjavaScript変数のapexから読み込むときに使います。
@apiは@trackの逆で、publicのreactive propertyを定義します。
両方ともプロジェクトの中で使用していますのでチェックしてみてください。
それではみなさんも一緒にハンズオンやってみましょう!
Lightning Web コンポーネントを使用した熊追跡アプリケーションの作成
Lightning Web コンポーネントを使用して熊追跡アプリケーションを作成します。
会場でもTrailheadの流れでハンズオンをしましたので、このセッションに対するレポートは以上で終了させていただきます。
Lightning Web Component Playground
LWCの開発はIDEを通してするしかないので毎回変更後に環境へデプロイするのは面倒になりますね。
LWCの勉強が楽になるためにLWC playgroundを活用しましょう!
Playgroundでは編集したコードをすぐに確認できます。
Component ReferenceでサンプルソースをPlaygroundに動作確認したり編集してみたりすることができます。編集後のデータをローカルにダウンロードすることも可能です。
なお、playgroundのURLを見れば /tools/playground/SOKBtLop_に後にある数字はそのLWCのバージョンを表示しており編集して前のバージョンへ戻ることもできるのでぜひ使ってみてください。
LWCの勉強が楽になるためにLWC playgroundを活用しましょう!
Playgroundでは編集したコードをすぐに確認できます。
Component ReferenceでサンプルソースをPlaygroundに動作確認したり編集してみたりすることができます。編集後のデータをローカルにダウンロードすることも可能です。
なお、playgroundのURLを見れば /tools/playground/SOKBtLop_に後にある数字はそのLWCのバージョンを表示しており編集して前のバージョンへ戻ることもできるのでぜひ使ってみてください。
最後に
以上が今回参加したLWCセッションについての参加レポです。
LWCのオープンソース化に伴い、LWCの活用が広がりをみせるのではないかと思います。
TrailheaDX 2019とっても楽しかったです。2日間いろいろ勉強でき、とっても良かったです!
LWCのオープンソース化に伴い、LWCの活用が広がりをみせるのではないかと思います。
TrailheaDX 2019とっても楽しかったです。2日間いろいろ勉強でき、とっても良かったです!
30 件