-
NativeBaseのDatePickerコンポーネントの日付表記をフォーマットする方法

React Nativeによるアプリ開発において、UIコンポーネントの導入は珍しいものではない。むしろポピュラーとまで感じるほどではないだろうか。なかでもNativeBaseが、もっとも高名なUIコンポーネントだといえる。 そんなNativeBaseのコンポーネント群に日付選択を手助けするものがある。DatePickerだ。 NativeBaseのDatePickerコンポーネントは、IOSとAndroidのプラットフォームを判定して専用のDatePickerをレンダリングしてくれる。IOSならばDatePickerIOSコンポーネントで、AndroidならばDatePickerAndroid APIが呼び出されるわけだ。 NativeBaseのDatePickerコンポーネントの実装は、公式ドキュメントのとおり記述すれば、なんの問題もなく配置できることだろう。ところがDatePickerコンポーネントの日付表記が英語圏のものと気づいて戸惑うかもしれない。 このエントリーでは、NativeBaseのDatePickerコンポーネントの日付表記を日本語形式フォーマットする方法を紹介したい。 解決法 さっそく解決法を示そう。サンプルソースコードとして公式ドキュメントのものを拝借して、そこに追記している。では下記ソースコードを確認してほしい。 追記した箇所は、2行だ。 まずソースコード上部にimport moment from ‘moment’;としてMoment.jsをインポートしている。Moment.jsは日付時刻操作ライブラリで、フォーマットするときなどに使う。 つづいて<DatePicker />にformatChosenDate={ date => moment(date).format(‘YYYY年MM月DD日’) }としてformatChosenDate propsを用意している。これは日付フォーマット用のpropsで、DatePickerコンポーネント内で参照されている。もしformatChosenDate propsが存在しなければ英語圏の日付表記が適用される仕組みだったわけだ。 まとめ NativeBaseのDatePickerコンポーネントの日付表記を日本語形式にフォーマットする方法の紹介だった。 そもそも公式ドキュメントにformatChosenDate propsの記述がない。DatePickerコンポーネントの実ソースコードを眺めていて発見したものだ。 もしまだ実装の時でないならば、頭の片隅に入れておいてほしい。 このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。
-
[React Native] フォントサイズが異なる文字列を下揃えする方法
![[React Native] フォントサイズが異なる文字列を下揃えする方法](https://wordpress.aizulab.com/wp-content/uploads/2019/09/react-native-text-baseline.png)
Flexboxは、Webサイトにおけるコーディングではおなじみのレイアウトモデルで、縦軸や横軸の単一軸に整列させるものだ。React Nativeのレイアウトでも、Flexbox概念を用いて成形する。 そしてレイアウト用コンポーネントには、あらかじめFlexboxが定義された状態になっている。HTMLにあたるブロックレベルエレメントやインラインレベルエレメントという概念はなく、displayプロパティが存在しない。そして、すこし特徴を感じるのが、レイアウト用コンポーネントは、縦軸に整列するflex-direction: column;が与えられている点だろう。 さて、以上のことを踏まえて主題の文字列を下揃えにする方法であるが、この程度のことではまってしまったので自身の備忘録かたがた、それを共有したい。 やりたいこと 表現すべきレイアウトは、文字サイズの異なる文字列を下揃えにするものだ。下辺を揃え、上辺が凹凸になる状態を表現したい。 React Nativeのレイアウトモデルは、Flexboxだった。しかも初期時は、縦軸に整列するflex-direction: column;だった。 したがって、まずやることは横軸にすること。flex-direction: row;で横に整列させる。続いて縦軸に関する指定を担うalign-items: baseline;で、文字列をベースラインに沿うようにする。 しかし… しかしAndroidで、下揃えにならない。 左がAndroidで、右がiPhoneだ。下揃えされていないことがわかる。見た感じ行の高さによるもののようだから、lineHeightやtextAlignVerticalを試みたが見込めなかった。 解決法 やむを得ず<Text/>内に<Text/>を展開することで着地することにした。 HTMLコーディングにおける<p/>内の<span/>のような装いになっている。これならば親<Text/>の行の高さは、文字サイズが大きいものと等しくなり、ベースラインに沿うことになったわけだ。 このあたりの仕様は、Webブラウザそのままで安心できる。 まとめ フォントサイズが異なる文字列を下揃えする方法の紹介だった。 <Text/>内に<Text/>を展開することで、当該件は着地することにしたが、それでもまだ問題がある。 それは<Text/>で余白を調整できない点だろう。<p/>内の<span/>では、span要素でも余白を与えることができたため、そのようなことで悩むことはなかったのだが、React Nativeでは工夫が必要らしい。 このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。
-
[React Native] 吹き出しUIの作り方とコーディングサンプル
![[React Native] 吹き出しUIの作り方とコーディングサンプル](https://wordpress.aizulab.com/wp-content/uploads/2019/09/react-native-balloon-stylesheet-sample.png)
Webアプリで吹き出しUIをコーディングするには、CSSの疑似要素を工夫して三角形を形成する。ところがReact Nativeでは疑似要素をサポートしていない。というのもReact Nativeのスタイルの適用方法は、オブジェクト形式で定義しなければならないからだ。 そもそもネイティブアプリ作成におけるレイアウトで、疑似要素っぽいことを求めるシーンがあるのか知らないが、React NativeのCSS適用方式では、それを再現することができない。 それでもデザイン要件で、吹き出しUIをコーディングしなければならないこともある。 このエントリーでは、React Nativeコンポーネントに吹き出しUIをつくる方法と、そのコーディングサンプルを紹介したい。 React Nativeにおける疑似要素 まず疑似要素について言及しておこう。CSSの疑似要素とは、ターゲット要素に対して擬似的に仮想の要素を配し、スタイル適用を可能にしている。たとえば::beforeならば、ターゲット要素の先頭子要素として要素が挿入される。::afterならば、ターゲット要素の末尾子要素として要素が挿入される。 このように擬似要素として定められた特定の場所に仮想の要素が挿入され、さまざまな装飾に活用されている。 ところがすでに述べたとおり、React Nativeのスタイル適用方法では、これをサポートしていない。疑似要素はサポートしていないのだが、再現はできる。 疑似でなければよいのだ。 吹き出し三角形のしくみ React Nativeで吹き出しUIのコーディングサンプルを示す前に、吹き出しUIたらしめる三角形オブジェクトのCSSを確認しておきたい。 ここでポイントとなるプロパティは、width,height,borderが三角形を形成している。ボックスモデルの概念だとcontent領域の外側にpadding領域があって、border領域、margin領域をもつ。 上記のCSSを見ると、width,heightは0pxで、borderは上、右、左辺が10pxになっている。つまりcontent領域は潰して、border領域でサイズを得ていることがわかる。 上辺のボーダー幅が10px、左右辺ともにボーダー幅が10px、色を透明にすることで、上辺ボーダーだけ残って三角形に見えるという理屈だ。この場合の疑似要素サイズは、横幅20px、縦幅10pxになる。下辺ボーダーを定義していないため、上辺ボーダー幅しか保持せず縦幅は10pxというわけだ。 吹き出しUIのコーディングサンプル それでは本題の吹き出しUIのコーディングサンプルをご覧いただこう。 上向き吹き出し 右向き吹き出し 下向き吹き出し 左向き吹き出し まとめ React Nativeコンポーネントに吹き出しUIをつくる方法と、そのコーディングサンプルの紹介だった。 Webコンテンツのコーディングとの相違は、疑似要素ではなく空要素にスタイルを当てるという一点くらいなもので、難しさはないはずだ。三角形を形成するアプローチはCSSコーディングそのものでボーダーを工夫して再現する。 つまりそのアレンジ方法もWeb用エントリーのものから得ることができるということだ。「CSS 吹き出し」などで検索すると、それらしい情報が得られるはずだ。 このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。
-
スクロールしてフェードインさせる!表示領域の侵入を判定する方法

縦長サイトはスクロール量が大変多い。目的のエリアに到達するまでに相当量スクロールしなければならないサイトもあるほどだ。ユーザーにとっては、わずらわしく非常にストレスのかかる行動であることは間違いない。 スクロールしていると退屈で通り過ぎてしまう、なんてこともあるだろう。リズミカルにスクロールしだすと止まらないものだ。これはサイトオーナーにとっては、もっとも回避しなければならないし、ましてや正しい情報が認知されずサイト離脱など阻止しなければならない。ユーザーとオーナーの双方にとって損害といえる。 縦長サイトでスクロールさせること自体に問題はなく、成功しているサイトだって少なくないが、退屈させるのがいけないのだ。そんなスクロール時の退屈の方策に、アニメーションエフェクトを加えて飽きさせないものがある。 このエントリーでは、スクロール時の表示領域の侵入をトリガーにしてフェードインするテクニックを紹介したい。 はじめに まず表示領域というものに言及しておこう。ここでいう表示領域は、いわゆるビューポートのことで、現在あなたがブラウザ内に視える領域のことを指す。スクロールしないと視えない領域はビューポート外ということだ。 この表示領域に侵入したか否かを判定するアイデアとして、スクロールをトリガーにして、ターゲット要素がwindowオブジェクトの下辺を超えたら処理するというものがある。あなたも目にしたことがあるのではないだろうか。 しかしこの手法だと、イベントコール後もイベントリスナを削除しない限り、ずっとスクロールイベントが発生することになる。パフォーマンスとしていかがなものか。 そこでこのような要件に最適なIntersectionObserver APIを使う。 IntersectionObserver APIについて IntersectionObserver APIとは、ターゲット要素が表示領域と交差するたび実行されるというものだ。交差というのは、表示領域の一辺にターゲット要素の一辺が被ったか否かということで、一般的にスクロールすれば表示領域の下辺とターゲット要素の上辺が交差することになる。もちろん全面的に重なった状態も交差に該当する。 すなわち、windowオブジェクトの下辺を超えたら処理するなどの実装において、もっとも優れた代替案になるだろう。 IntersectionObserver APIの詳解はMDNで確認してもらいたい。 表示領域の侵入したらフェードインするデモンストレーション See the Pen Untitled by Takuya Takaku (@takuya-takaku) on CodePen. まとめ 表示領域の侵入を判定してフェードインするテクニックの紹介だった。 スクロールイベントが悪いわけもなく、パララックスサイトのような実装において、スクロール量を求める場合もある。ときと場合と要件で判断してもらうとよいだろう。 このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。
-
Dockerでvimを使う方法(Python有効化も)

オンプレのサーバにVimをインストールする際に、ビルド手順(主にconfigure内容)を忘れてググることが多いので自分の備忘録として残したいと思います。 また、一口にVimと言ってもVim8、NeoVimをyumやらaptやらでインストールするパターンと、ソースコードからコンパイルするパターンがあると思いますので、今回はDockerコンテナ上で以下の4パターンを試してみたいと思います。 Vim8をパッケージマネージャでインストールするパターン NeoVimをパッケージマネージャでインストールするパターン Vim8をソースからビルドしてPython2, 3を有効にしたパターン NeoVimをパッケージマネージャからインストールしてPython2, 3を有効にしたパターン Dockerコンテナのベースイメージは軽量化のためAlipneLinuxを使用していますがCentOSでもUbuntuでも手順はほぼ変わらないと思います。 1. Vim8 まずはVim8のみ、Pythonを有効にしていない状態であれば以下のように簡単にインストールすることができます。 Dockerfileを用意したらbuildコマンドを実行し、コンテナを起動します。 コンテナを起動したらvimを起動できることを確認します。 2. NeoVim 次にNeoVimを試します。こちらもVim8同様、簡単にインストールすることができます。 先ほどとほぼ同じ手順でNeoVimがインストールできます。 3. Vim8 + Python 次にプラグインを使用するためにPythonを有効化したVim8をインストールします。先ほどの方法でもPython3は有効になっているのですが一応Python2も有効にしてみます。Dockerfileは少し複雑になります。 まずVim8のソースコードをcloneするためのgitや、ビルドするためのgccなど必要なパッケージをインストールします。 その後、git cloneしてcdでディレクトリに移動してからビルドしますがDockerでは以下のようにRUN cd vimとしてもconfigureが実行できません。 Dockerはコマンド1つ毎にカレントディレクトリに戻りますのでcdした後に&&で続けてビルドを実行しないとカレントディレクトリに戻って実行してしまうのでエラーになります。 configureが終わったらmake installして完了です。 コンテナを立ち上げてVimを確認します。 Vimの確認は以下のコマンドです。 +pythonとなっているのでPython2, Python3が有効になっています。 Vimを起動して確認してみましょう。 ノーマルモードで以下のコマンドを実行して1が表示されればPythonは有効になっています。 4. NeoVim + Python 最後にNeoVim+Pythonを試します。Pythonをインストールし、pipでneovimパッケージをインストールするだけですので前述のVim8ほど複雑ではありません。 Python3のpipはneovimをインストールする前にupgradeしないと怒られるのでupgradeしてからneovim installとしています。 こちらもコンテナを起動して確認します。 NeoVimはヘルスチェックができるので起動後、ノーマルモードでヘルスチェックコマンドを実行しましょう。 Python2, Python3のどちらもOKとなっているので有効であることが確認できました。 まとめ DockerでのVimのインストール方法をまとめてみました。Dockerを使う場合はファイル共有にしてローカルのVimで開発するのでDocker上でVimを使用することは少ないのですが、Dockerfileを作成しておくことは無駄ではないかな、と思い作成してみました。 Docker上で開発を行うVimmerの役に立てれば幸いです。 今回作成したDockerfileはこちら。https://github.com/aizulab-igarashi/docker_vim
-
React Nativeの認証フローを考える

React Nativeのアプリ開発やReactのSPA開発において認証フローは、クオリティを左右する重要な要素であることは間違いない。 実際、検索結果には、認証フローに言及した記事や質問が投稿されていて関心の高さが伺える。その内容としては、ルーター設計における認証フローに関するものが多くを占めている印象だ。 そしてReact Nativeのルーター設計には、React Navigationやreact-native-router-fluxが使われるが、いずれもルーター・ナビゲーションライブラリであって認証ロジックを提供していない。すなわちルーターで良しなに対応するか、自作の認証ロジックをこしらえる必要がある。 このエントリーでは、React Nativeの認証フロー について考えてみたい。 そもそも… そもそもReact Navigationの公式ドキュメントに、認証フローに言及したページがある。これはナビゲーションロジックを駆使して認証コンポーネントとプライベートコンポーネントを振り分けるというものだ。 まったくもって理にかなう認証フローだと思う。 その内容で十分だと思うならば、そちらを参考にするのがよいだろう。ただし認証ロジックを提供するものではないことは理解しなければならない。 認証フローのデモンストレーション AppScreen.js AppNavigator定数がメインナビゲーションに該当する。認証後に表示されるコンポーネントだ。AppNavigatorをcreateAppContainer(…)にセットした上で、withAuthenticator(…)にセットする。withAuthenticatorは、高階コンポーネントになっていて条件によって別コンポーネントを返す。 withAuthenticator.js まずconstructor(props) {…}で認証トークンを取得済みか否かを確認する。その結果で認証コンポーネントかプライベートコンポーネントに振り分ける。 認証トークン取得済みであればprops.authenticate(true);を実行して、this.props.isAuthenticatedの状態を更新する。これによってif (isAuthenticated) return <Component />;のコンポーネントが返される。すなわちこれは、AppScreen.jsで定義したcreateAppContainer(AppNavigator)を参照する。 認証トークン未取得であればprops.signIn();を実行して、this.props.authStageの状態を更新する。これによってswitch (authStage) {…}のcase types.SIGN_IN:が該当する。したがってサインインコンポーネントが返される。 authentication.js Reduxのaction-creatorとaction-type、reducerをまとめている。いわゆるDucksというデザインパターンだ。 stateにはisAuthenticatedとauthStageを定義している。この状態を更新するためにaction-creatorのforgotPassword、signUp、signIn、authenticateがある。 forgotPassword、signUp、signInは、authStageの状態を担当し、action-typeの定数値に更新する。 authenticateは、isAuthenticatedの状態を担当し、真偽値を受け取って更新する。 まとめ React Nativeの認証フロー に関する内容だった。 この内容ではReact Navigationを使っているが、react-native-router-fluxであっても再現可能だ。AppScreen.jsのwithAuthenticator(…)にreact-native-router-fluxのルーターコンポーネントをセットすればよい。 ただこの認証フローにも悩みどころがある。 React Navigationかreact-native-router-fluxに関わらず、認証コンポーネントはナビゲーション管轄外になっていることで、ヘッダーが表示されない。認証画面などにもヘッダーが必要ならば、NativeBaseなどのUIコンポーネントでヘッダーUIを挿入したり、各コンポーネントもナビゲーション化しなければならない。 UIコンポーネントを使う手段は、ヘッダーUIに差異が発生するから却下だろう。ナビゲーション化は、せっかく振り分けたのに、どこかモヤモヤする。 素直にReact Navigationの認証フローに倣ったほうがよいのかもしれない。 このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。
-
レスポンシブに対応したHTMLメールフレームワーク「MJML」でコーディングしてみる

HTMLメールのコーディングが難しいという声を聞く。わたしも同感だ。 Webコンテンツであれば、Webブラウザで表示されるようにコーディングをする。ところがHTMLメールのターゲットであるメールクライアントには、Webブラウザほど優れたレンダリングエンジンを積んでいないものもある。 つまりWebコンテンツのようにCSSコーディングができない。HTMLメール作成においては、だいたいはテーブルコーディングを行う。このような条件でメーラー依存を吸収してコーディングするというのは、骨が折れる。 このエントリーでは、メールクライアント間の依存を解消できるHTMLメールフレームワーク「MJML」を紹介したい。 MJMLについて MJMLは、HTMLメールを作成するHTMLメールフレームワークである。カスタムタグでコンポーネントベースに構成されていて、<mj-body>、<mj-section>、<mj-row>、<mj-column>などのセクショニング・コンテンツの要領で簡単にセマンティックコーディングできる。これらカスタムタグは公開用ビルドをすることでHTMLに変換される。 【MJML】 https://mjml.io/ 特徴 MJMLに触れてみる まずはMJMLを導入してみよう。 初期化 任意のプロジェクトフォルダにpackage.jsonがなければ以下コマンドで初期化すること。 導入 つづいて以下コマンドで、mjmlパッケージモジュールをインストールする。この時点でプロジェクトフォルダには、node_modulesとpackage.jsonが生成される。 作成 つづいてmjmlファイルを用意する。このサンプルではinput.mjmlとしたが、ファイル名は任意で構わない。 レンダリング つづいてHTMLにレンダリングする。 そもそも導入時のnodeパッケージは、ローカルのプロジェクトフォルダにインストールしたものだった。したがって、実行コマンドは./node_modules/mjml/bin/mjmlを参照しなければならない。 パスを設定すれば、プロジェクトフォルダ内でmjmlが可能になるとのことだが、わたしの理解が曖昧なため触れないでおきたい。 気になる場合は、mjml-cliのREADME.mdを参考にするとよい。 果たして、ターミナルにHTMLソースコードがレンダリングされただろうか。 アウトプット アウトプット方法についても触れておこう。以下コマンドでinput.mjmlをoutput.htmlにアウトプットしている。 まとめ レスポンシブ対応のHTMLメールフレームワーク「MJML」の紹介だった。 プログレッシブ・エンハンスメントが叫ばれて久しい昨今でもテーブルコーディングを行わざるを得ないHTMLメールであるが、MJMLを使うことでわざわざ煩わされることもない。 コンポーネントベースに構成されたカスタムタグは、その名称からおよその使い所を推測することが可能だろう。<mj-button>ならばボタンを担うタグという具合に、セマンティックコーディングの要領で記述することができる。 日頃HTMLに慣れ親しんでいるならば、ほとんど学習コストがかからず楽に導入できるはずだ。HTMLメール作成することがあればMJMLを使ってみてはいかがだろうか。 このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。
-
React NavigationのcreateBottomTabNavigatorでヘッダーUIを表示する方法

React Navigationのルーティング設定で、ヘッダーUIとタブバーUIを含むとき、タブ切り替えナビゲーションを担うcreateBottomTabNavigatorを使う。 ところが、createBottomTabNavigatorではヘッダーUIが表示されない。 タブバーUIにおいて、ヘッダーUIが不要なケースがあるかもしれないからヘッダーコンポーネントを含めていないと思われる。しかしその一方でcreateStackNavigatorだとヘッダーUIが表示される。 感の鋭いひとは、気づいたかもしれない。createBottomTabNavigatorとcreateStackNavigatorを複合的に使うことでヘッダーUIとタブバーUIの配置を実現できるということに。 このエントリーでは、ヘッダーとタブバーの要件を満たすReact Navigationのカスタマイズ方法を紹介したい。 createBottomTabNavigatorでタブバーUIを表示する 以下ソースコードを見てほしい。 createBottomTabNavigator APIを使っている。createBottomTabNavigatorの引数には、オブジェクト形式でHome, Cart, Settingプロパティが確認できる。各プロパティには、さらにオブジェクト形式でscreen, navigationOptionsプロパティがあり、screenに任意のReact.Componentを適用して、navigationOptionsでタブラベルを設定している。 タブバーUI設置は実現しているが、例によってヘッダーUIは表示されない。 createStackNavigatorでヘッダーUIを表示する 以下ソースコードを見てほしい。 行数が増えているが、実は、いたってシンプルだ。前述のソースコードからの変更点は、screenプロパティにcreateStackNavigatorを書いている。以下、差分キャプチャを見てほしい。 createBottomTabNavigatorのscreenにcreateStackNavigatorを展開しているだけだ。オブジェクトがネストして分かりにくさを覚えるが、createBottomTabNavigatorとcreateStackNavigatorのコンポーネントを通して任意のコンポーネントが表示される仕組みになっている。 果たして、タブバーUIとヘッダーUIを表示することができた。 まとめ ヘッダーUIとタブバーUIの要件を満たすReact Navigationのカスタマイズ方法の紹介だった。 「createBottomTabNavigatorのscreenにcreateStackNavigatorを展開している」と表現して、わたし自身があらためてスッキリした。ネストが多くてややこしいのだけれど、createBottomTabNavigatorのつもりで記述を済ませてからcreateStackNavigatorを書き加えると迷子になりにくいかもしれない。 このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。
-
会津若松市の高齢者福祉サービス「施術所利用券」の交付対象年齢75歳以上の人口をe-Stat APIで調べてみた

高齢化社会にともない各自治体でさまざまなサービスが展開されている。会津若松市でも同様で高齢福祉課では、いくつかの高齢者福祉サービスを実施している。 たとえば、給食サービスや緊急通報システム、介護者慰労金などが挙げられる。養護老人ホームも一般的なサービスのひとつだ。 さて今回取り上げたいサービスは、「はり、きゅう、マッサージ利用助成券」である。 はり、きゅう、マッサージ利用助成券について はり、きゅう、マッサージ利用助成券は、その名のとおり鍼やお灸、マッサージなどの施術所を利用する高齢者の出費負担を助けるものだ。 サービスを利用することで、その費用の一部を助成してくれる。対象者は、会津若松市に在住の75歳以上の高齢者で、市に登録している施術所のみで使うことができる。 助成額は、1枚800円で、最大6枚の助成券を交付される。つまり4,800円を節約できるわけだ。施術所によっては一回分に等しい額になる。申請するタイミングによって獲得できる枚数が変わるから気をつけてほしい。 施術所利用券に着眼した理由 施術所利用券に着眼した理由についても述べておこう。 わたしはロードバイクでサイクリングをすることが趣味で、ホビーレースに参加することもある。そのトレーニングで筋肉を痛めてしまい鍼灸院に通院した。 そこで施術所利用券の話を聞き、高齢者による施術所利用券の利用が芳しくないということだった。きっと施術所利用券のこと自体が認知されていないのだろうと思う。 このブログで少しでも広まればという想いとともに、技術ブログらしくAPIを活用して対象年齢の人口を調べて見ようと思ったのが理由だ。 会津若松市の75歳以上の人口 ようやく本題だ。会津若松市の75歳以上の人口を調べるには市区町村データを閲覧すれば済むのだが、それでは技術ブログらしくない。よってWebAPIを利用したい。 e-Stat APIを使う。e-Stat APIは、日本の統計が閲覧できる政府統計ポータルサイトだ。さまざまな分野の統計データが蓄積されていて、要件にあったものを詳細に検索できる。 e-Stat APIを使うための準備 1. ユーザー登録 政府統計の総合窓口(e-Stat)ユーザ登 2. アプリケーションIDの取得 マイページから、開発するアプリケーションを登録してアプリケーションIDを取得する。「アプリケーションIDの取得」の項目を記入する。名称、URL、概要がある。公開しないものならばURLは、「http://localhost/」とする。 e-Stat APIの使い方 e-Stat APIは、つぎの 統計表情報取得 メタ情報取得 統計データ取得? データセット登録 データセット参照 データカタログ情報取得 統計データ一括取得 が提供されている。このたびの要件である人口統計を取得するには、統計データ取得APIを利用する。統計データ取得APIのリクエストURLは、4パターン用意されている。XML、JSON、JSONP、CSV形式で、つぎのとおりだ。いずれもGETメソッドでリクエストする。 形式 URL XML形式 http(s)://api.e-stat.go.jp/rest/<バージョン>/app/getStatsData?<パラメータ群> JSON形式 http(s)://api.e-stat.go.jp/rest/<バージョン>/app/json/getStatsData?<パラメータ群> JSONP形式 http(s)://api.e-stat.go.jp/rest/<バージョン>/app/jsonp/getStatsData?<パラメータ群> CSV形式 http(s)://api.e-stat.go.jp/rest/<バージョン>/app/getSimpleStatsData?<パラメータ群> 会津若松市の75歳以上の人口を取得するリクエストURL http://api.e-stat.go.jp/rest/3.0/app/json/getStatsData?cdArea=07202&cdCat01=A1419&appId=<アプリケーションID>&lang=J&statsDataId=0000020201&metaGetFlg=Y&cntGetFlg=N§ionHeaderFlg=1 ご覧のとおりJSON形式のリクエストURLだ。そしてappIdパラメータは、先ほど作成したアプリケーションIDを適用する。以下キャプチャは、HTTPクライアントのPostmanで確認したときのものだ。 レスポンスデータを表示する リクエストURLについては見てもらった。そして会津若松市の75歳以上の人口も返却されているとわかった。 さてこれをWebページに表示したい。以下にサンプルソースコードとキャプチャを用意した。 会津若松市の75歳以上の人口は、18,466人であることがわかった。ただし、この人口は2015年時点のものだ。 まとめ…
-
360度画像をインタラクティブ表示するJavaScriptライブラリ「immersive-custom-elements」の使い方

全天球カメラやスマホアプリで撮った360度画像をWebページに配置するケースを考えてほしい。このようなときそのままimgタグで配置するようなことはあり得ない。360度画像を平面で見ても、せっかくの臨場感や没入感を味わうことができないからだ。 きっとぐるりと見渡すようなコンテンツを思い出すのではないだろうか。最近では不動産サイトや会社案内、宿泊施設などで活用されるシーンも増えていて目にすることがあると思う。 このエントリーでは、360度画像を表示するJavaScriptライブラリ「immersive-custom-elements」を紹介したい。 immersive-custom-elementsについて immersive-custom-elementsは、360度コンテンツをWebサイトに配置できる。ライブラリの読み込みとHTMLカスタム要素の配置のみの簡単仕様になっている。 特徴 ほかライブラリに依存しない 意識的にインスタンスしない HTMLカスタム要素で配置が簡単 オプションはHTMLカスタム要素の属性に記述 導入 導入は、CDNから読み込むかGitHubリポジトリから入手してほしい。今日現在ではnodeパッケージは無かった。したがって、いまはnpmインストールはできない。 CDNで読み込む 使い方 <img-360> 360度画像用のHTMLカスタム要素だ。 属性 型 必須 説明 src string yes 画像ファイルのパス width number yes 要素の幅 height number yes 要素の高さ <video-360> 360度映像を再生するHTMLカスタム要素だ。 属性 型 必須 説明 src strings yes 映像ファイルのパス width number yes 要素の幅 height number yes 要素の高さ loop – no ビデオループ muted…
