プログラミング

Cppcheck を試す

http://cppcheck.sourceforge.net/ macOS だと brew 経由で cppcheck をインストールできる。 $ brew install cppcheck cppcheck を試してみる $ cppcheck --enable=all <対象フォルダ or 対象ソース> 2> cppcheck.log これで cppcheck.log にチェック結果…

CMake で C ファイルのビルド環境をつくる

macOS 環境で CMake を試してみる。 CMake を使用することで環境に依存しないビルドのための作業を自動できる。 具体的にはソースファイルから環境によってことなるビルド構成ファイル(Makefile, Xcode プロジェクト)を作成できる。 https://cmake.org/ 関…

GCC で C ファイルをコンパイルする

https://gcc.gnu.org/ GCC(GNU コンパイラ コレクション)を使って C ファイルのコンパイルを試す。 macOS であれば GCC は最初からインストールされている。 テスト用のファイル 今回は以下のファイルでテストする main.c #include <stdio.h> #include "sub.h" int </stdio.h>…

malloc に代わるアロケーターいろいろ

jemalloc https://github.com/jemalloc/jemalloc http://jemalloc.net/ Facebook で採用されていることが有名 https://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919 FreeBSD にも組み込まれている …

rbenv 導入メモ

これは macOS での rbenv 導入に関するメモである。 rbenv / https://github.com/rbenv/rbenv rbenv 導入前の問題 fastlane など Ruby に関係したツールを macOS にインストールする場合、以下の問題が起きる macOS にプリインストールされている Ruby バー…

AVCaptureSession でマイク入力を得る / AudioBufferList.allocate() 後のメモリリーク

https://github.com/daisuke-t-jp/AVCaptureAudioDataOutputSampleBufferTesting iOS でマイク入力を取得してみたかったので試してみた。↑が、そのサンプルプロジェクト。 今回、いろいろなプロジェクトを参考にしてやってみたのだが、気になる点がひとつ。 …

SwiftUI 位置情報をトラッキングする

LocationManager でトラッキングした位置情報を、地図上に表示する SwiftUI のサンプルを作成した。上のリンクから完全なプロジェクトを持ってこれる。 動作させると、こんな感じ。 シミュレータの設定で Freeway Drive にしておくと自動で位置が更新され、…

Google Swift Style Guide

https://google.github.io/swift/ Google は Swift のコーディングガイドラインを公開している。Lint のルールが決まっていない、指標になる標準的なルールを探している場合、このガイドを参考にすると良いと思う。 以下、いくつかルールを紹介する。 空白文…

SwiftUI List の色を変更する

例えば、こういったコードで List { Text("Melon") .listRowBackground(Color.green) Text("Banana") .listRowBackground(Color.yellow) Text("Apple") .listRowBackground(Color.red) Text("Prune") .listRowBackground(Color.blue) Text("Grape") .listRow…

SwiftUI Text で文字列リテラルを扱う

Text("あ") だと以下のビルドエラーが出ることがある '(LocalizedStringKey) -> Text' is not convertible to '(LocalizedStringKey, String?, Bundle?, StaticString?) -> Text' なのでこっちを使う Text(verbatim: "あ") init(verbatim:) - Text | Apple D…

macOS Catalina 10.15 GM seed (19A582a)

数日試した結果、特に問題なく動作している

Swift Singleton pattern

class Singleton: NSObject { public static let sharedInstance = Singleton() private override init() { super.init() // Add initialization... } }

Swift UserDefaults の synchronize() は不要

https://developer.apple.com/documentation/foundation/userdefaults/1414005-synchronize Waits for any pending asynchronous updates to the defaults database and returns; this method is unnecessary and shouldn't be used. かつては UserDefaults …

Swift ケルビンから摂氏、ケルビンから華氏へ変換する

import Foundation func kelvin2Celsius(_ kelvin: Float) -> Float { return kelvin - 273.15 } func celsius2Kelvin(_ celsius: Float) -> Float { return celsius + 273.15 } func kelvin2Fahrenheit(_ kelvin: Float) -> Float { return kelvin * (9.0 /…

SwiftUI プレビューのデバイスを指定する、複数指定する

コード previewDevice() でデバイスを指定できる 例として iPhone SE, iPhone XS Max をプレビューする import SwiftUI struct ContentView: View { var body: some View { VStack { Text("Hello") .font(Font.custom("AvenirNext-Heavy", size: 100)) } .ba…

macOS Catalina 10.15 Beta をインストールして Xcode / SwiftUI の Canvas Preview を試す

はじめに Xcode 11 をインストールして SwiftUI を試した。 SwiftUI のチュートリアルはここにある。 https://developer.apple.com/tutorials/swiftui/creating-and-combining-views これをみると、コーディングした結果が、リアルタイムでプレビュー確認で…

iOS Wave Animation

iOS で波のアニメーションを調べると、いろいろ OSS があったのでメモとして残す LKAWaveCircleProgressBar WaveLoadingView SCWaterWave

OpenWeather から気象情報を取得する

OpenWeather https://openweathermap.org/ はじめに OpenWeather の API を調査し、気象データの取得をテストする 2019/9/24(JST)の情報であることに注意 OpenWeather とは 2014年に設立されたビッグデータ、データ処理、衛星画像処理の企業 本社はイギリ…

Docker ディスクイメージのファイルサイズを変更する

環境 Docker Desktop Community for Mac : Version 2.1.0.3(38240) 手順 !この手順を行うと、今あるすべてのイメージ / コンテナが失われることに注意! メニューから Preferences を選び、 Preferences のウインドウの中から Disk タブを選択する この画面…

Metal から広がるフレームワーク群

はじめに Metal とはなにか? またそれから派生したフレームワークを把握する Metal 登場前 (iOS 2 〜) iOS 2 以降の時代、3D グラフィック処理をするためには OpenGL ES が案内されていた OpenGL ES の ES は Embedded Systems.(組み込みシステム) 以下に…

Google Engineering Practices Documentation

Google がこれまで蓄積してきた開発に関する知識、経験、手法を公開した。 Google Engineering Practices Documentation | eng-practices 非公式だが、日本語翻訳されたドキュメントも存在する。 Google エンジニアリング・プラクティス ドキュメント | eng-…

CocoaPods could not find compatible versions for pod "xxx"

あるプロジェクトが CocoaPods でライブラリの依存管理をしていたので pod install すると $ pod install Analyzing dependencies [!] CocoaPods could not find compatible versions for pod "SwiftLint": In snapshot (Podfile.lock): SwiftLint (= 0.33.0…

WKWebView の読み込み進捗を表示する

はじめに iOS の WebView の読み込み進捗を示すプログレスバーを表示させたい iOS 5 以降 / Objective-C の時代には プログレス表示に NJKWebViewProgressView を使用していたが WebKit の WKWebView(not UIWebView) と Swift のあたらしい KVO の仕組み(…

パフォーマンスを高める Swift の記述

はじめに Swift の実行速度を向上させたくドキュメントを探すと以下が見つかった。 swift/OptimizationTips.rst at master · apple/swift · GitHub この中から気になったトピックをメモする。 Dynamic Dispatch(動的な呼び出し)を削減する Swift は Object…

MKMapView の地図タイルをオーバーレイする

目的 iOS の MKMapView で表示する地図タイルを標準以外に差し替えたい(ベースタイルの変更) またベースの地図タイルの上に、透明度のあるレイヤーをオーバーレイすることも試したい(範囲を示す、情報を含むタイルをベースに重ねる) 使用するタイル 今回…

Git で Emoji Prefix に関してのメモ

はじめに Git リポジトリに Emoji Prefix のコミットテンプレートを設定してみる。 Emoji Prefix を導入するメリットは 絵文字とコミットが対になるので、コミットの役割が明確になる バグ修正+リファクタリング+機能追加。。。など本来分割すべきコミット…

LicensePlist を導入し、アプリで使用している OSS のライセンスを表示する

LicensePlist を使うと iOS アプリに依存している OSS のライセンス表記をまとめることができる CocoaPods も Carthage どちらも対応している これを試してみる。 セットアップ Homebrew 経由で LicensePlist をインストールする。 $ brew install mono0926/…

HEIC を JPEG に一括変換する

macOS であれば 下のように sips コマンドを使って HEIC -> JPEG 変換ができる $ sips --setProperty format jpeg PIC.HEIC --out PIC.jpg ただし、ファイル数が多いと一括で変換したくなるので Python スクリプトを作った。(内部で sipsを使用しているので…

iOS アプリで「Zip ファイルをダウンロード→Zip 展開→展開されたファイルをアプリ内で使用」までを試す

はじめに iOS で Zip を展開する - daisuke-t-jp's blog で Zip アーカイブの展開(UnZip)の方法を書いたので、これを発展させて Zip をサーバからダウンロード アプリ内で Zip を展開 展開したデータをアプリで使用 というユースケースを試したので、それ…

iOS で Zip を展開する

はじめに ZipArchive ライブラリを使用すると iOS で Zip を展開(圧縮も)できる。 これは macOS も tvOS にも対応している。 ここでは Carthage での導入について書く。 Carthage でのライブラリ導入について基本的なことは Carthage で外部ライブラリを導…