ラベル アイコン の投稿を表示しています。 すべての投稿を表示
ラベル アイコン の投稿を表示しています。 すべての投稿を表示

2023年6月29日木曜日

デジタル庁のイラストレーション・アイコン素材を使用する

 デジタル庁よりイラストレーション・アイコン素材が提供されています。配布の目的や利用方法、利用規約などは、デジタル庁のイラストレーション・アイコン素材の紹介記事に記載されています。

この記事の最後の方にダウンロードして使うというセクションがあり、イラストレーション・アイコン素材をzip形式でダウンロードすることができます。designsystem-assets.zipという名前で、素材を含んだZIPファイルがダウンロードされます。

このファイルに含まれるイラストレーションおよびアイコンを、Oracle APEXのアプリケーションで使用してみます。

アプリケーション作成ウィザードを起動し、空のアプリケーションを作成します。

素材のファイルはワークスペース内のすべてのアプリケーションから参照できるように、静的ワークスペース・ファイルとして作成する予定です。しかし、なぜか、静的ワークスペース・ファイルはアプリケーションの共有コンポーネントに含まれています。そのため、ワークスペースに保存するファイルでもアプリケーションを開いて操作する必要があります。

アプリケーションの名前はデジタル庁 - イラストレーション・アイコン素材とします。

アプリケーションの作成を実行します。

アプリケーションが作成されたら、共有コンポーネントの静的ワークスペース・ファイルを開きます。


作成済みの静的ワークスペース・ファイルが一覧されます。ファイルの作成をクリックします。


コンテンツとしてデジタル庁よりダウンロードしたファイルdesignsystem-assets.zipを選択します。ファイルの解凍をオンにすることで、ZIPファイルに含まれるファイルを静的ワークスペース・ファイルとして参照できるようにします。

今回は、ディレクトリは特に指定しません。designsystem-assets.zipを展開するとファイルはすべてディレクトリdesignsystem-assets以下に作成されます。使い方によっては、ディレクトリを指定した方がよいでしょう。ファイルの文字セットはUnicode(UTF-8)とします。

以上で作成をクリックします。

ZIPファイルのアップロードと解凍には、手元の時計で2分くらいの時間がかかりました。


作成された静的ワークスペース・ファイルを一覧します。


LICENSE.txtを含む、色々なファイルが作成されていることが確認できます。


ファイルの内容を確認するために、ページを作成して画像を一覧します。

イラストレーションのPNG画像を一覧するページを作成します。スマート・フィルタとカード・リージョンを使います。

ページの作成をクリックします。


スマート・フィルタを選択します。


ページ定義の名前はイラストレーションとします。データ・ソースのソース・タイプとしてSQL問合せを選択し、SQL SELECT文を入力に以下を記述します。

次へ進みます。


表示形式としてカードを選択します。

列FILE_NAME、FILE_NAME_SHORT、FILE_NAME_LONGは重複の無い一意の文字列ですし、列MIME_TYPE、FILE_CHARSETはすべて同じ値です。そのため、すべてのフィルタのチェックを外します。

スマート・フィルタでは、文字列検索のみを行います。

次へ進みます。


カード・レイアウトとしてグリッド、タイトル列にFILE_NAME_SHORT(Varchar2)を選択します。

ページの作成をクリックします。


ページが作成されます。いくつかの設定を調整します。

スマート・フィルタのフィルタP2_SEARCHを選択し、ソースのデータベース列をFILE_NAME_SHORTに限定します。

デフォルトでは検索可能なすべての列が指定されています。


カード・リージョン検索結果の属性を開きます。

カードの主キー列1としてWORKSPACE_FILE_IDを選択します。

2次本体の列としてFILE_NAME_LONGを選択します。これは静的アプリケーション・ファイルを直接指定するURLの一部です。

メディアのソースとしてBLOB列、BLOB列としてFILE_CONTENTを選択します。位置は本体、外観は自動、サイズ指定は適合を選択します。

BLOB属性のMIMEタイプ列としてMIME_TYPE、最終更新列としてLAST_UPDATED_ONを選択します。

以上で変更を保存します。


ページを実行すると以下のように表示されます。

イラストレーションの素材の画像と、それをAPEXで参照するための文字列が表示されます。


アイコン素材のSVGについても、スマート・フィルタとカード・リージョンを使って一覧画面を作成します。ページの作成を実行し、スマート・フィルタを選択します。

アイコン素材のページの名前はアイコン、SQL問合せとして以下を記述します。



以降は、イラストレーションのページと同じ作業を行います。

ページが作成されたら、イラストレーションと同様にフィルタP2_SEARCHのソースのデータベース列をFILE_NAME_SHORTに限定します。

カード・リージョン検索結果の属性は、以下のように変更します。

本体の拡張フォーマットをオンにして、HTML式として&FILE_CONTENT!RAW.を記載します。列FILE_CONTENTとしてSVG要素が記述されており、SVG要素がエスケープされずにHTMLとして解釈されるようにしています。

カードの主キー列1としてWORKSPACE_FILE_ID、2次本体の列としてFILE_NAME_LONGを選択します。


ページを実行すると以下のように表示されます。

アイコンの素材の画像と、それをAPEXで参照するための文字列が表示されます。


これらの素材からアイコンやイラストレーションを選んで、APEXのページで使ってみます。

ホーム・ページにアイコンやイラストレーションを表示させます。

最初に、ボタンのアイコンとしてfast_track_line.svgを表示します。fast_track_line.svgの参照を確認します。


ホーム・ページ
のページ・プロパティのCSSのインラインに以下を記述します。



ボタンを作成します。

識別のボタン名はFAST_TRACK、ラベルはFast Trackとします。外観のボタン・テンプレートとしてText with Iconを選択し、アイコンとしてfast-track-lineを指定します。


ページを実行すると、以下のようにボタンが表示されます。


イラストレーションl_01_rectangle_white.pngを表示してみます。

参照を確認しておきます。


ページ・アイテムを作成します。

識別の名前はP1_IMAGE、タイプはイメージの表示、ラベルはImageとします。

設定の基準としてImage URL stored in Page Item Valueを選択し、デフォルトのタイプとして静的、静的値として上記の静的ワークスペース・ファイルの参照を記述します。


ページを実行すると、以下のように表示されます。


デジタル庁から提供されているイラストレーション・アイコン素材集を、Oracle APEXで利用する方法の紹介は以上になります。

例えば、画像アドレスをコピーすると確認できますが、静的ワークスペース・ファイルはブラウザからみると静的なファイルと違いがありません。


そのため、静的ワークスペース・ファイル(静的アプリケーション・ファイルも同様)へのアクセスが多い場合は、ファイルをCDNなどに移動するとデータベースへの負荷を下げることができます。

今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/digital-agency-illustrations-and-icons.zip

静的ワークスペース・ファイル(デジタル庁が提供している素材)は、アプリケーションのエクスポートに含んでいません。

Oracle APEX 22.2からは、コンポーネントのエクスポートとして、静的ワークスペース・ファイルをアプリケーションのエクスポートに含めることができるようになっています。

エクスポートの際にタスクからコンポーネントのエクスポートを呼び出します。


アプリケーションのエクスポートに含めたい静的ワークスペース・ファイルを選択し、エクスポートに追加することができます。


ホーム・ページで使用しているfast_track_line.svg、l_01_rectangle_white.pngに限定すると、以下の選択でアプリケーションのエクスポートにファイルが含まれるようになります。


今回の記事は以上になります。

Oracle APEXのアプリケーション作成の参考になれば幸いです。

完

2023年5月14日日曜日

SVGのロゴをメニューに表示する

 SVGで提供されているロゴをメニューに表示してみます。今回はOpenAIのロゴを使用します。APEXで作ったアプリにChatGPTのAPIを呼び出す機能を加えたときに、役に立つかもしれません。


SVGのロゴのありかをOpenAIのChatGPT(GPT-3)に聞いてみました。


おそらく2021年までは回答の場所にあったのだと思いますが、現在はhttps://openai.com/brand#logosにありました。Download logosをクリックするとopenai-logos.zipというファイルがダウンロードされます。

SVGのロゴは、openai-logos.zipを展開すると作成されるディレクトリSVGs以下に、openai-logomark.svg(黒)、openai-white-logomark.svg(白)として含まれています。

SVGs % ls -l

total 40

-rw-r--r--@ 1 **********  staff  2946  4 11 06:44 openai-lockup.svg

-rw-r--r--@ 1 **********  staff  1735  4 11 06:45 openai-logomark.svg

-rw-r--r--@ 1 **********  staff  4141  4 11 06:46 openai-white-lockup.svg

-rw-r--r--@ 1 **********  staff  2414  4 11 06:47 openai-white-logomark.svg

SVGs % 


APEXアプリケーションの共有コンポーネントの静的ワークスペース・ファイルを開きます。


SVGのデータを使ってCSSクラスを作成するには、2通りの方法があります。
  1. SVGファイルをアップロードし、CSSのクラス定義からファイルを参照する
  2. SVGファイルの内容をBASE64でエンコード(Quoted Printableも可)してCSSクラスに埋め込む
ファイルをアップロードするには、ファイルの作成をクリックします。


コンテンツを指定するためにファイルをドラッグ・アンド・ドロップをクリックして、ファイルを選択します。または、書いてある通りファイルをドラッグ・アンド・ドロップします。

作成をクリックすると、選択したファイルが静的ワークスペース・ファイルとしてアップロードされます。


openai-logomark.svgとopenai-white-logomark.svgをアップロードします。


アップロードしたSVGファイルを参照するCSSクラスを作成します。ファイルのアップロードと同様に、ファイルの作成をクリックします。

ファイル名はvendor-logos.cssとします。コンテンツを選択せずに作成をクリックすると、ファイルが新規作成されます。


ファイルの内容として以下を記述します。ファイルの拡張子がcssであれば、変更の適用時に自動的にミニファイされたCSSファイルも作成されます。参照はAPEXアプリケーションから、このCSSファイルの読み込むために使用します。あらかじめ、コピーしておきます。



CSSからSVGファイルを参照するのではなく、CSSファイルに埋め込むにはbackground-imageの指定を以下のように変更します。

background-image: url("data:image/svg+xml;base64,SVGファイルをBASE64でエンコードした内容");

メニューにロゴを表示するために、このCSSクラスをアプリケーションのすべてのページから参照可能にします。

静的ワークスペース・ファイルvendor-logos.cssの参照を、アプリケーション定義のユーザー・インターフェースのCSSのファイルURLに設定します。


以上ですべてのページからOpenAIのロゴが参照できるようになりました。

デフォルトで作成されるホーム・ページへのナビゲーションのアイコンを、OpenAIのアイコンに変更してみます。

共有コンポーネントのナビゲーション・メニューに含まれるナビゲーション・メニューを開きます。

リスト・エントリにホームがあるので、それを開きます。


イメージ/クラスをopenai-white-logomarkに変更します。


以上で記事の先頭の画像のように、OpenAIのロゴがメニューに表示されます。

これまでの例は、ユーザー・インターフェースのナビゲーション・メニューのリスト・テンプレートとしてSide Navigation Menuが選択されていました。

これをTop Navigation Mega Menuに変更します。


ナビゲーション・メニューをTop Navigation Mega Menuに変更すると、アイコンが表示されません。


これには2つ理由があります。
  1. 背景色が白なのでopenai-white-logmarkの代わりにopenai-logomarkを使用する
  2. クラスfaを追加で指定する
Side Navigation MenuとTop Navigation Mega Menuでテンプレート定義が異なるため、Top Navigation Mega MenuではCSSのクラス指定にfaを追加する必要があります。

リスト・エントリのイメージ/クラスをfa openai-logomarkに変更します。


今度は、アイコンが表示されます。


APEXのアプリケーションには、アイコンを埋め込むことができる場所が多数あります。思ったように表示されない場合(特にアイコンとなるspan要素がHTMLに含まれているにもかかわらず)には、同様の対応が有効である可能性があります。

以上になります。

Oracle APEXのアプリケーション開発の参考になれば幸いです。

完