Facebookなどで使われているローディングの名称を知ってる? / 調べたらたくさんありすぎた話
結論からお伝えします。
Skeleton Screen
Skeleton Placeholder
Skeleton Loader
Content Loader
Content Placeholder
Placeholder
などと呼ばれています。多いですよね(^_^;)
特にSkeleton ScreenとContent Loaderと呼んでいる場合が多いです。
どれのこと?
YouTube・Slack・Facebookなど最近のアプリで使われている、丸や長方形のグレーで表示している箇所のことです。
正式なテキストや画像が読み込まれる前のプレースホルダーとして使用されています。
Slack
他の事例に興味のあるかたはこちらの記事をご紹介いたします。
最初に提唱した人は誰?
調査によると最初に提唱したのがこちらのブログの作者「Luke Wroblewski」らしいです。誕生は2013年9月のことです。
後にGoogleに買収されることになるPolarというアプリのデザインを通じて、
それまで主流だったプログレスインジケーター(スピナー)をやめ、読み込まれた場所から徐々に表示させていくUIの表現方法としてSkeleton Screen
を提唱しております。
なので調査に間違いがなければSkeleton Screenと呼ぶのが良いのかもしれませんね。
Skeleton Screenのメリット
ユーザーの待ち時間を短く感じさせることが可能です。 また上記のプログレスインジケーターと比べると、Skeleton Screenはどこになんのコンテンツが表示されるかが推測しやすくなるため、 プログレスインジケーターに比べてコンテンツの表示までの待ち時間が減っている印象を持ちます。
環境ごとの実装例紹介
私が調べる限りアプリやWebのほぼ全てでライブラリが作られております。 Skeleton・Content Loader・Placeholderと呼ばれていたりしてなかなかカオスです。
- React / Vue.jsでの実装
- Webフレームワークでの事例
- CSSのみでの実装
- iOSアプリ
- Androidアプリ
React Nativeで実装してみる
今回私はReact Nativeで実装することにしてみました。React Nativeでは人気のライブラリが2つ存在します。
後者のライブラリは、前者のライブラリが「expo」という開発環境にしか対応をしていなかったため、 expo以外にも対応するために派生させたライブラリですので似たようなものです。
今回は後者の「react-native-content-loader」を使って実装してみたいと思います。
環境設定
$ npm install react-native-svg d3-interpolate --save
$ react-native link react-native-svg
$ npm install react-native-content-loader
※ XCodeでビルドする場合はlibRNSVG-tvOS.a
の削除を忘れないようにしてください。
サンプルコード
ライブラリのインポートを最初に行ってください。
import ContentLoader from 'react-native-content-loader' import {Circle, Rect} from 'react-native-svg'
サンプル通りに実装を進めます。
<ContentLoader height={300} duration={1000}> <Circle cx="30" cy="30" r="30"/> <Rect x="75" y="13" rx="4" ry="4" width="100" height="13"/> <Rect x="75" y="37" rx="4" ry="4" width="50" height="8"/> <Rect x="0" y="70" rx="5" ry="5" width="400" height="200"/> </ContentLoader>
添付のような画面になればOKです。 ノッチ付き端末の場合SafeAreaViewなどの実装も忘れないようにしてください。
まとめ
- 最近のアプリでコンテンツのローディング時に表示されるUIの名称について調べた
- 最初にこのUIについて提唱しているブログではSkeleton Screenと呼んでいる
- 他のUI表現より待ち時間のストレスが減っている気がする
漫画はHTMLで作る時代 / Comicgenであなたの漫画を作ろう!
Comicgenとは
Comicgen
はHTMLとSVGで漫画をかけるOSSです。
Gramenerというデータ分析事業を行なっている企業が、自社の資料の説明をするために開発しました。
現在最新版はv0.1.3ですが、表示に不具合がありこのブログについてはv0.1.2を利用しています。
環境構築
Comicgenは2つのファイルを読み込むだけで動かすことが可能です。
CDNの場合
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/comicgen/dist/comicgen.min.css"> <script async src="https://cdn.jsdelivr.net/npm/comicgen"></script>
CDNでv.0.1.2を利用する
<script async src="https://cdn.jsdelivr.net/npm/comicgen@0.1.2"></script>
npm or yarnの場合
$ yarn add comicgen # Recommended option $ npm install comicgen # Alternative, if you prefer npm
<link rel="stylesheet" href="node_modules/comicgen/dist/comicgen.min.css"> <script async src="node_modules/comicgen/dist/comicgen.min.js"></script>
使用方法
基本的な使い方をご紹介します。
人物の表示について
<g class="comicgen" name="dee" angle="straight" emotion="smile" pose="thumbsup" width="290" height="290"></g>
上記のSVGグループ要素のプロパティをいじると人/角度/表情/ポーズが変わります。
<g class="comicgen" name="dee" angle="straight" emotion="angryfrustrated" pose="angryfrustrated" width="290" height="290"></g>
拡大や座標の変更
プロパティにscaleやx,y座標を加えると拡大したり移動したりします。
<g class="comicgen" name="dee" angle="straight" emotion="smile" pose="thumbsup" x="-100" y="-100" scale="1.7" width="290" height="290"></g>
セリフを表示する
<div class="comic-panel"> <div class="comic-caption-top">Hi! I'm Dee.</div> <g class="comicgen" name="dee" angle="straight" emotion="smilehappy" pose="handsfolded" x="-317" y="-119" scale="2.2" width="150" height="200"></g> </div>
サイズや位置の調整が面倒じゃない?
このライブラリーは一見便利なのですが、座標の調整と拡大/縮小はとても面倒です。
そんな面倒な調整は公式サイトのGUIを使用するのがオススメです。
最終的に出来上がったg要素をコピーして貼り付けてください。
他にもこんな機能が?
- レイヤーの順序の変更
- 1コマに複数人配置
- フォントの変更
- JavaScriptで呼び出せる
- 自分の好きなキャラクターを追加
好きなキャラクターを入れられるのは面白そうですね!!
まとめ
最後に伝えたい
隠れたコストを見つけだせ / Komiserでマルチクラウドの使用状況を可視化しよう
クラウドを利用しているとネックとなってくるのがコストや使用状況の管理です。「気づかないうちに使われているサービス」や「削除し忘れて放置したままのサービス」が積み重なって、気づいたら高額になっているケースもありますよね。
組織やアカウントが大きくなるとさらにややこしいことになってくると思います。
そんな方にむけてProductHuntで話題になっていたKomiser
をご紹介します。
Komiserとは
KomiserはAWSやGCPのコストとセキュリティを分析し管理するツールです。
コストや使用状況に関する内容がパッと見てわかりやすく整理されています。
特徴
マルチアカウント / マルチクラウドは最近サポートされました。
なお現在サポートされているクラウドプロバイダーは以下3つです。
今後Azure / IBM / Alibabaも対応を予定しています。
※OVHというのはフランスのクラウドサービスのことです。
構築方法
Mac OSを例に進めていきます。他の環境の場合は、公式GitHubを参照してください。
ダウンロード
$ wget https://cli.komiser.io/2.3.0/osx/komiser
パーミッションの設定
$ chmod +x komiser
起動
$ ./komiser start --port 3000
or 複数のアカウントを見る場合
$ ./komiser start --port 3000 --multiple
これで画面を確認できるようになります。
またAWSの場合「~/.aws/credentials」情報を参照しにいきますので、設定ファイルが存在しない場合はチェックすることができません。
画面説明
全体の画面はこんな感じです。
いくつかの画面について細かく紹介していきます。
起動中のEC2のRegionを地図上で確認
緑の箇所が使用中のインスタンスです。
誰だ!知らないうちにシンガポールにEC2を立てたのは! という感じで気づくことができます。
コストの内訳
全体のコストとその内訳の主要サービス一覧が表示されます。
EC2関連の使用状況
- 稼働中/停止中/終了したインスタンス数
- パブリックとプライベートのインスタンス数と割合
- インスタンスタイプごとの稼働数と割合
- リザーブド / スポットなどのインスタンスの稼働数
- 1ヶ月あたりのインスタンスタイプごとにかかっている費用
サーバレス/コンテナの使用状況
- 言語別のLambda Function数
- Lambda Functionの呼び出し回数
- Lambda Functionのエラー数
- ECS / EKSのクラスタ数
S3の使用状況
S3に関する使用状況です。空のバケット数が表示されているのはコストにかかってくるからなのでしょうか?
EBSの使用状況
EBS TotalとEBS usedを比較して、使われてないEBSを発見することができます。
AWSコンソールログイン情報
- IAM User別のコンソールログイン情報
- コンソールログインのIP情報をマップで可視化
コンソールのログイン情報が海外からあったりすると怪しいですよね!
セキュリティ情報
まとめ
- コストやセキュリティを一目で管理できるKomiserを使用した
- 無料で使えてマルチアカウント / マルチクラウドを簡単に切り替えられて簡単
- 一目で重要な項目を確認できるのが便利
- Tagごとにグルーピングして集計できる機能が欲しい
マルチアカウントやマルチクラウドを利用している方、是非一度試してみてはいかがでしょうか?