react-native-sketch-canvasを使ってホワイトボードを実装してみた【ReactNative】



今回は、アプリの画面上を自由に描画することができる「 react-native-sketch-canvas 」ライブラリについて紹介します。

また、本記事は、ライブラリの実装手順までを紹介します。

本記事を読むことで、このようなアプリを実装することができます。

1. 環境

筆者本人が使っている環境(バージョン)です。



2. プロジェクトの作成

React Native CLIのプロジェクトを作成します
(MyAppの箇所は、任意のプロジェクト名でOKです)。

3. ライブラリのインストール

以下のコマンドを実行して、インストールします。


ライブラリをインストール後、ios ディレクトリに移動して pod install コマンドを実行し、
ネイティブモジュールのセットアップをします。



4. SketchCanvasコンポーネントの使い方

4.1 インポート

SketchCanvasコンポーネントをインポートします

4.2 サンプルコード

以下のコードは、GitHubに記載のあるソースコードとほぼ同じコードです。

このソースコードをコピペするだけで、実装することが可能です。


React Native Expoではじめるスマホアプリ開発 ~JavaScriptによるアプリ構築の実際~

新品価格
¥4,268から
(2020/7/27 08:59時点)

4.3 警告表示について

SketchCanvasコンポーネントを実装した際に、以下の2つの警告が表示されました

Warning : componentWillMount has been renamed, and is not recommended for use. See https://fb.me/react-unsafe-component-lifecycles for details.

(省略)

Warning : componentWillReceiveProps has been renamed, and is not recommended for use. See https://fb.me/react-unsafe-component-lifecycles for details.

* Move data fetching code or side effects to componentDidUpdate. * If you’re updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://fb.me/react-derived-state * Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run npx react-codemod rename-unsafe-lifecycles in your project source folder.


この警告は、SketchCanvasコンポーネントで「componentWillMount」と「componentWillReceiveProps」と言う名前のコンポーネントを使っている為、警告が出ています。

以前のReactのバージョンアップで、以下のライフサイクルメソッドがリネームされました。

  • (旧)componentWillMount → (新)UNSAFE_componentWillMount
  • (旧)componentWillReceiveProps → (新)UNSAFE_componentWillReceiveProps
  • (旧)componentWillUpdate → (新)UNSAFE_componentWillUpdate

つまり、 旧型の名前を使っている為、新しい方の名前を使ってください と言う警告でした。

公式サイトで、コンポーネントの名前を自動で、新しい名前に変換することができる「codemod」コマンドが用意されているので、実行しましょう。

公式リンク

コマンドの実行
プロジェクト名/node_modules/@terrylinla/react-native-sketch-canvas/src/
のSketchCanvas.jsファイルに警告元のコンポーネントがあるので、 srcディレクトリまで移動してからコマンドを実行します。

(公式に npx react-codemod rename-unsafe-lifecycles コマンドで、できると書いてありましたが、実際にやってみたがそのままだとできず –forceをつけると無事変換できました。)


コマンドを実行すると、


と、質問されるので、「JavaScript」を選択すると変換することができました。

もし、変換されずに警告が表示されている場合は、
“SketchCanvas.jsファイル”で使われている「componentWillReceiveProps」と「componentWillMount」を手動で変更すると警告は消えます。

SketchCanvas.jsファイル

(本ライブラリの最終更新日が2年前だったので、それが原因みたいですね…。)

4.4 機能

サンプルコードでは、

  • iOSとAndroid両方に対応
  • 線の太さと色は、描画中に変更可能
  • 1つ前の動作に戻すこと可能
  • 消しゴム機能搭載
  • 全削除機能
などの機能が搭載されています。


他にも「他のデバイス、他の誰かと一緒に編集可能な機能」や「同じ画面で複数のキャンバスを描画できる機能」など多くの機能も実装できるみたいなので、他の機能については、別の記事でまとめてみたいと思います。

5. 参考

今回紹介した、「react-native-sketch-canvas」のGitHubのリンクです。
react-native-sketch-canvas

6. まとめ

今回は、「react-native-sketch-canvas」についての実装手順について紹介しました。
簡単にキャンバスを実装することができるこのライブラリをどうしても紹介したくて、この記事を書きました。

本ライブラリの最終更新日が二年前ということが気にならない方には、おすすめのライブラリだと思います。