つばくろぐ @takamii228

知は力なり

iOSのPush通知でAPNsとの連携を証明書と認証キーでそれぞれやってみた

iOSアプリのPush通知を実現するには、APNs(Apple Push Notification Service)と連携する必要があります。この連携方式について調べてみたので備忘録としてまとめておきます。 APNsとの連携方式 APNsとの連携はPush通知を受け取るアプリケーションとの連携…

アプリケーションが依存するFWやライブラリからアップデート戦略を考える

最近はFlutterでiOS / Androidアプリ開発をしているのですが、ある程度の頻度でプラットフォームやライブラリのアップデートに追従していかないとあっという間に取り残されてしまう空気を感じています。 ネイティブのOSでいうとちょうど先日Android 11のBeta…

APKファイルとIPAファイルのバージョン情報をコマンドラインから確認する

apkファイルとipaファイルのバージョン情報をコマンドラインで確認する方法を備忘録として残しておきます。 apkとipaのバージョン情報について apkファイル及びipaファイルのバージョン情報は、ストア申請のときのバージョニング情報として利用されるもので…

Flutterで使うAPI関連のDartコードをSwagger/OpenAPIで自動生成する

はじめに Flutterの開発の中でSwagger/OpenAPIのYamlからコードを自動生成して使うことがあったのでまとめておきます。 Swagger/OpenAPIとは OpenAPIはREST APIの仕様を記述するフォーマットで、yaml形式で仕様を定義することができます。 2.0系と3.0系があ…

Visual Studio App Centerを使って内部向けに継続的にネイティブアプリを配信する

はじめに ネイティブアプリの内部テストを円滑にすすめるために、Visual Studio App Centerを使ってアプリを配信する仕組みを触る機会があったので手順をまとめておきます。 Visual Studio App Centerとは Microsoftが提供しているネイティ・デスクトップア…

Flutterを使ったAndroid・iOSアプリ開発のCDパイプラインを構築する #flutter

はじめに 前回はCIパイプラインについて前半・後半に分けて説明を行いました。 takamii.hatenablog.com takamii.hatenablog.com 今回はCDパイプラインについて説明します。 CDとは継続的デリバリー(Continuouse Delivery)の略で、アプリケーションを継続的…

Flutterを使ったAndoird・iOSアプリ開発のCIパイプラインを構築する(後半) #flutter

はじめに 前半ではFlutterのCIパイプラインで実行する内容について説明しました。 takamii.hatenablog.com 後半では実際の開発におけるパイプラインの使い分けについて説明します。 CIパイプラインが開発のボトルネックに!? CIパイプラインは重厚にすれば…

Flutterを使ったAndroid・iOSアプリ開発のCIパイプラインを構築する(前半) #flutter

はじめに アプリケーションを継続的に安全に機能追加していくプラクティスとして継続的インテグレーション(CI:Continuous Integration)があります。 コードの追加、すなわちPushやPull Request / Merge Request契機でCIを実行し、その変更が既存機能を破…

jqのyaml版コマンド yq は2種類ある

以前flutterのバージョン切り替えをCI環境で動的にやる記事の中で、yamlの指定したキーを取り出すのに yqコマンドを使っていたのですが、このyqの利用に関してハマったことをメモとして残しておきます。 takamii.hatenablog.com yqとは yqとはjqのyaml版でya…

ライブラリやプラグインを使うときに気にしていること

アプリケーション開発において実装したい機能を実現するために、世の中に公開されているライブラリやプラグインを使ってフルスクラッチでの実装の手間を省くことがあります。その一方で、プラグインを理由にプラットフォームのアップデートを断念したり塩漬…

App StoreとGoogle Playの評価を日時で通知する

自分たちが関わっているサービスに関する世の中からのフィードバックを確認することは、そのアプリのマーケットでの立ち位置の把握や開発チームのモチベーションを維持する上で重要です。 iOSであればAppStore、AndroidであればGoogle Play上でユーザから5段…

ポストモーテムを書いて障害対応による修正・改善のWhyを残す

障害や問題が発生したときに行う振り返りのことをポストモーテムと呼び、SRE本の15章でも紹介されています。 SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム作者:出版社/メーカー: オライリージャパン発売日: 2…

2019年にお金を払ったサービス

ふとTLに流れてきたので、やってみた。 増税があったりドルが混ざってたり月額年額が混ざってたりと費用はどんぶり勘定です。 新規 マネーフォワードME 5300円 / 年 今までスプレッドシート運用だったけどクレカ明細やキャッシュレス、PASMOとかの中まで把握…

2019年の振り返り的な何か

今年もざっくり振り返ろうと思う。2018年の記事はこちら。 takamii.hatenablog.com 2019年にできたこと AWS SAを取る 2月に取った。 takamii.hatenablog.com GoをJava/PHPと同じくらい書けるようになる シェルスクリプトではやりきれないやつをGoでサクっと…

flutterのバージョンをGitLab CI Runner上で動的に切り替える

この記事はFlutter Advent Calendar 2019 (#2)の記事です。 ※12/21 8時時点で18日分に空きがあったので埋めさせていただきました(参考) はじめに GitLab CIを使ってFlutterのCI/CDをやっているのですが、CI環境において複数のFlutterのバージョンを管理す…

FlutterでID/Password入力画面を作ってみる

FlutterでID/Pass入力画面を作るときに設定するのパラメータをちょっと調べたのてまとめてみます。(※入力のバリデーションやオートフォーカス等のアクションは含みません) よくあるID/Pass入力画面の要件 よくあるID/Passの入力画面の要件といえばこんな感…

GitLab APIを使ってtag名とtagのタイムスタンプをcsv形式で出力する

リリース頻度のデータを分析するために、GitLabのtag名とtagを作成した時のタイムスタンプの一覧が欲しくなったのでGitLab API経由で取得するシェルを書きました。 #!/bin/sh BASE_URL="xxxx" API_TOKEN="xxxx" PROJECT_ID="xxxxx" # 全tag一覧を取得するた…

master中心のブランチ戦略で開発している話

ここ数年、CI/CDパイプラインを構築したりブランチ戦略を考えるロールで仕事をすることが多いのですが、ブランチ戦略はいつも頭を悩ませていました。 当初はGit FlowやGitLab Flowの採用を考えたりしたのですが、ブランチやマージの戦略がちょっと重厚でめん…

GitLabでtagとtagの間に含まれるMRリストを取得する

GitLabであるタグに含まれるMRのリストをトレースする必要があったので、GitLabのAPIとjqを使ってtagとtagに間含まれるMRリストを出力して、Markdown形式のリリースノートを出力するシェルを組みました。 #!/bin/sh BASE_URL="GITLAB_HOSTNAME" API_TOKEN="G…

AtCoderの色が緑で停滞している

AtCoderを再開した話を以前書いた。 takamii.hatenablog.com あれからもぼちぼち続けて晴れて緑になったのだけど、その後は800くらいで停滞している。 水色になりたいと↑では語っていたのだけど、水色になるには今のABCでE問題まで常に解けるくらいにならな…

flutter driverでassetsが原因で画像が表示されなくなった件 #flutter

flutter driverでE2Eテストをゴリゴリ書こうとした時にハマった内容と暫定的な対処方法を共有します。 ある日突然flutter driverで画像が表示されなくなった flutterではflutter driverというIntegration test用のFWが用意されています。 flutter.dev 公式を…

GitLab CEでMerge Request時のCIを事前にマージしてから実行する

最近のお仕事ではCIにGitLab CIを使っています。 Merge Request時にGitLab CIを実行して、CI上で静的解析やビルド・テストを実行してコードをクリーンに保つようにしています。 しかしMerge Requestがしばらく放置されてしまい、当時はCIのPipelineが成功し…

自分の情報収集のやり方を整理してみた

後輩とかに「どうやって情報収集してるんですか?」と聞かれることが多々あったので、整理してみました。 GitPitch Presents: github/takami228/mypresentation/how-to-get-informtaionModern Slide Decks for Developers on Linux, OSX, Windows 10. Presen…

約6年ぶりにAtCoderを再開した話

AtCoderを再開した 2018年の年末あたりからTwitterのTLでAtCoderの文字をよく見るようになったので、懐かしくなってAtCoderを再開しました。 実はわたくし、AtCoderがサービス開始したころに登録した古参ユーザなのです。 私の競プロ歴 学生時代は私の指導教…

GitLab Meetup Tokyo 16 でLT発表しました #gitlabjp

4/24にGitLab Meetup Tokyo #16 にてLT発表してきました。 gitlab-jp.connpass.com 場所は銀座の株式会社プレイドさん。GINZA SIXのオフィスしゅごい。 テーマが「新年度応援」とのことだったので、新人・新人指導者向けにドキュメントをGitLabで管理してい…

2018年度の家計決算をまとめた

2018年度が終わろうとしているので、2018年度の家計決算をまとめた。 家計簿を財務指標っぽく扱っている話 2018年度の決算 前年度との比較と分析 2019年の展望 家計のキャッシュレス比率 家計決算の算出方法の変更について まとめ 家計簿を財務指標っぽく扱…

AWS Certified Solution Architect Associate合格体験記

AWS Solution Architect Associateに今更ながら受験して無事合格したのでざっくりまとめておきます。 AWS歴 AWSを使ったシステム開発のプロジェクトの経験は2年半ほどです。 設計・構築は別チームがやっていてもっぱら用意してもらった環境を使う側なのです…

2018年分の医療費控除を申請した話

2018年は歯の治療でそれなりに課金をしてしまったので、少しでも取り戻すべく医療費控除を申請したのでそのメモを残しておきます。 医療費控除とは 準備物 e-taxによるpdf作成 申請で迷ったところ 旧字体をどうするか? 医療費の明細をどうかくか? 源泉徴収…

AWS ElasticBeanstalkにDocker Imageをさくっとデプロイしてみた

AWSのElasticBeanstalkのDockerホスティングを使ってDocker Imageをサクッとデプロイできたのでメモとして残しておきます。 デプロイするもの int128先輩が作ったJiraのWebhookのJSONを加工してしてSlack / Mattermostに通知連携してくれるGoアプリを動かし…

2018年の振り返りと2019年の抱負的な何か

2018を雑に振り返る 特に目標も立ててなかったので、2018年のインプット/アウトプットを中心に雑にまとめてみる。 仕事では一度やったことの応用ならそれなりに立ち回れるようになった。でもまだやったことがないことに対するコミットはビビってしまう。 イ…