hamburger-tech-nits

主にプログラミングのNITSな話

「Deep Skill ディープ・スキル――組織と人を巧みに動かす 深くてさりげない「21の技術」」を読んだ

Deep Skill ディープ・スキル――組織と人を巧みに動かす 深くてさりげない「21の技術」作者:石川 明ダイヤモンド社Amazon 組織の一員として組織の力を最大限活用するために必要な所作や心得のようなものを21の技術として紹介されていた。確かに会社で成果を出…

RDB形式のFirestore的なサービスが無いのはなぜ?

Firestoreでjoinをしたいと1億回くらい考えている。joinをできないのはRDBではなくNoSQLベースだから。 RDB形式の類似サービスが無いのはなぜなのかという疑問が出てきたので調べていたら、そもそも周辺知識が足りてなかったので朝の自由時間が一瞬で溶けた…

FlutterのCloud Firestore ODMを活用して型安全なリクエストを実行する

Flutterで一般的な使い方でFirestoreにアクセスしようとすると、ドキュメント名やレスポンスを文字列でマッチングする必要があるため、型情報の復元のためのコードを色々書く必要がある。 Cloud Firestore ODMはその名の通りObject Document Mapperで、これ…

Flutterで画面遷移のイベントを検知して別の処理を呼び出す

画面遷移のたびに特定の処理を実行したい時はNavigatorObserverで処理を呼び出せる。 NavigatorObserverのサブクラスを作成する class MyNavigatorObserver extends NavigatorObserver { @override void didPush(Route<dynamic> route, Route<dynamic>? previousRoute) { super</dynamic></dynamic>…

FreezedのUnionの共通フィールドをInterfaceで表現する

pub.dev やりたいこと Kotlinのsealed classでは、共通のフィールドをabstractで定義して子クラスに対して実装を強制できる。大量のフィールドを持つモデルクラスをtypeごとに分割した時など、これによって子クラスの実装漏れをビルドのタイミングで検知でき…

JIRAのオートメーションでピタゴラスイッチをしたい時

JIRAのオートメーションは、デフォルトでは別のオートメーションをトリガーとして起動できない。とあるオートメーションの結果を受けて別のオートメーションを実行したいときは、ルール トリガーを許可のチェックボックスをONにすること。

ソフトウェアエンジニアリングにおける技術力と経験の話

技術力は何かに対応できる力だと思う。ベクトルの大きさの話。 経験があることで、先を見通す力がつくと思う。進んでいった先に目的地があるかどうか、その確率がどのくらいか。確率の高さより、その予測を元にどれだけ戦略を立てられるかが重要。 開発者の…

FlutterのStreamBuilder内で画面遷移させる

StreamBuilderはStreamの結果を元にWidgetを返却する関数であり、voidではない。なのでStreamの結果を評価した結果画面遷移したとしても、普通にNavigationの関数を呼び出すとエラーになる。 StreamBuilder<int?>( stream: intStream(), builder: (context, snapsh</int?>…

Flutterのログ出力にloggerを利用する

pub.dev 開発中のログ出力用にprintを利用すると、リリースビルドでもその情報を出力してしまう。そのため、ロギングライブラリを利用して制御する方法を取るのが一般的。 ネットで雑に調べると、Flutter用のロギングライブラリは代表的なものだけで4~5種類…

Flutterアプリでfirebase_ui_authを使ってGoogleログインを実装する

この記事の続き hamburger-tech.hatenablog.com 参照先のページに別のページのリンクが書いてあり、少し紛らわしかった。ようやく一段落。 pub.dev github.com Googleログインを有効にする メールログインと同様にGoogleログインを有効にする。その後、必要…

AndroidStudioの設定を別端末と共有する

www.jetbrains.com VSCodeに設定の同期機能があるので、IntelliJ系にもありそうだと思って探したら見つけた。これまでsetting.jarファイルをエクスポートしてプライベートリポジトリに登録する運用をしていたので少しショック。 設定手順 専用のリポジトリを…

「UI/UXデザインの原則」を読んだ

UI/UXデザインの原則作者:平石大祐幻冬舎*Amazon 目的はこの記事と一緒。同じタイミングで2冊買った。 hamburger-tech.hatenablog.com メモ データ分析で分かるのは結果 GAなどを使って改善するのは一般的だが、得られるデータは操作結果であってユーザニー…

ConfluenceにMermaidを導入する

Confluenceとは Atlassianが提供しているwikiツール。JIRAとセットで導入されることが多い。 www.atlassian.com Mermaidとは 独自記法で記述したクエリをJSがいい感じに解釈してグラフをレンダリングしてくれるツール mermaid.js.org 本題 Confluenceは劣化M…

「UIデザイン必携 ユーザーインターフェースの設計と改善を成功させるために」を読んだ

UIデザイン必携 ユーザーインターフェースの設計と改善を成功させるために作者:原田 秀司翔泳社Amazon 本業ではないと思いつつ、最近はFigmaでアプリデザインをする時間が増えてきた。ここ数ヶ月UX領域に絞って学習してきたが、実際のデザイン作業は適切なコ…

JIRAのカスタムフィールドのキーの探し方

オートメーションやAPIで、課題に定義した独自フィールドにアクセスしたい場合に調査する方法。 https://<yourinstanceurl>/rest/api/2/issue/<issuekey>?expand=names の形式でアクセスすることで、その課題が保持するキーに関する情報がJSONで返却されるので、それで探す。 { names: [</issuekey></yourinstanceurl>…

Flutterアプリでfirebase_ui_authを使ってメールログインを追加する

事前準備 firebase.google.com Firebaseプロジェクトを作成し、アプリリポジトリを接続する。特にこだわりがなければ、firebase_analyticsを導入して動作確認するのがオススメ。 FirebaseAuthの準備 Firebaseのコンソールを開き、Authを有効にする。Authはロ…

英語学習1ヶ月目

やったこと 英語 2語トレ 世界標準の英語が話せる“言語習得の科学”に基づく学習法作者:重森 ちぐさSBクリエイティブAmazon シャドーイングをしてみたら、自分の発音がカタカナ英語過ぎて嫌になった。色々調べてみると、フォニックスを練習すれば少しずつ発音…

uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:firebase_analytics]

Flutterでfirebase_analyticsを導入したところ、Androidでビルドエラーになった。 ***/android/app/src/debug/AndroidManifest.xml Error: uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:firebase_analytics] ***/bui…

Unhandled Exception: Binding has not yet been initialized.

FlutterアプリにFirebaseを導入した。pub get後に関数(analyticsのメソッド)を呼び出したらエラーが発生した。 E/flutter ( 6837): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Binding has not yet been initialized. E/flut…

あえて戻るボタンを実装する

UX

iOSもAndroidも、OS側で前の画面に戻る仕組みを提供しています。更に、アプリ上部のAppBarは戻るボタンが置かれていることが一般的です。 たとえば、AndroidのGoogleKeepのメモ画面ではこんな画面デザインです。 課題感 一般的なモバイルアプリは、ユーザが…

Freezedで生成したClassにインスタンスメソッドを追加する

FlutterでFreezedを利用した際に、生成したClassに独自メソッドを追加する方法を調査しました。 pub.dev @freezed class Person with _$Person { const factory Person(String name, {int? age}) = _Person; void method() { print('hello world'); } } この…

Warning: CocoaPods not installed. Skipping pod install.

FlutterのiOSビルドをしたところエラーになった。 Warning: CocoaPods not installed. Skipping pod install. CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side. Without…

2022年のふりかえりその2

仕組みを作ってスケールできるように備えるということを重視していたな、という話を思い出した。 今年は、良い意味でも悪い意味でもgoogleのソフトウェアエンジニアリングに影響を受けた一年だった— くどう (@derakudo) 2022年12月27日 個人のアウトプットと…

2022年のふりかえり

2021年の記事 hamburger.hatenablog.jp ふりかえりをすると課題認知が先行して全体的にネガティブになる癖があるのでどうにかしたい。まとめようとしたら愚痴っぽい文章の羅列になる— くどう (@derakudo) 2022年12月21日 一回書いたけど、ネガティブすぎたの…

途中参加した仕事ですぐ新しいことは始めない方がいい

ある程度成果物がある状態のプロジェクトに参加したときに、すぐに新しいことをやらないほうが良いという話。 例えば入社直後や異動直後など、環境が新しくなった直後は成果が欲しくなる。これは信頼0の状態を早く脱したくなるからだと思う。その時やろうと…

Manifest merger failed : android:exported needs to be explicitly specified for element <activity#~

社内ライブラリのtargetSdkVersionを30から33に上げたらビルドエラーになった * What went wrong: Execution failed for task ':app:processDebugMainManifest'. > Manifest merger failed : android:exported needs to be explicitly specified for element <activity#${Activity}></activity#${activity}>…

通知画面の未読・既読はあまり機能していない説

UX

本当は最初に色々書いたけど、収集つかなくなってしまった。なので箇条書きのメモ 通知画面がサービスのタスク一覧の役割を持つことがある 通知は既読管理されていることが多く、その殆どが通知をタップしたかどうかである 通知のタップとタスク完了がイコー…

〇〇-playgroundのリポジトリに書き捨てコードを登録する

課題感 ちょっとしたコードの置き場所がちゃんと定まっていなくて毎回悩んでいた。例えば、 webエディタ(Kotlin Playgroundやdartpadなど) gistに登録 専用リポジトリを作る とか。ただgithubを使わないと後から発掘できなくなったり、新規リポジトリ作るの…

「SOFT SKILLS」を読んだ

SOFT SKILLS ソフトウェア開発者の人生マニュアル 第2版作者:ジョン・ソンメズ日経BPAmazon CAREER SKILLSと一緒に購入していた。事前知識がなかったので、コミュニケーションの仕方とか昇給の方法とかそういった内容だと思っていた。 前半はどこかで聞いた…

「CAREER SKILLS」を読んだ

CAREER SKILLS ソフトウェア開発者の完全キャリアガイド作者:ジョン・ソンメズ日経BPAmazon 35歳目前を控え、キャリアどうしようかな~という状態。引退説はどこに行った? 他者からどう見られるか?は意識しておけ 人がその人に持つ印象は無視できない要素。立…