はじめに
Spring19で Lightning Web Component(LWC)が発表されました。ドキュメントやサンプルが充実しており(以下のリンクを参照ください)、Qiitaや他のブログにも試してみた系の記事が投稿されてきています。
しかし、公式ドキュメントはいまだ英語だらけで概要の理解が進まなかったり、そもそもLWCって何なのか、どういう機能があるのかと疑問に思われる方は居るかと思います。本稿では英語が苦手でLWCについての学習を後回しにしてきた方のために、LWCの概要が把握できるように紹介したいと思います。
しかし、公式ドキュメントはいまだ英語だらけで概要の理解が進まなかったり、そもそもLWCって何なのか、どういう機能があるのかと疑問に思われる方は居るかと思います。本稿では英語が苦手でLWCについての学習を後回しにしてきた方のために、LWCの概要が把握できるように紹介したいと思います。
Component Library
The Component Library is the Lightning components developer reference. Rapidly develop apps with our responsive, reusable building blocks.
GitHub - trailheadapps/lwc-recipes: A collection of easy-to-digest code examples for Lightning Web Components
A collection of easy-to-digest code examples for Lightning Web Components - trailheadapps/lwc-recipes
今後はLWCが改良される
LWCの前身にあたるLightning Componentが発表されたのは2015年でした。当時はWeb標準でできることが限られていたため、共通的な機能を実現するにもSalesforce独自の技術として改良されてきました。そのため、いま人気のJavaScriptライブラリであるReactをつかって、MVCのV部分を実現した方が良いというような記事も散見されます。しかし、時代が変わりWeb標準でできることも多くなっており、LWCはWeb標準に寄せた技術として登場しました。このため汎用的なWebのスキル(主にJavaScript)を持っていれば簡単に扱うことができます。
それではLWCの登場によってLightning Componentはどうなってしまうのか。実はLWCと共存できます。いままでLightning Componentで作成した資産はそのまま利用可能で、機能追加したい場合はLWCを採用することも可能です。ただし、Salesforceとしては今後はLWCの改良を優先的に行っていくでしょうから、新規で開発する場合はLWCを採用した方が良いでしょう。
それではLWCの登場によってLightning Componentはどうなってしまうのか。実はLWCと共存できます。いままでLightning Componentで作成した資産はそのまま利用可能で、機能追加したい場合はLWCを採用することも可能です。ただし、Salesforceとしては今後はLWCの改良を優先的に行っていくでしょうから、新規で開発する場合はLWCを採用した方が良いでしょう。
LWCを使う上で必要なものは組織、CLI、IDEの3つ
LWCを実際に試す系の記事にも書かれているので、本セクションはおさらいの意味をかねてサラッと記載します。
LWCはHTML、JavaScript、XML、CSSの4ファイルで構成される
LWCの構成がどうなっているかを実際に作って試してみたいと思います。VS Codeでコマンドパレットを呼び出し(ショートカット:Shift + Ctrl + p)、以下のコマンドを入力し指示のとおりに進めていきます。
>sfdx:create light
create-lwc-command
作成が完了すると以下の図のようにHTML、JSおよびXMLファイルが作成されます。
独自のスタイルを適用させたい場合はこのフォルダにCSSファイルを配置します。
独自のスタイルを適用させたい場合はこのフォルダにCSSファイルを配置します。
- HTMLファイル 画面構成を記述します。 ファイルは必ず<template>タグで開始します。作成直後は<template>タグのみ記載された状態です。
- JSファイル ロジックを記述します。 クラスやメソッドにデコレータ(後述します)を追加することで組織のデータを簡単に読み込んだり、コンポーネント間の連携が簡単に実現できます。
- XMLファイル 各種設定を記述します。 作成したコンポーネントをどこで使用するか等を記載します。
- CSSファイル デフォルトでは作成されません。CSSファイルがなくてもLEXのスタイルが適用されますが、独自のスタイルを設定したい場合は作成します。
Salesforce特有のデコレータは3つ
デコレータはJavaScriptの標準機能です。デコレータをご存じない方のためにお伝えすると、Javaでいうアノテーションと同じようなもので、メソッドなどに機能(たとえばログ出力など)を追加する際に使います。LWCではSalesforce特有のデコレータが3つ(@api、@track、@wire)用意されています。それぞれの役割が直感的にわかるようにしたのが下の図です。
- @track 画面とJavaScriptを連携するためのデコレータです。画面での変更、たとえば入力に対して反応させたい場合に使用します。Apexでいうprivateメソッドのように自コンポーネント内でのみ使用することができます。
- @api @trackとほぼ同じです。JavaScriptで定義したメソッドを他のコンポーネントでも参照したい場合に使用します。@trackと併用することはできません。
- @wire JavaScriptの変数とApexのメソッドを紐づけたいときに使用します。
さいごに
冒頭でも書きましたが、LWCはSpring19で実装された新機能です。UIの部分は変化が激しくキャッチアップが大変な分野の一つですが、それだけに古参のエンジニアに対抗できる分野でもあります。
経験の浅いエンジニアは積極的にこのような新技術に触れていきましょう!
経験の浅いエンジニアは積極的にこのような新技術に触れていきましょう!
21 件