LaravelからAppSync APIをIAM認証で実行する

本投稿は TECOTEC Advent Calendar 2021 の8日目の記事です。

こんにちは。決済認証システム開発事業部の鈴木です。

本投稿では表題の通り「LaravelアプリケーションからAppSync APIをIAM認証で実行する」方法についてハンズオン的に記載したいと思います。

概要

以下画像の赤矢印で示した部分が、今回の説明対象です。

概要図

フロントエンドからは、直接AppSyncで開発したGraphQL APIを実行することが可能であり、またLaravelアプリケーションからも、AppSyncを介することなく、AWS SDK for PHPlaravel-dynamodb などのライブラリを使用することでDynamoDBのデータ操作を行うことが可能であるため、一見するとEC2(サーバサイド)とAppSyncを繋ぐ矢印は必要ないように見えます。

しかし、リアルタイムデータ同期にはAppSync(GraphQL)のMutationおよびSubscriptionを利用する為、サーバサイドから直接DynamoDBにアクセスするのではなく、AppSyncを利用した方がよいこともあったりします。

続きを読む

Flutter × Firebase ユーザー登録

本投稿は TECOTEC Advent Calendar 2021 の7日目の記事です。

こんばんは、次世代デジタル基盤開発事業部(旧ブロックチェーン事業部)の広瀬です。

今回はよく見かけるメールアドレスとパスワードによるユーザー作成機能を実装しました。
ユーザ作成だけだと味気なかったため、コレクション「users」を用意し
こちらにもデータを残す想定で進めます。
※復習もかねて

比較的簡単な実装なので、サクッと進めます。

前提条件

Flutter開発環境が構築されていること

使用したパッケージ

firebase_auth

cloud_firestore

本題

それでは早速作成から

static final _firebaseAuth = FirebaseAuth.instance;
static final _firestoreInstance = FirebaseFirestore.instance;
static final CollectionReference users = _firestoreInstance.collection("users");
---
//作成
var result = await _firebaseAuth.createUserWithEmailAndPassword(email: メールアドレス, password: パスワード);
await users.doc(result.user!.uid).set({
        'name' : ユーザ名,
        'self_introduction':自己紹介,
        'create_time':Timestamp.now(),
        'update_time':Timestamp.now()});

これでユーザー情報がFirebaseに登録されていれば、完了です。
いきなりソースで驚くかもしれませんが、ユーザ−作成は以上です。
あとのパラメーターはお好みで設定していただければ大丈夫です。

FirebaseFirestore.instanceのcollectionからuidを指定すると取得できます。
ユーザーの更新や削除は下記の通りです。
※更新している情報は例です。

static final _firestoreInstance = FirebaseFirestore.instance;
static final CollectionReference users = _firestoreInstance.collection("users");
---
//更新
await users.doc(uid).update({
        'name' : ユーザ名,
        'self_introduction':自己紹介,
        'update_time':Timestamp.now(),
      }); //削除 await users.doc(uid).delete();

ユーザー情報が更新されていれば、完了です。

今回簡単なユーザー機能を紹介しましたが、
ほかにもgoogle_sign_in.dartパッケージを利用したGoogle認証機能や
登録したメールアドレスへメールを送信し、アドレスの確認機能など実装できます。
また機会があれば続きから紹介したいと思います。

以上、Firebaseを利用したユーザーの作成、更新、削除機能の実装でした。

感想

いかがだったでしょうか。 今回人生初のプログラムに関するブログを投稿させていただきました。 このブログ用に簡単なSNSアプリを作成し、そのアカウント機能を一部抜粋した内容になっておりますが、Modelなど真面目に分けて作成したため、逆にブログにまとめるため時間がかかってしまいました。

こういう場合は、画面と処理の2ファイルでまとめても良いかもしれませんね。
書き方、量については引き続き考えたいと思います。

www.tecotec.co.jp

Dvorak配列使いはDvorak配列をススメない話

本投稿は TECOTEC Advent Calendar 2021 の6日目の記事です。

こんにちは、テコテック次世代デジタル基盤開発事業部エンジニアの陳です。 普段はDvorak配列を使っていて、Dvorak配列は素晴らしいと思っています。 しかし、こんな私はあまりDvorakをススメないです。 今回の記事はその理由について話します。

Dvorak配列とは?

Dvorak配列 上の画像のようなキーボード配列はDvorakさんが考案したキーボード配列、 英語入力に特化して設計された配列です。 一般的に使われたQwerty配列と比べて、上下段の使用頻度が低くて、運指距離も短いため、 慣れると入力速度が早くなると言われています。

続きを読む

iPhone のカメラで複数の QR を同時スキャン、結果を AR 表示するアプリのサンプル

本投稿は TECOTEC Advent Calendar 2021 の5日目の記事です。

こんにちは。テコテックVPoEの八木です。 プログラミングが好きで夜な夜な色々と作ってますが、今回はその中から "iPhone のカメラで複数の QR を同時スキャン、結果を AR 表示するアプリのサンプル" をご紹介します。

まずは動画を。

f:id:teco_yagi:20211204153445g:plain

これ、海外の有料系SDKの一部がまあまあ以前から機能を有していたりするのですが、今回はピュアな Apple のフレームワークのみで実現しようという趣旨です。 その場合でも、AVFoundation のみで実現する方法と、高度なコンピュータービジョンアルゴリズムを備える Vision Framework を組み合わせる方法がありますが、今回は基本の AVFoundation のみで実現する方法をご紹介します。 (Vision についても色々と試しているので、機会があればまた)

さて、早速中身の解説です。

続きを読む

Hello Vim Script World !!

本投稿は TECOTEC Advent Calendar 2021 の4日目の記事です。

こんにちは!CISOの木村です。 😀

気がつけばテコテックで5年目のアドベントカレンダー🎄ですが
毎年この時期になると「HelloWorldでもアドベントカレンダーを書いてみてね🖊」と言っているので今回はやろうと後回しだった VimScript でやってみようと思います。

まだ書いたことがないよ😟という方も
この機会に「そういえば・・・あれ気になってたな💡」を進めてもらえたら最高です👍!!

さてエディタですが

エディタって色々ありますが 私はVimを使ってます。
最近 Version up された秀丸も愛用してましたがWindows限定なのと、気が付いたら秀丸上で:wqを入れまくってたのでVim中心になってます。

もちろん
それ以外は認めない😡!!

ではなくVSCode とか IDE も、もちろん使いますがだいたいは Vim を使ってます。

まれにメモ帳を使ってる人も見かけますが

  • 矩形選択

  • 正規表現での検索、置換

  • grep

とかできるのが便利で好きなのと

🍭フォントとか・・・
🍫色合いとか・・・
となると沼の始まりです・・・🎃

というわけでVimで使えるVimScriptですが

正直、あまりカスタマイズして使ってないので自作する必要はほぼないっちゃないのですが
やったことあるやったことないじゃ大きく違うので
今回は✨定型文をコマンドで出す!✨を目標にやってみようと思います。

使わない命令文もたくさんありますが「動かせる🏃」って大事な一歩なので
Vimから :Hello で Hello Vim Script World と出るようにしてみたいと思います。
とりあえず、ささっと調べて🦍書いてみたプログラミングがこちら

let mess = "Hello Vim Script World"  
echo mess  

保存(:w hello.vim)して実行します。
vimから

:source hello.vim  

で、すぐできたわ😆!
実行😉!!

・・・と思ったら
Vimのコンソール?に表示されてました。。。

んー・・・。。。    😥

画面に入力させたかったので思ったのと違い再チャレンジ!💨

次はこちら

let mess = "Hello Vim Script World"  
call setline('.', mess);  

勢い良く実行したら見事エラーに・・・
セミコロンがいらない文法でした。。。(リアルタイムをお届けしております)

落ち着いてセミコロンをxで消して無事修正完了
無事にエディタ(バッファ)に出力されました!

めでたし!めでたし!🎉

しかし! これで終わらないのがアドベントカレンダー!!🎀
次は・・・

コマンドで動くようにする

:source hello.vim   

と毎回やるのは面倒なのと、普段使うときはファイルパスも変わるので

:hello  

でいけるようにしたい!

まぁ エイリアスでもできそうだけど・・・
プラグインとして設置してみる! 📦

プラグインの置き場所を探す

vimで

:source &packpath  

のコマンドで出てくるフォルダの扱いやすいところに配置します。
今回はこちら(~/.vim)へ配置しますがだいたいの人はホームディレクトリの.vimやvimfilesとかでよさそうです。

説明はちょっと割愛して動くこと優先でフォルダを作ります。

プラグインの置き場所を作る

mkdir -p ~/.vim/pack/plugins/start/hello.vim/autoload    
mkdir -p ~/.vim/pack/plugins/start/hello.vim/plugin  

autload フォルダの中

先程の実装を関数(hello#execute)にして保存します。

function! hello#execute(start, end) abort  
  let mess = 'Hello Vim Script World'  
  call setline('.', mess)  
endfunction  

plugin フォルダの中

書く内容は知らないコマンドが多いと思いますが今回はおまじないだと思って気にせずこのように記載して保存します。

let s:save_cpo = &cpo  
set cpo&vim  
  
scriptencoding utf-8  
  
if exists('g:loaded_hello')  
finish  
endif  
  
let g:loaded_hello = 1  
  
" ここの3つ目のHelloの最初の1文字のhは大文字にする  
command! -range Hello call hello#execute(<line1>, <line2>)  
  
let &cpo = s:save_cpo  
unlet s:save_cpo  

そして難しいことは考えずにvimを再起動するか新しくvimを起動して

:Hello  

を実行すると無事成功しました。 😊

ここまで動かすことができれば拡張したり、この設定はなんなんだろう? とかその先へ進んでいけると思います!

また、初めてだけど興味あるよという方は
🦍ゴリラさんのvim解説がとても分かりやすいので
是非、検索(ゴリラ vim)してみてご覧ください!!
(今回の:helloでも、通常利用でも参考にさせてもらっています)

それでは!👋😃

↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓

テコテックはリモートしている社員や中途入社の方も多いのでvimの普及率は調べられていませんが是覧HPも御覧ください。

↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓👨‍💻↓👩‍💻↓

www.tecotec.co.jp

LightGBMの機械学習モデル予測シミュレーンアプリをFlaskで構築し爆速でHerokuに公開する

本投稿は TECOTEC Advent Calendar 2021 の2日目の記事です。

お世話になっております。テコテックCTOの川人でございます。本ブログには二回目の登場(一回目はこちら)となります。
業務ではめっきりコードを書かなくなりました(= 優秀な皆様にお任せしております)ので、プライベートで開発したものについて記事を書こうと思います。

作ったもの

今回は、機械学習を用いてCOVIDのリスクを予測できるシミュレータを開発しました。実際に公開されており、URLは下記となります。

https://risk-model.herokuapp.com/covid

きっかけは、研究者の知人から論文に引用するためにシミュレータを作りたい、と相談を受けたことで、論文自体も公開されていますので、興味がおありの方はご一読ください。

Prediction of in-hospital mortality with machine learning for COVID-19 patients treated with steroid and remdesivir

続きを読む