Dart・Flutterを学ぶ日々 その6

UnmodifiableListView

api.dart.dev

Listのcast

qiita.com

Iterable#whereType

以下のようなコードを書いたら、IDEにwhereTypeメソッド使えるよ!って言われたので、なるほど!便利ーって思った

list.where((e) => e is String);

list..whereType<String>();

api.dart.dev

Dartの文字列比較

== でいいらしい

String#startsWith

api.dart.dev

Null-aware operators

なるほど、こういう書き方は結構前からできるのか

var a = null;
var b = a ?? 1;

dart.dev

dart2native

qiita.com

Dart・Flutterを学ぶ日々 その4

DateTime

medium.com

DateFormat

intlを使うらしい

DateFormat('yyyy_MM_dd_HH_mm_ss').format(DateTime.now())

pub.dev

medium.com

JSON文字列からオブジェクト生成

こんな感じのJSON文字列からオブジェクト生成するコード

[
    {
        "id": "C0EGPHZMK",
        "name": "random",
        "is_channel": true,
        "is_archived": false,
        "is_general": false,
        "is_private": false
    },
    {
        "id": "C2FK98MHS",
        "name": "bot",
        "is_channel": true,
        "is_archived": false,
        "is_general": false,
        "is_private": false
    },
    {
        "id": "CDUHDHVD5",
        "name": "sasa",
        "is_channel": true,
        "is_archived": false,
        "is_general": false,
        "is_private": false
    }
]

こんな感じかねー

  await File('2020_10_01_08_22_54.json').readAsString().then((value) {
    (json.decode(value) as List)
        .map((e) => Channel.fromJson(e))
        .forEach((element) async {
      await slack_leave_rejoin_channel.join(element);
    });
  });

DartでTOMLを使う

github.com

Dart・Flutterを学ぶ日々 その3

json_serializable

JsonをパースしてModelに変換したいぞ

github.com

qiita.com

qiita.com

toJsonを実装しないと、jsonEncodeでエラーになったのがちょいハマった。

import 'package:json_annotation/json_annotation.dart';

part 'channel.g.dart';

@JsonSerializable()
class Channel {
  @JsonKey(name: 'id')
  final String id;
  @JsonKey(name: 'name')
  final String name;
  @JsonKey(name: 'is_channel')
  final bool isChannel;
  @JsonKey(name: 'is_archived')
  final bool isArchived;
  @JsonKey(name: 'is_general')
  final bool isGeneral;
  @JsonKey(name: 'is_private')
  final bool isPrivate;

  Channel(this.id, this.name, this.isChannel, this.isArchived, this.isGeneral,
      this.isPrivate);

  factory Channel.fromJson(Map<String, dynamic> json) =>
      _$ChannelFromJson(json);

  Map<String, dynamic> toJson() => _$ChannelToJson(this);
}

build_runner

github.com

pub run build_runner build

上を実行してもずっとbuildが終わらなくて、pubspec.lockを削除して、pub getし直して、再度実行したらbuild終わった!

これと途中まで挙動は似てたけど、解決策が違った

blog.dalt.me

null safety

Dart 2.10から入るっぽく、まだStableじゃなかったのかーって思った

dart.dev

LIstをfilterしたい

filterじゃなくて、whereなのね

api.dart.dev

File Write

この辺に書いてあった

api.dart.dev

ドコモ口座の不正利用問題に関してフェンリルさんのツイートで思ったことをつらつら書いておこう

ドコモ口座の不正利用問題に関した以下のツイートについて、パッと見た時に感じたことを雑に書いておく

ちなみにフェンリルさんはプロフェッショナル集団な印象があり、開発者ブログも読んでいてとても参考になる

フェンリルさんの印象を全く知らないで書いているわけではないことを理解してほしい

また、不正利用問題に関してフェンリルさんにも落ち度があったかどうかを追求し、責めたてる話ではないことも理解してほしい

ドコモ口座の不正利用問題に関する詳細はこちらの記事を参照するといいと思います

piyolog.hatenadiary.jp

デザインリニューアルの過程で...

フェンリルさんがシステム開発ではなく、デザインリニューアルのみ担当したことは事実だと思う

しかし、デザインリニューアルを担当していく過程で、ドコモ口座の仕様を少しずつでも理解していくと思う

仕様を理解しつつデザインする中で、「この機能を提供するのに、XXXみたいな画面やXXXみたいな機能に関するデザインや要件がないぞ🤔大丈夫なのかな?」とか何かしら違和感に気づく機会があったかもしれない

デザインリニューアルをする過程で、多少だとしてもシステム開発をしているベンダーさんとコミュニケーションする機会があったのであればなおさらである(機会があったかは不明)

つまり、安心・安全なサービスを提供することもデザインの一部であり、フェンリルさんがそこも意識した上でデザインした結果であれば、関係ないとは言いづらい

理念 と 発言

フェンリルさんのサイトに以下の理念が書かれている

デザインと技術でユーザーにハピネスを

フェンリルは、ユーザーを幸せにするプロダクトをデザインしています。

徹底したユーザー目線で、想像を超えるアイディアを生み出すプロたちが、 そのデザインと技術で最高の形へと導きます。

www.fenrir-inc.com

この理念を考えると、今回のツイートはもう少し違った内容にできてのではないかと思う

例えば、以下のようなニュアンスの内容ではどうだろう(細かい点はここでは省略)

フェンリルではデザインリニューアルのみ担当しましたが、その過程で今回の不正利用につながるような問題点を見つけ、改善に向けた提案ができず、ユーザさんやクライアントさんが大変な思いをしてしまったことを我々も反省しています。この経験から学び、今後の機会に活かしていきます。」

理念で言っている「デザイン」を広い視点で捉えているはずのフェンリルさんだからこそ、クリエイティブ(前向き)な発言を期待したわけです

デザインとはなんであるか

フェンリルさんのドコモ口座実績サイトの内容から、デザインとは「ただただ言われるがままにいい感じに作ります!」ってことではないのがわかる

www.fenrir-inc.com

サービスを使う人の気持ちになって、よりよいものを作ることを意識されている

もちろんその意識の中には、使いやすさだけではなく、安心・安全に使えるという観点も含まれているはずである

それを踏まえると、「我々はデザインリニューアルのみ担当してるので、システム面での問題は関係ありません」とも取れるようなツイート内容はちょっと違うんじゃないかと思った

システム開発には携わっていないことを言うのは大事なことなのだが、問題が起きて困ったのはユーザさんとクライアントさんである

そのことを考えた上で、「我々がもっとこうできたら、この問題を未然に防げていたかもしれない」と思い、クリエイティブ(前向き)な発言をするのがフェンリルさんらしいのではないかと思った

おわりに

私が当事者(フェンリルさんの立ち位置)だった場合、どうすれば周りから誤解されず、クリエイティブ(前向き)な発言ができただろうか、とツイートを見て考えたまとめでした

企業の信用問題でもあるため、はっきり断言し、誤解を招かないようにすることも大事なので、私が考えたことがすべて正しいわけではありません

それでも、理念に沿った発言を心がけることができたら、もっと素晴らしいと思いました