15
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Fluent UI を React で Assets License を回避しつつ使用する

Posted at

はじめに

今回は Microsoft が出している「Fluent UI」をReactで使ってみる、という記事です。

もともとFluent UIは office-ui-fabric という名前だったそうで、
Qiitaで検索してみると2015年あたりの記事がちらほら出てきますね。

デモサイトもとってもリッチでワクワクしますね。
https://developer.microsoft.com/en-us/fluentui/#/controls/web

しかし、Microsoftのブランドなども関係することから、ライセンスがややこしいです。

ライセンスについて

Fluent UI React 自体は MIT ライセンス と、とても使いやすいです。

が、但し書きがあります。以下、2020/05/27時点での内容

All files on the Fluent UI React GitHub repository are subject to the MIT license. Please read the License file at the root of the project.
Usage of the fonts and icons referenced in Fluent UI React React is subject to the terms of the assets license agreement.
(https://github.com/microsoft/fluentui#licenses より引用。)

はて、 assets license agreement ?となり見てみると…

“Fabric Assets” means
a. Segoe font
b. Microsoft Office icons
c. Microsoft Fabric icons

上記 Fabric Assets は Sugoeフォント/Microsoft Office icons/Microsoft Fabric icons からなり、
それらの使用は

a. In connection with the use of a Microsoft API within the development of a software
application, website, or product you create or a service you offer designed to provide access
or interact with a Microsoft service or application (“Application”)
b. To illustrate that Application integrates with one or more Microsoft products and services.

の場合にのみ許可されるとあります。
すなわち、Microsoft製品のAPIを叩いたりする場合のみに限られそうです。

By downloading the Fabric Assets (defined below) from the Content Delivery Network, you represent and
warrant to Microsoft that you have the authority to accept this Agreement on behalf of yourself, a company,
and/or other entity, as applicable.

とあるように、CDNからダウンロードするか否かが問題になりそうです。

個人の「感想」です。実際の使用にあたっては知財部門など専門家の意見を仰ぐべきです。
本記事に従った結果発生するいかなる問題に対しても責任を負いかねます

回避方法

Segoe fontの使用を回避する方法と、Fabric Iconの使用を回避する方法を記載します。

Segoe font

回避方法についてはGitHub Issueでも議論されています。

「非MITライセンスなものをオプトアウトするオプションがほしい」という質問に対し、
デフォルトフォントを変更する方法が提案されています。


import { loadTheme, createTheme } from 'office-ui-fabric-react';

loadTheme(createTheme({
  defaultFontStyle: { fontFamily: 'Comic Sans MS', fontWeight: 'bold' },
  fonts: {
    medium: { fontSize: 50 }
  }
}));

今のバージョンでは office-ui-fabric-react でなく、 @fluentui/react ですね。

Fabric Icon

iconの利用回避についてはGitHubのwikiに書いてあります。

import { registerIcons } from '@uifabric/styling';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faFilter } from '@fortawesome/free-solid-svg-icons';

registerIcons({
  icons: {
    Filter: <FontAwesomeIcon icon={faFilter} />
  }
});

これについてはドキュメントが古く、
@uifabric/styling となっている部分は @fluentui/react とすることで実現できます。

使用するときは

<Button iconProps={{ iconName: "Filter" }}/>

のように、registerIconsのキーを iconProps.iconName に指定します。

やってみた

上記の通り実施してみました。ドキュメントにあるColorPickerBasicExampleを表示してみています。

image.png

いいぞ。

ログからもわかるように、文字やアイコンを表示しているにも関わらず、
MicrosoftのCDNからはコンテンツをダウンロードしている様子はありません。

普段使用しているWindows 10環境では、Segoeフォントは入ってしまっているので、
今回はDockerコンテナ(Debianベース)にGoogle Chromeを導入して見てみました。

おまけ

こっそりREADMEが experiences for Microsoft 365 から web experiences に変更になってますね。

image.png

終わりに

いざ記事を書いてみると、Fluent UIユーザーが少ないようでびっくりしました。
最近のMicrosoftっぽいUIって好きなんですが、あまり人気がないんでしょうか。

非MITライセンスのオプトアウトについては、このIssueの行方も見守りたいところです。
https://github.com/microsoft/fluentui/issues/12488

15
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?