仕様を読む技術

走り書き。根拠はない。 まだ小さな開発チームなので社内のプルリクエストを流し読み程度に全て見るようにしている。コードの品質は人によってさまざまあるのは当然だが、仕様の理解度に差があるように感じている。それは人によって異なっていて、常に理解度…

事例: プルリクを誰も見てくれない

エンジニアが数名という時に、Androidアプリをレビューする人がいないという事態が度々発生した。作ったプルリクエストは滞留してなかなかマージされない。取った解決策は、Githubにプルリクが作られアサインが行われたら該当の人に通知を行うというものだっ…

TableHeaderViewのサイズをいい感じにする

UITableViewのtableHeaderView(セクションごとのヘッダーではない)は経験的にオートレイアウトが効かないので、状態によってTableHeaderViewの高さを変えたい厄介になります。この記事ではサイズをいい感じに調整する方法を紹介します。TableFooterViewも同…

ソースコードをお焚き上げしました

エンジニアは意外にも信心深いところがある。サーバーをお祓いしたり、デバッグ神社を建てたり、リリースするときにお祈りする。 iOS、Androidアプリを全面リニューアルと一部サービス終了があったので、今までのソースコードへの感謝の気持ちを込めてお焚き…

仕事しながら考えていること

プロダクトの価値 プロダクトの価値をできるだけ高速で高めることが大切だと思っている。プロダクトの価値を高めることができれば、手段を選ばない。違法なことや倫理に反すること以外はやる。 プロダクトの価値は、主な評価軸として主に3つあり上の方が重要…

iOSアプリをリニューアルした時のアーキテクチャ

最近、iOSアプリをリニューアルしたのでその時に工夫した内容を書いておこうと思う 前提 仕様書はない iOSアプリでObjective-Cで書かれている Swiftに全てのコードを書き換える。SwiftUIは使わない。 複数アプリが一つのソースコードでプロジェクトで管理さ…

Pull Requestに画像を貼るときはテーブルで書く

UIを変更したら、Pull Requestに変更前と変更後の画像を貼るとレビューしやすいが、非常に縦長になって逆に見辛くなりがち。特にスマートフォンのスクショ。 以下のように書くことで、MarkdownのTableレイアウトで画像を横に並べることができます。 |before|…

なぜドキュメントを書くのか

なぜ書くのか 記憶は当てにならない 人間は忘れるし、記憶改変が起こるし、病気になったり、トラックにひかれたりする。トラックに引かれなくても、部署変更や転職によって知っている人がいなくなることが往々にして発生する。文章によって残してことによっ…

貸金業務取扱主任者に合格しました

国家資格でそれなりに難しい。登録しないと名乗れないけど、あまり登録する気はないので名乗りません。 貸金業で開業とかできるようになったけれど、開業には少なくとも5000万円が必要なので、5000万円ください。

ボードゲームを1日2手で1年ほどやっている話

人と何かをしている精神衛生上にいい。 前からボードゲームはしていた ボードゲーム歴は、就職してからなので10年くらいある。ゲーム専用機の若干の衰退と、スマフォゲームが流行り始めた頃だった。その頃に出会った友人がボドゲをしていたので始めて、電子…

Swiftのマクロのorが動かなくてつまづいた

何でかわからないが、 Preprocessor Macros にADHOC=1 やRELEASE=1を追加しても以下のコードが2が出力されてしまった。 #if DEBUG || ADHOC || RELEASE let i = 1 #else let i = 2 #end print(i) // -> 2 DEBUG=1 を入れておくと1になり、or演算子 を続ける…

クレジットカードは見た目で選んでもいい!

「クレジットカードってWebサイトで買い物する時とか、現金持たなくていいとか、便利な側面はいっぱいあるけど結局どれがいいの?」と思う。大きく分けて、3つある。還元率、優待、見た目だ。 還元率に関しては、このブログを読むよりは、ググった方が良い。…

化石燃料で地球を温める

地下から石油や石炭、ウランなどを掘り出してエネルギーを得ている。最終的に光や電波に科学変化に使われるものもあるが、全て空気を温めるためだけに使われた場合の気温上昇を計算してみた。 資料 一人当たり年間石油換算2トンくらいhttps://t.co/9ORAlTbAH…

時間という概念が好きだという話

たまに祝日や時間のライブラリをメンテナンスしたりしている。同僚に「なんでそんなモチベーションが出るのか?」と聞かれて「時間が好きだから」としか答えられなかった。なんというか好きなこと説明することは、根本的に難しいものがあるがやるだけやって…

ペアプロと建設的相互作用

概要 教育心理学概論 の6章2節に建設的相互作用というものが出てきます。建設的相互作用を踏まえてペアプロを行なった方がペアプロの効果を高めるためられるかもという内容です。 本の内容 6章 建設的相互作用論 ミシンが縫える仕組みの理解を扱った研究と折…

ペアプロにはレビューとは違うものがありそうなメモ2

分かるまでのプロセス 「分からない」から「分かる」にいつる間に次の5つのステップを踏むと想定されている 1. ある事物や物事が果たしている機能の1つを「同定」する 2. 同定した機能について、その仕組みを「疑問視」する 3. 仕組みをより詳しいレベルでの…

ペアプロにはレビューとは違うものがありそうなメモ

まだ調べ中なのです 経緯 教育心理学概論を読んでいて、 教育心理学の本を読んでて、ペアプロはレビューとは異なる効果がありそうだなと感じ始めた— あくらる (@akuraru) 2021年4月30日 と呟いたら興味深いと言われてしまったのでメモしながらまとめることに…

知らないなら聞きましょうの精神

知らないことは、恥ずかしいことではない。 社会人はプロフェッショナル集団である。それぞれの専門性を束ねて金儲けをする。それぞれの専門性があり、それぞれ知っていることが異なる。同じプロジェクトや目標に向かうときに共通の知識としてあった方がいい…

iOSの社内ライブラリをやめる

この記事の社内ライブラリはアプリとは別にリポジトリを分けて管理しているコードで、CocoaPodsやCarthageでアプリにインストールできるようにしているが、社内のアプリにしか使っていない物のことです。 なぜ社内ライブラリが必要だったか 大抵の会社ではア…

XcodegenでBridging Headerの設定の仕方

settingsに特定のキーで設定する。Xcodegenはキーさえわかれば、ほとんどの設定は指定することができる。 application_name: settings: SWIFT_OBJC_BRIDGING_HEADER: "path/BridgingHeader.h" ``

openapi-generatorで生成されたSwiftのコードが動かないので回避方法

2020年1月20日現在の話です。 OpenAPI(Swagger)で書かれた定義ファイルからswiftのクライアントコードを生成する場合に、openapi-generatorを使おうと考えると思います。しかし、下記のようなコマンドで生成されるコードはコンパイルはできるもののそのまま…

スクラムマスターの役割と違和感

深夜のノリで書いているのであまり真に受けないで欲しい。 私が思っていた違和感が、スクラムガイド2020年版がでて変更によって言語化できると思ったので書きました。 スクラムマスターは日本的なリーダーではない と思う。スクラムガイドにはサーバントリー…

リリースされていないコードをリリースすると価値が2倍以上になるという思想

「そういう価値観もあるよね」という生暖かい気持ちで読んで欲しい すでにリリースされているコードの価値 リリースされたコードの価値はそのコードが達成すべき目標に対する指標で測る。例えば、売上やユーザー数、PVです。本来の目的にそった指標で測るこ…

モバイルクロスプラットフォーム開発の夢と現実

iOSと Androidをまとめて開発したいという要望があり、その夢と現実の歴史。ゲームは知りません。 3行まとめ 流行りと衰退を繰り返している それぞれの差分が辛い Flutterが流行りつつある(?) ネイティブアプリ iPhoneとAndroidが2007年に発表され、今後の携…

アジャイルと目標設定

4行まとめ 本人の納得して、明確で高い難易度と高速なフィードバックがある目標設定が効果的 人事評価は知らん アジャイル宣言の「計画に従うことよりも変化への対応」を思いだせ アジャイルなら適切な長さの目標設定を考えて欲しい 目標設定とは モチベーシ…

RxSwiftわからん

メモ書き ObserverとObserable 世界観として、観察者と観察対象がある。ObserableからObserverに対して複数回状態を送信する。UILabelとかUITableViewはObserberとなり、Obserableの値を観察を行って変更があった場合にそれに合わせて表示を変更を行う。Obse…

iOSで実装されているカレンダーの解説

この記事を読んでいる人は、日本語で書いているので概ね西暦か和暦を使っていると思います。しかし、世界には西暦では過ごしていない国や地域が数多くある。もしグローバル展開する機会があればそれぞれの国で正しく計算されたり表示される助けになればと思…

iOSでユーザーが文字を入力する方法

UITextFieldなどに文字を入力する方法が、キーボードだけではないのでまとめておこうと思います。 ソフトウェアキーボード もっとも一般的な入力方法。 日本語の変換があるので確定していない文字が存在する。確定した時点で、複数の文字が入れ替わったりす…

あなたの文字制限をしているUITextFieldはクラッシュしているかもしれない

UITextFieldで入力した文字に対して何らかの制限を加えたい時はよくあると思います。文字数を制限したり、数字のみを入力させたい場合などです。 サンプルコードを用意しました。 https://github.com/akuraru/CrashTextField 数字のみを入力制限させたい場合…

XCUITestでアプリの初期状態を変更する

起動時にパラメータを渡すことができ、アプリケーション内でいつでもそれを確認することができます。 XCUITestでは外部からの操作がほとんどできません。この起動時のパラメータによって初期状態を変更することができそうです。 let app = XCUIApplication()…