firebase導入時のビルドエラーに対処する

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

はじめに

こんにちは! 次世代デジタル基盤開発事業部の野口です。 弊社では、Flutter案件があるとかないとか、、、、関わってないので詳しいところはわかりませんが、僕は趣味でFlutter触っております。 データベースにfirebaseを導入する際に、毎回のようにビルドエラーに悩まされます。その都度調べれば解決できるもではあるのですが、毎回忘れて1から調べるのは時間の無駄感があるのでエラーの解消方法をまとめたいと思います。

開発環境

1.導入手順

まず、導入手順ですがfirebaseの公式ドキュメントがあるので、こちらを参考に行います。

firebase.google.com

公式ドキュメントの説明はだいぶ簡素なので、以下がとても分かりやすいです。

flutternyumon.com flutternyumon.com

今回は上記の導入ができた前提で話を進めます。

続きを読む

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