会津ラボ

Illustration of a bird flying.
  • API GatewayのKongをインストールしてみた

    API GatewayのKongをインストールしてみた

    私はAmazon API Gatewayを利用したことがありました。テストを行う際、そこで全て完結して便利だな程度で利用していました。 同じようなAPI GatewayにKongというものがあることを知りました。Kongとは、いろんなところに存在するAPIをKongを通じて利用できるようにする仕組み、APIプラットフォームです。 オープンソースとして公開されています。Kongがどのようなものか掴むためインストールする方法を紹介します。 Kongとは? Kong社が2015年に公開したAPIゲートウェイと、そのプラットフォーム。 導入できる主な機能 認証 セキュリティ ロギング トラフィック制御 また、 nginxベースにより、高速、高負荷に強い プラグインを組み込みよる柔軟な拡張可能 等の特徴があります。 検証バージョン Docker-compose 版を利用しました。 Docker : 2.1.0.0 (36874)macOS : High Sierra Docker以外 のインストールも様々用意されてます。 参考公式ドキュメントは、こちらdockerhubは、こちら 動作確認にむけた手順 1.一式をダウンロード、展開2.docker-composeにてイメージビルド、コンテナ起動 3.コンテナ実行 4.cURL にて動作確認 ↓ レスポンス Kongの利用 5-minute Quickstartの案内を実行してみました。 1.コンテナ実行 2.DB マイグレーション(データベース準備)( .confファイルを指定すれば、独自の構成も試せます。) 3.Kong 開始 (停止する場合) (リロードする場合) KongデフォルトListenポート 8000 : クライアントからのHTTPトラフィック用、upstreamサービスに転送 8443 : クライアントからのHTTPSトラフィック用、8000と似ているがHTTPSのみ…

    August 22, 2019
  • [react-native-router-flux] フォーカスされてるタブのアイコンにアクティブカラーをつける方法

    [react-native-router-flux] フォーカスされてるタブのアイコンにアクティブカラーをつける方法

    react-native-router-fluxを使ってRouter設計するとき、タブバーUI用にTabsコンポーネントがある。アプリのスクリーン下部にあるナビゲーションUIのことだ。 タブバーデザインにおいてよほどの理由がない限りは、Tabsコンポーネントを使う。UIコンポーネントを利用すれば同様のものが設置できるし、自作タブバーにすることもできるが、わざわざそうする理由もない。なにより遷移設定が面倒くさい。 そんなTabsコンポーネントであるが、アクティブ時のカラーや非アクティブ時のカラーをカスタマイズするpropsがある。これを書き加えることで、タップしたときに色を変えられるわけだ。 しかしアイコン表示において手こずった事案があった。 このエントリーでは、フォーカスされているタブのアイコンにアクティブカラーをつける方法を共有したい。 react-native ^0.59.8 react-native-router-flux ^4.0.6 native-base ^2.13.4 タブバーにアイコンを表示する まずはRouter設定をする。使うコンポーネントは、 <Router> <Tabs> <Scene> の3つ。タブは「ホーム、カート、設定」を切り替える単純なものを想定している。 上記ソースコードのコメントアウト行を見てほしい。 各タブにアイコン設置するため、<Icon>を使っている。これはNativeBaseのIconコンポーネントだ。<Scene>にそれぞれ設定することでアイコンが表示される。以下のようになると思う。 つづいては、タブがフォーカスされたときにアクティブカラーを着色する工程だ。 タブがフォーカスされているとき(されていないとき)のカラーを指定する タブをタップしてフォーカスされたときに、テキストおよびアイコンがアクティブであるとわかるようにカラーを変えたい。 上記ソースコードのコメントアウト行を見てほしい。 activeTintColor propsがアクティブ時のカラーコードで、inactiveTintColor propsが非アクティブ時のカラーコードを設定している。いずれのpropsも文字列を受け付ける。 現在フォーカスされているホームタブのテキストはアクティブカラーになっている。ところが、アイコンのカラーは変わっていない。それもそのはずで、外部のコンポーネントなのだから仕方がない。 <Icon>は、NativeBaseのコンポーネントだった。アイコンのカラーを変更するには、style propsにオブジェクト形式で、CSSを記述すればよい。 上記ソースコードのコメントアウト行を見てほしい。 <Scene>のicon propsに設定した関数の引数から、focusedを受け取っている。これは真偽値が格納されている。つまりタブがフォーカスならtrueというわけだ。 style propsに、focusedがtrueならアクティブカラーで、falseなら非アクティブカラーがを渡している。これにてアイコンにもアクティブカラーを付与することができた。 まとめ フォーカスされているタブのアイコンにアクティブカラーをつける方法の共有だった。 この内容では、NativeBaseのIconコンポーネントを使っているが、自作のsvgアイコンやほかのUIコンポーネントであっても同様のことができるはずだ。focusedを受け取ってフォーカスか否かを確認して切り替えればよいのだから。 このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。

    August 21, 2019
  • [CSS] タブ切り替えUIのスライドするインジケータを作る方法

    [CSS] タブ切り替えUIのスライドするインジケータを作る方法

    タブ切り替えは、省スペースにコンテンツを配置できるUIで、Webサイト、ネイティブアプリ問わずに実装されている。 タブをクリック、もしくはタップすれば、対象エリアがそのタブに関連する情報に切り替わる仕組みだ。そしてクリックされたタブは、アクティブ状態のスタイルが付与される。これがフィードバックとなって、ユーザーは自身がクリックしたタブを認識できるということなのだろう。 このアクティブ状態の表現はさまざまで多種多様にある。たとえば、内包するテキストやロゴの色が濃くなったり、サイズが大きくなったりする。あるいは、タブ自体に罫線が付いたり、影が付いたりする。 さらにはアニメーションで表現するものもある。 アクティブ状態のタブの上辺か下辺にボーダーがあって、タブ切り替え時に横にスライドするといったものだ。タブの横幅が不一致である場合は、ボーダーも可変する。 このエントリーでは、タブ切り替えUIにスライドするインジケータを作る方法を紹介したい。 タブ切り替えUIをコーディングする HTML <li class=”tabbar-indicator”></li>がインジケータを担っている。タブ下辺にあるボーダーを表現するためだけのタグだ。 CSS (SCSS) .tabbar-indicator {…}がインジケータのスタイルだ。ポイントはposition: absolute;で、各タブの梱包要素を基準に絶対位置に配置している。この場合は、下部だからbottom: 0;というわけだ。そしてtransition: width 225ms ease, left 225ms ease;で変化するプロパティを指定している。この場合は、widthとleftが対象になる。 JS クリックしたタブの左辺オフセット値と横幅をインジケータ要素にスタイル付与している。CSSのtransitionでwidthとleftが対象だった。つまりクリックしたタブの左辺まで移動しながら横幅がフィットするようなアニメーションが実現する。 まとめ タブ切り替えUIにスライドするインジケータを作る方法の紹介だった。 タブ切り替えUIにおいてはサンプルのとおり記述してもらえば再現はするが、コンテンツ部分は記述しなかった。理解の妨げになると思ってのことだけれど、もし上記ソースコードをカスタマイズするならば、JSのif (e.target.matches(this.element)) {…}内で展開すればよい。イベントデリゲートでタブクリックだったか否かを判定してくれるif文だ。タブ要素に、data属性でも記述してコンテンツ要素と結びつければタブ切り替え機能の完成だ。機会があれば挑戦してみてほしい。 このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。

    August 20, 2019
  • [CSS] いろんなアスペクト比に対応する!iframe,canvasの縦横を維持させる方法

    [CSS] いろんなアスペクト比に対応する!iframe,canvasの縦横を維持させる方法

    レスポンシブデザインに、iframeやcanvasのメディアタグ埋め込みが要求される場合、表示を維持するため縦横サイズが保たれた状態にしなければならない。きっとそのようなケースに少なくない。 そのようなときは、おそらくpadding-top: 56.25%;とかpadding-top: 75%;とかpadding-top: 66.6666%;などプロパティを目にすることもあると思う。 これは矩形要素がアスペクト比を維持するために適用するCSSプロパティのひとつなのだが、その比率によって数値が変わるわけだ。たとえば、横1920px縦1080pxの比率は「 16:9 」に該当する。横1024px縦768pxの比率は「 4:3 」に該当する。 ところが、デザインによってはこの限りではない。黄金比や白銀比だってあるし、固有の比率に調整しなければならないことだってある。 このエントリーでは、デザイン固有の縦横を維持させる方法を紹介したい。 アスペクト比とは アスペクト比は、矩形の縦横比率のこと。縦横比でも通じる。また映像デバイスの場合、画面比率と呼ばれることもある。 レスポンシブデザインがデファクトスタンダードとなった昨今では、メディアタグを可変対応するときにアスペクト比が用いられる。 埋め込みタグを可変にする それでは埋め込みタグを可変にする記述を確認してもらいたい。 HTML CSS 上記の例では、<iframe>だけれど<canvas>でも同様にすればよい。 まず埋め込みタグを梱包する要素が必要だ。上記の例では、<div class=”wrapper”>が梱包要素だ。この梱包要素でアスペクト比を維持して、埋め込みタグはそこにフィットさせるというのが作法になる。重要なのは梱包要素のpadding-top: ◯◯%;だけで、そのほかのプロパティは大概変わることがない。 さてポイントのpadding-top: ◯◯%;であるが、アスペクト比で変わる。前述したように、padding-top: 56.25%;やpadding-top: 75%;を目にしたことがあるのではないかと想像できたのは、オーソドックスなアスペクト比に準拠した%値だったからだ。 せっかくだから、そのまま覚えてしまうのがよいと思える。早見表を用意した。 アスペクト比 パーセント 16:9 56.25% 4:3 75% 3:2 66.6666% ここまでは、もっとも代表的な比率をもとに算出した結果であるが、デザイン固有のサイズだった場合は、別途アスペクト比を求めなければならない。計算しなければならないわけだ。これが面倒くさい。きっとこの対応を求められた頃には、計算式を忘れてしまっていることだろう。 だからツールを使うことをオススメする。 Googleマップを可変にする Googleマップの埋め込みタグを可変にしてみたい。この場合のアスペクト比は、「 5:3 」という世にも珍しい比率で試したい。計算したサイズは、横500px縦300pxである。 See the Pen Untitled by Takuya Takaku (@takuya-takaku) on CodePen. まとめ デザイン固有の縦横比を維持させる方法の紹介だった。一般的なアスペクト比であるならば、早見表のとおりにpadding-top: ◯◯%;を指定するとよい。デザイン固有のサイズを求められたならば、ツールを活用してみてはどうだろうか。…

    August 19, 2019
  • ワンクリックでアバター写真を取得する。Adobe XDプラグイン「UI Faces」の紹介

    ワンクリックでアバター写真を取得する。Adobe XDプラグイン「UI Faces」の紹介

    コーポレートサイトやブログ、ランディングページにおいても、ユーザーを紹介するUIは珍しくない。コーポレートサイトなら、事業主や代表挨拶の項目が考えられる。ブログなら、記事を投稿するライター説明の項目が考えられる。ランディングページなら、イベントのスピーカー紹介の項目が考えられる。 このように多くのケースでプロフィール項目は必要とされている。そしてこれらプロフィール項目には必ず対象人物の写真が配置されるわけだが、「モックアップ制作時にはまだ入手できていない」なんてことはよくある。 そんな場合は、枠だけ設けたり、ダミーの写真を使ったりと対策する。ところが、枠だけだと雰囲気もクソもなく、クライアントに伝わらないこともある。無関係な風景画だと誤解されてしまう恐れもあって、いちいち人物画を探す。これが手間になっている。 このエントリーでは、Adobe XDプラグイン「UI Faces」でアバター追加方法を紹介したい。 UI Faces プラグインについて UI Facesは、アバター写真を提供するAdobe XDプラグインだ。UI Facesで提供される写真は、MicrosoftのFace APIにリクエストすることで取得している。ただし、当該プラグイン作成元の「UIFaces.co」が保有するものではない。 特徴 ワンクリックでアバターを取得する 「年齢、性別、感情、髪の色」のフィルター モックアップ作成の効率化 インストール UI Facesをインストールするには、Adobe XDツールバー「プラグイン」>「プラグインを見つける…」をクリックするとプラグインウインドウが開く。 つづいて、ウインドウ右上の入力フォームに「UI Faces」を入力すれば、対象プラグインのみリストアップされるはずだ。インストールボタンをクリックして完了させよう。 使い方 アバターを表示したいオブジェクトを選択にして、Adobe XDツールバー「プラグイン」>「UI Faces」をクリックする。まもなく左メニューが切り替わる。「Apply」ボタンをクリックすれば、選択していたオブジェクトにアバターが追加される。 必要に応じて「年齢、性別、感情、髪の色」フィルターを活用するとよい。 まとめ Adobe XDプラグイン「UI Faces」の紹介だった。ワンクリックでアバター追加できるところを見てもらったが、いずれの写真も個人、非営利的な閲覧のみを目的としているため、Webサイトに配置してはいけない。詳しくは利用規約を確認してほしい。 このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。

    August 17, 2019
  • CSS Grid Layoutでガントチャートを作る

    CSS Grid Layoutでガントチャートを作る

    Webアプリ制作には、管理者ページが付き物。商品管理やユーザー管理、アプリ全体の設定など管理者が行うためのWebページ設置は必然的といえる。 その管理Webページで求められる機能のひとつに、ガントチャートがある。スケジュールやシフトを確認するための棒グラフの一種だ。 このエントリーでは、ガントチャートをCSS Grid Layoutでコーディングする方法を紹介したい。 ガントチャートを作る 以下のガントチャートは、シフト表をイメージしている。8時〜23時までの15分単位で、勤務時間を棒線で示す。棒線の色の違いは、シフトパターンやスタッフの雇用形態などを想定してのことだ。 全体に関わるスタイルの差異によってはイメージしたものにならないかもしれない。その場合は、都合よく調整してほしい。 HTML SCSS まとめ 以上が、ガントチャートを構成するHTML,CSSだ。 ご覧のとおりHTMLには、インラインスタイルばかりで気になるかもしれないが、動的にフレーム数が増減したり、grid-columnの開始,終了地点が変動したりを考慮して、やむを得ずだ。ちゃんと分離する方法があるなら、そうするとよい。 インラインスタイルのプロパティで-msから始まるものは、IE用のベンダープレフィックスだ。IE10,11に適用されるはずだが、確認はしていない。IE対応が必要なら必ずチェックするように! このエントリーが、あなたのクリエイティビティを刺激するものであると期待したい。

    August 16, 2019
  • AWS Lambda で Python みたいな関数型言語 Coconut を動かすぞ!!!!!!!(非カスタムランタイム)

    AWS Lambda で Python みたいな関数型言語 Coconut を動かすぞ!!!!!!!(非カスタムランタイム)

    みなさんはじめまして!!!!!!!!!!!! 会津ラボで主にバックエンドの開発を担当している吉原です。他にブロックチェーン等もやってます。好きな言語は Haskell、趣味はクイズゲームです。以後お見知りおきを。 ※ ちなみに弊社には吉の字がつくバックエンド担当が2人おり、度々間違われます。当ブログをご覧になる場合はご留意ください。 さて、今日(注:執筆開始時点)はお盆です。 ……お盆も働いていたやつらだ。面構えが違う。 というのは冗談で、お盆休みをずらして取得しているため、その代わりに出勤しています。こういったことができる所も会津ラボの魅力の1つかなと思います。 閑話休題。 みなさん、Haskell してますか? え? Haskell って何? いますぐすごい H 本(Miran Lipovača『すごい Haskell たのしく学ぼう!』 オーム社)を読んでください。 Haskell は一般的に関数型言語と呼ばれるプログラミング言語の1つです。その中でも強い静的型付けの純粋関数型言語といったようなものになります。要するにつよい。 でもお仕事で Haskell を書くことはほぼありません。 なんでや! こんなにかわいいのに…… みんな、Haskell、書こう。 ……嘆いていても仕方ありません。じゃあ普段はどんな言語を使っているかといいますと、最近は主に Python とか JavaScript です。 みなさん、JS 好きですか? ……誤解を招きそうなのでもう一度。JavaScript 好きですか? ……なるほど。まあ私も JavaScript よりは Python の方が好きです。Python はいいですよね。シンプルで読み書きしやすいし、あとロゴがかわいい(重要)。 でもずっと Python を書いていると、ついこう思ってしまいませんか? もっと関数型したい…… Python はラムダ式やイテレータを始め、一般的に関数型プログラミングと呼ばれるスタイルにおいて有用な機能を多く持っています。 でも……もっと関数型の力が欲しくないか……? もっと軽率に関数合成したり、部分適用したり、パイプでつなげたり、パターンマッチしたり、あわよくば代数的データ型を使ったりしたくないか……? そこで登場するのが Coconut というプログラミング言語です。 Coconut http://coconut-lang.org/…

    August 15, 2019
  • カード型UIのユニークデザインとコーディングサンプルまとめ

    カード型UIのユニークデザインとコーディングサンプルまとめ

    カード型UIは、情報をグループ化することでユーザーの視認性を高めてくれる。さらに領域自体がクリッカブルになることで、操作性の向上が見込め、ユーザビリティ観点からみても魅力的なインターフェースであることは間違いない。 カード型UIの構造としては、画像、要約、リンク、シェアボタンなどで組まれることが多い。画像は、円形でアバター写真だったり、カード背景全面に表示したり、アレンジしたものも見受けられる。リンクは、詳細ページへの誘導を目的としていて、遷移先にさらにボリュームをもった情報があることを感じさせる。 柔軟なレイアウトをもつカード型UIであるが、レスポンシブデザインで勝手がよい。要約文が増えればカードが伸びるし、表示幅が変わればカード幅が可変する。またカルーセル式に配置して省スペースを有効活用する場合にも効果的だ。 そんなカード型UIがいかにしてコーディングされているのか、いくつかcodepen.ioのサンプルを紹介したい。 カード型UIのコーディング Bumble Card See the Pen Bumble Card by Dave Kwiatkowski (@davekwiatkowski) on CodePen. Awesome Profile Card See the Pen Awesome Profile Card by SercaN (@iZMiRLy) on CodePen. Visit Card See the Pen Visit Card by Slavko (@djoga98) on CodePen. Card [WIP] See the Pen Codepenchallenge: Card by Travis John (@travis_john)…

    August 9, 2019
  • [React Native] ExpoのPush Notificationsでプッシュ通知する

    [React Native] ExpoのPush Notificationsでプッシュ通知する

    このエントリーでは、ExpoのPush Notifications APIの実装、そしてプッシュ通知のテスト送信まで一連を紹介したい。 難しいのでは?と思ったあなたも大丈夫。 私は最近までプッシュ通知とは無縁のマークアップエンジニアで、スマホアプリ開発の経験といってもハイブリッドアプリ開発に携わった程度のものだ。プッシュ通知にどのような手続きが必要なのか全く無知な状態だったわけだが、テスト送信までした所感として、「簡単」だと言い切れる。 というのも結局は手続きというものはなく、証明書作成が不要だ。またAPNs/GCMといったプッシュ通知サービスへのリクエストもExpoが良しなにこなしてくれるため、条件分岐も不要だ。 ともあれ体感してもらうのが早かろうと思う。 コーディング App.js 重要なAPIは、NotificationsとPermissions、Constantsの3つ。デバイストークンを取得するまでの処理が記述されている。トークン取得に関わる処理はregisterForPushNotificationsAsync()メソッドに書かれていて、Appコンポーネントがマウントされた時点で、実行される。 デバイストークンを取得 プッシュ通知は「”◯◯”は通知を送信します。よろしいですか?」のアラートを許可することでデバイストークンが得られる。アラートに「ExponentPushToken[**********]」が表示されていれば、ひとまず成功だ。デバイストークンはテスト送信ツールに入力するため、メモしておこう。 プッシュ通知をテスト送信 「Push notifications tool」に通知したい内容を入力する。EXPO PUSH TOKEN (FROM YOUR APP)のデバイストークンが必須項目で、あとは適宜必要なものは入力するとよい。今回のプッシュ通知は、MESSAGE TITLEとMESSAGE BODYのみ入力している。Send a notificationボタンをクリックすれば、プッシュ通知サービスに送られる。 EXPO PUSH TOKEN (FROM YOUR APP) MESSAGE TITLE MESSAGE BODY Play sound JSON DATA TTL (SECONDS) IMAGE AUDIO (IOS ONLY) VIDEO (IOS ONLY) iOS MESSAGE SUBTITLE MESSAGE CATEGORY BADGE COUNT…

    August 8, 2019
  • [Go + Travis]Go言語でTDDを体験してみる

    [Go + Travis]Go言語でTDDを体験してみる

    テスト駆動開発(TDD)に興味があり、Goのテストも勉強中でしたのでCIを利用してモダンな開発環境を試してみようと思いつきました。 DockerでGo環境を構築し、Githubでソース管理、Travis CIでテストを実行してTDDする、という構成で試してみます。 仕様するツール、サービス Docker Github Travis CI ディレクトリ構成 Docker まずはdocker-composeでGo環境を作成します。 docker-compose.yml これでGoが使用できる環境となりました。 テストを失敗させる まずはテストを失敗させるところまで実装します。 今回はフィボナッチ数を求める関数を作成してテストしてみます。 sample_test.go 8のフィボナッチ数は21なのでそれ以外の数値が返ってきた場合にはfailedとなるテストを作成しました。 テストが通るようにmain.goとsample.goも実装します。 main.go sample.go 現状は受け取ったintを返却しているだけなのでテストは失敗します。 ローカルで実行してみましょう。 sample_test.go:9 failedとなっているのでテストが失敗していることがわかります。 Travis CI 続いてTravisでのCI環境を作ってみます。 まずはTravisにアクセスしGithubアカウントと連携します。 アカウントが連携できるとリポジトリを選択できるので、今回使用するリポジトリにチェックをつけます。 次にTravisの設定ファイルを作成します。 .travis.yml 内容はほぼ公式のコピペです。。。 これでTravisを使用する準備ができたので、変更をGithubにpushします。 pushが完了するとTravisでテストが実行され以下のように失敗が確認できます。 テストを成功させる 次にテストが成功するように関数を実装します。 sample.go フィボナッチ数で調べるとこの数式が出てくるのでそれをそのまま実装した形です。 これをGithubにpushしてTravisを確認してみます。 テストの成功が確認できました。 まとめ 今回はDocker,Github,Travisを使用しましたが、この構成でもかなりシンプルな環境と思います。 本番環境にデプロイするためにKubernetesを利用したり、Gitにpushする前に(pre-push)テストを実行するように設定したり、など、身につけるべきスキルはたくさんありますので少しずつ学んで最適な開発環境にしたいです。

    August 7, 2019
←Previous Page
1 … 6 7 8 9 10 … 14
Next Page→

会津ラボ

Proudly powered by WordPress