Mac のコマンドラインから PNG ファイルにアルファチャンネルがあるか確認する

環境 macOS Big Sur 11.6 方法 以下のコマンドで確認できる $ sips -g hasAlpha filename.png /path/filename.png hasAlpha: yes アルファチャンネルがない場合は hasAlpha: no になる

Mac で Cコンパイラ 9cc の写経をしたい

言語プロセッサの勉強に、途切れ途切れではあるが Swift コンパイラにコントリビュートしてみたり、 Writing An Interpreter in Go を写経してみたりしていた。 そんな折、Rui Ueyama さんが 低レイヤを知りたい人のためのCコンパイラ作成入門 という平易な…

Playgroundを使ってUIの実装したら便利だった

Playground を使って UI の実装をしたら便利かつとても簡単だったので備忘録として。 普段書き捨てのコードやコーディングクイズの問題を Playground で実装するというのはよくやるのだけど、UIの実装で使うというのはほとんどやったことがなかった。ここで…

Swift で C style for loop を書きたい

最近時間が取れる時に LeetCode をやっている。LeetCode はアルゴリズムの問題を解ける Web サービスで、課金するとシリコンバレーの有名企業のコーディングインタビューの過去問が解けたりもする。*1 自分が普段一番使うプログラミング言語が Swift なので…

困った時に iOS 開発のドキュメントやサンプルコードを探す方法

iOS

iOS アプリの開発をしていて行き詰まると Google 検索することがよくある。というかほぼ毎日やっている。検索結果として Stack Overflow や Qiita, 個人のブログ記事を見つけて、困っていた問題が解決する場合がある。解決したい問題がフレームワークやライ…

fastlane deliver で Multiple App Store Connect Teams found; unable to choose, terminal not interactive! が出た時の解決方法

CircleCI 上で実行した $ fastlane deliver で Multiple App Store Connect Teams found; unable to choose, terminal not interactive! というエラーが出た。 先に結論を述べると、職場で利用している Apple Developer Program のアカウントが複数のチーム…

Web API に依存するモジュールのテストに使う extension

iOS

環境 Xcode 10.1, Swift 4.1 Web API に依存するモジュールのテスト iOS アプリ開発において、 Web API にリクエストするモジュールのユニットテストを書くことは良くあると思う。その場合 Web API にそのままアクセスするテストを書くと、返す値によってテ…

iOS アプリのバージョンをインクリメントするためのスクリプト

iOS

iOS アプリをストアにリリースする時にはバージョン番号を上げる作業が必ず発生する。その際に Info.plist を手作業で更新するのは手間だしミスが発生する余地があるので、 Python のスクリプトを使って自動化している。以下のスクリプトを アプリのプロジェ…

アメリカで契約したAT&TのSIMを解約するために国際電話をかけた話

tl;dr アメリカで契約した AT&T の SIM を解約するために、AT&Tのカスタマーサポートに国際電話をかけた。自身のアカウントを認証するために、氏名、電話番号、 SIM カードの No. が必要だった。 顚末 昨年 WWDC で渡米した際に現地で AT&T の SIM を契約し…

iOS で opencv_contrib のモジュールを使う

iOS で opencv_contrib のモジュールを使う方法を調べた。 OpenCV 本体を使いたければ Cocoapods でビルドするだけだが、opencv_contrib に含まれている拡張モジュールを使う場合、opencv2.framework をゼロからビルドして、それをプロジェクトに追加する必…

2018年のふりかえり

年が明けてそろそろ一週間経とうとしているが年末書けなかったのでざっとふりかえる。 アウトプット ブログ 大小合わせて 15 個記事を書いた。考えたことを文章にすることで抽象化する練習やアウトプットへの心理的な障壁を下げたい気持ちがあり、少しは目的…

iOS エンジニアが TOEIC 895点 取るためにやったこと

この記事は Classi Advent Calendar 2018 の 4日目の記事です。 今年の6月に WWDC18 に参加するために渡米したのをきっかけに、英語の勉強を始めた。 しばらくして10月に受けた TOEIC で895点取ることができたので、どんなことをしてきたかを振り返る。 自分…

日記について

Evernoteでごく個人的な日記をつけている。日記を書くことで生活に良いリズムが生まれる気がしている。 きっかけ 「3ヶ月間、個人的な日誌を書くために毎日5分間使う」というのがワインバーグの「スーパーエンジニアへの道」で気づきを得る方法として紹介さ…

UserDefaults に struct のリストを保存する

環境 Xcode 9.4.1, Swift 4.1 UserDefaults に struct を保存する UserDefaults に sturct を保存する方法として、Dictionary にマッピングする方法がよく紹介されているが、 Swift 4 からは Codable が使える ので、それらを使えばエンコード、デコードする…

Instant Word Power を読んでいる

ここ2週間 Instant Word Power という本を読んでいる。 英語のボキャブラリを鍛える本で、通勤の時間や休み時間を使って1日1章ずつ読んでいる。 Instant Word Power とは Instant Word Powerは 英語のボキャブラリーを増やすための本。よくある単語帳のよう…

try! Swift San Joseの作業メモ

WWDC18 に付随して行われた try! Swift San Jose に参加してきた。前半は Swift コミッターによるパネルディスカッション、後半は Open Source Swift にコントリビュートするというワークショップだった。このワークショップを通して apple/swift に Pull Re…

swiftc のビルドエラー 'libxml/xmlreader.h' file not found について

swiftc を久しぶりにビルドしたら以下のエラーが出た。 /Users/enomoto/.ghq/github.com/apple/llvm/lib/WindowsManifest/WindowsManifestMerger.cpp:21:10: fatal error: 'libxml/xmlreader.h' file not found #include <libxml/xmlreader.h> ^~~~~~~~~~~~~~~~~~~~ 結論を書くと</libxml/xmlreader.h>…

WWDC18に参加した

6月4日〜8日にカリフォルニア州サンノゼで開催されたAppleの開発者向けカンファレンス、WWDC18に参加してきた。WWDCは今回が初めての参加で、他では得がたい経験をたくさんすることができた。 今回、渡航準備をするにあたって以前WWDCに参加した方のブログ記…

WWDC18 Keynoteメモ

WWDC18 Keynote Keynoteの内容を書き下したメモ https://developer.apple.com/videos/play/wwdc2018/101 tl; dr 新しいハードの発表は無し 今回のリリースは最適化、セキュリティの改善を強調しており、OSの基盤を固めるリリースと言える AR, 機械学習分野の…

ReSwiftをためした所感

現在仕事で開発中のiOSアプリにReSwiftを導入できないか検討した。 結論としては今回は導入を見送ったが、良いと感じた部分が沢山あったので雑な作業メモを転記する。 ReSwift とは Redux は複雑な状態を管理するために生まれたJS発祥の技術 そのRedux をSwi…

SwiftGenの使い方を調べた

仕事で新しいプロジェクトに導入したく、 SwiftGen の使い方を調べていた 環境 Xcode 9.2 SwiftGen 5.3.0 SwiftGen とは https://github.com/SwiftGen/SwiftGen プロジェクトのリソース用のSwiftコードを自動的に生成し、タイプセーフな使用を可能にするCLI…

Sourceryの使い方を調べた

Sourceryの使い方を調べたので記録を残しておく Sourceryとは Sourcery は Swift のボイラープレートを自動生成するためのツール try! Swift Tokyo 2018における作者のトーク によると Sourcery は 5000 以上の実プロジェクトで使われていて、 Apple 社員の…

try! Swift Tokyo 2018にいってきた

今年もtry! Swiftに参加してきた。昨年に続きとても楽しい時間を過ごすことができた。運営の方々に感謝。 今年はSwiftの言語仕様、OSS、コミュニティ、エコシステム、マルチプラットフォームといった話題についてより深い内容を扱っているトークが多かった。…

beta配信したアプリをインストールできない時のチェックリスト

仕事でよくCrashlytics betaを使ってアプリの配布を依頼されるのだが、インストールできないと問い合わせを受けることがある。 その時にチェックする項目を備忘のためリストにしておく。 UDIDは登録済みか Provisioning Profileは更新したか ビルドには更新…

GNU開発ツールを読んだ

正月休みにGNU開発ツールを読んだ。とても良い本だった。 C言語で書かれたHello Worldのプログラムをビルドして実行する時に、裏で行われていることについて書かれている。最初にgccドライバが何をしているか大まかな流れを説明し、その後プリプロセス、コン…

React Nativeの環境構築をした

React Nativeの勉強に少し手をつけたので、環境構築の記録を残しておく。 マシンはmacOS 10.12.6 入れたもの Xcode Android Studio homebrew node watchman react-native-cli VSCodeを使いたかったので以下も入れた。 Visual Studio Code VSCode extension f…

2017年のふりかえり

アウトプット 登壇 同僚の誘いでGitLab Meetup Tokyo #2で登壇した。初めての勉強会での登壇だったが、良い経験になった。アウトプットへの心理的障壁が下がった。 OSSへのコントリビュート 3 pull requests, 2 merged 年末にふと思い立って出したプルリクエ…

2017年買って良かったもの

マキタ 充電式クリーナ 10.8V 本体付属バッテリー1個搭載モデル (カプセル式・トリガ式スイッチ) CL106FDSHW出版社/メーカー: マキタメディア: Tools & Hardwareこの商品を含むブログを見る 掃除機がコードレスになって恐ろしく便利になった。我が家は幼子が…

fastlane matchでCertificateを更新したProvisioning Profileを作る

Apple Developer ProgramからいつものYour iOS Distribution will expire in 30 daysというメールが来た。fastlane matchでProvisioning Profileを一から作ったことがなかったので、その時やったことのメモ。 やること Ceritificates を作り直す 新しいCerti…

iOSエンジニアがAndroidアプリ開発を勉強するためにやっていること

Android開発の勉強を始めてから2ヶ月ほどが経過した。 これまでにやったことを備忘のために残しておく。 実機を購入 なにはともあれ実機があった方がよい。シミュレータでも開発はできるが、起動に時間がかかり効率が良くない。また普段使いの端末がないとAn…