Slide 1

Slide 1 text

© 2021 iktakahiro Argon2 を用いたハッシュ生成機能を提供するライブラリを pub.dev に公開した話 2021.08.11 - Takahiro Ikeuchi Flutter Tokyo Meetup #16

Slide 2

Slide 2 text

© 2021 iktakahiro 池内 孝啓(いけうち たかひろ) 株式会社Hakali 取締役CTO ● @iktakahiro ● https://github.com/iktakahiro Flutter 歴2.5年, Go, TypeScript, Python

Slide 3

Slide 3 text

© 2021 iktakahiro おしながき 1. Argon 2 とは 2. fargon2 の概要 3. MethodChannel を活かしたパッケージづくりにまつわる Tips 4. 課題と困っていること ※ 本日のスライドはLT後にシェアいたします

Slide 4

Slide 4 text

© 2021 iktakahiro 20時間くらい前に公開しました! https://pub.dev/packages/fargon2 ※ LT駆動開発

Slide 5

Slide 5 text

© 2021 iktakahiro 動機 1. AES のための鍵導出関数が欲しかった(リサーチ目的) 2. 既存パッケージが欲しいものと違った 3. MethodChannel を使ったプラグイン開発をしてみたかった

Slide 6

Slide 6 text

© 2021 iktakahiro Argon2 とは? ● あるごん・つー ● 鍵導出(Key Derivation)関数の1つ ● 2015年に開催された Password Hash Competition にて優勝 ● パスワードハッシュの生成や、AES で用いる key の生成に利用できる ● https://github.com/P-H-C/phc-winner-argon2 ※ Argon2 そのものの解説ではないので、詳細は割愛!

Slide 7

Slide 7 text

© 2021 iktakahiro 今回つくったもの : fargon2 とは? ● ふぁるごん・つー ● Argon2 のハッシュ生成関数を Flutter アプリ上で気軽に扱えるように したもの ● 以下の2つのライブラリの Wrapper ○ Swift 実装 : CatCrypto ○ Kotlin 実装 : argon2kt ● Platform Specific なコードを実行するために MethodChannel を利用

Slide 8

Slide 8 text

© 2021 iktakahiro MethodChannel とは? ● Writing custom platform-specific code ● Flutter, Dart コードをつうじて iOS / Android ネイティブなコードや機能を 呼び出す仕組み ※ 概要については解説が多いので本日は割愛!

Slide 9

Slide 9 text

© 2021 iktakahiro MethodChannel を利用したプラグインを実装する流れ 1. プラグイン用に Flutter プロジェクトを作成 2. Dart のコードを書く 3. Android 用のコードを書く(今回は Kotlin) 4. iOS 用のコードを書く(今回は Swift) 5. 公開!

Slide 10

Slide 10 text

© 2021 iktakahiro 1. プラグイン用に Flutter プロジェクトを作成 template オプションを plugin に指定すること これで大体雛形ができる

Slide 11

Slide 11 text

© 2021 iktakahiro 2. Dart のコードを書く ※ コードは一部抜粋です

Slide 12

Slide 12 text

© 2021 iktakahiro 3-1. Android 用 Kotlin のコードを書く

Slide 13

Slide 13 text

© 2021 iktakahiro 3-2. Android 向けに依存関係を解決 build.gradle にパッケージ情報を追加

Slide 14

Slide 14 text

© 2021 iktakahiro 4-1. iOS 用 Swift のコードを書く

Slide 15

Slide 15 text

© 2021 iktakahiro 4-2. iOS 向けに依存関係を解決 .podspec にパッケージ情報を追加

Slide 16

Slide 16 text

© 2021 iktakahiro 簡単!! と思いきや 1. example ディレクトリのコードを iOS 向けにビルドするには example/ios/Podfile の編集が必要 2. テストが難しい(後述)

Slide 17

Slide 17 text

© 2021 iktakahiro 5. 公開! ● dart pub publish !! ● コードコメントや example の 有無などで PUB POINTS が変動

Slide 18

Slide 18 text

© 2021 iktakahiro How to use fargon2

Slide 19

Slide 19 text

© 2021 iktakahiro 課題と困っていること ● テストが書けない ○ そんな馬鹿なと思ったけど、書けない ○ setMockMethodCallHandler() のコレジャナイ感 ● Xcode のプロジェクトファイルがないので、Xcode で書けない ○ そんな馬鹿なと思ったけど、書けない 解決策求む!!

Slide 20

Slide 20 text

© 2021 iktakahiro 告知タイム

Slide 21

Slide 21 text

https://www.awarefy.app ありのままの自分を理解し、 ストレスと上手に付き合う

Slide 22

Slide 22 text

We’re Hiring!! ● UI デザイナ(採用強化中!) ● Web デザイナ ● アプリ開発エンジニア ● カスタマーサクセス https://hakali.co.jp/contact @iktakahiro