すらぼうの開発ノート

モバイルアプリエンジニアのメモ

2023-01-01から1年間の記事一覧

【Python】再帰処理で最大公約数を実装する

現在Recursionに取り組んでいる。 そこで学んだことをメモする。 再帰処理 再帰処理とは、とある処理の中で、自分自身を呼び出す処理のこと。 詳しくは以下の記事で紹介した。 note-tmk.hatenablog.com 最大公約数 複数の数値が存在するとき、各数値の約数の…

【Python】ハノイの塔の実装

現在Recursionに取り組んでいる。 そこで学んだことをメモする。 ハノイの塔 3本の棒と複数の円盤を用いたシンプルなパズル。 円盤を目的の棒に、なるべく少ない移動回数で移動させるというもの。 円盤は全てサイズが異なり、サイズの小さい円盤は大きい円盤…

【Python】フィボナッチ数列の実装

現在Recursionに取り組んでいる。 そこで学んだことをメモする。 フィボナッチ数列 次の漸化式で表現される数列をフィボナッチ数列と呼ぶ。 計算量はO(2n)である。 F0 = 0 F1 = 1 Fn = Fn-1 + Fn-2 (n ≥ 2) ja.wikipedia.org フィボナッチ数列は自然界でも観…

【Python】再起処理で文字列を圧縮

現在Recursionに取り組んでいる。 そこで学んだことをメモする。 テキストデータの圧縮 Recursionの練習問題で、以下のような問題が出た。 # 文字列を以下のように圧縮する関数を書け "aaabbbbccd" → "a3b4c2d" この関数は再起処理を用いるとシンプルに実装…

【Python】再帰処理を実装する際のコツ

現在Recursionに取り組んでいる。 そこで学んだことをメモする。 再帰処理 再帰処理とは、とある処理の中で、自分自身を呼び出す処理のこと。 例えば以下のような処理。 def sum(n): if n == 0: return 0 return sum(n-1) + n これを実行すると以下のように…

【読書メモ】アジャイルサムライ

感想を書いていく。 (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; b[a]=b[a]||function(){arguments.currentScript=c.currentScript ||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)}; c.getElementById(a)||(d=c.createEle…

【読書メモ】プロジェクトマネジメントの本物の実力がつく本

読書中にメモった内容を記載。 一言で言うと、プロジェクトマネジメントの実力は「周囲への誠実さ」と「包括的なスキル」を身につける必要がある、と感じた。 以下商品リンクとメモ。 (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; b[a]=b[a]||func…

【Flutter】The imported package '***' isn't a dependency of the importing package. Try adding a dependency for '***' in the 'pubspec.yaml' がでたら見直す点

flutterにて開発を行っていた際、次のようなワーニングが表示された。 The imported package 'パッケージ名' isn't a dependency of the importing package. Try adding a dependency for 'パッケージ名' in the 'pubspec.yaml' 以下のリントツールのルール…

【Flutter】Run / Debug / Profile の違い

Flutterではコードを実行する際にモードが3つ用意されている。 Release Debug Profile それぞれ次のような用途で用いる。 Release 以下のコマンドで実行する。 flutter run --release 特徴は以下。 リリース準備をする際に用いる assert()は無効 実行速度が…

【Flutter】「Good Code, Bad Code」をFlutter(Dart)で実践してみる

本書の概要 理論編 実践編 ユニットテスト編 実践編の適用例 コードを読みやすくする 名前は機能の要約 コメントはわかりにくい名前の代替案になるべきではない コメントはなぜそのコードが存在するかを説明すると良い 冗長なコメントはつけない コードは1行…

【Swift】UIViewControllerのライフサイクル

メソッド viewDidLoad() viewWillAppear() viewDidAppear() viewWillDisappear() viewDidDisappear() サンプルコード UIViewControllerにはライフサイクルがあり、ライフサイクルの節目ごとに処理を行うためのメソッドが用意されている。 以下で各メソッドの…

【Storyboard / Swift】UILabelの文字列を全て表示する方法

UILabelはデフォルト設定の場合、サイズを超える文字列が入力されると切り捨てられてしまう。 全ての文字列を全て表示する場合、Linesプロパティに0を入れると表示される。

【Swift】Cocoa Touch ClassとSwift Fileの違い

Xcodeで新しいファイルを作成する際に、いくつかの選択肢がある。 その際に「Swift File」と「Cocoa Touch Class」というものが表示される。 この2種類のファイルの違いについて説明する。 違い 「デフォルトの状態で何が書かれているか」が異なる。どちらも…

【レビュー】SCRUM BOOT CAMP THE BOOK スクラムチームではじめるアジャイル開発

概要 この本が向いている人、向いていない人 向いている人 向いていない人 各パートごとのレビュー 基礎編 実践編 まとめ 概要 スクラム開発を実際の開発現場でどのように実行すれば良いかのヒントを与えてくれる書籍。 「基礎編」「実践編」とパートが分か…

【Flutter】Riverpodの使い方

ランキング参加中プログラミング Riverpodとは 使い方 インストール providerをグローバルで宣言 アプリ全体をProviderScopeでラップ ConsumerWidgetなどを継承したクラスを作成 providerから状態を取得 ref.watch ref.listen ref.read サンプル カウンター…

【Flutter】Constraints(制約)について

FlutterはUIを作成する際にConstraintsという情報を扱っている。 そのConstraintsを説明した記事が公式から出ている。 docs.flutter.dev このポストでは上の記事を読んで、個人的にメモに残したい内容を記載する。 Constraintsはウィジェットのサイズと位置…

【Flutter】ClipPathの使い方

ClipPathとは 使い方 ウィジェットをClipPathでラップ CustomClipperを継承したclipperクラスを作成 三角形 台形 曲線状に凹んだ正方形 星型 clipperクラスをClipPath.clipperに指定 ClipPathとは api.flutter.dev 画面上に表示されるウェジェットの形状を設…

【Flutter】Material Design 3 の適用方法、デモアプリの起動方法

Material Design 3 とは プロジェクトへの適用方法 デモアプリ Material Design 3 とは m3.material.io Googleのデザイナーがメンテナンスしているデザインシステム。 バージョン2と比べて、全体的に柔らかい印象のデザインになっている。 Flutterでは現在バ…

【Flutter】LinearGradientの使い方

LinearGradientとは 使い方 2色のグラデーションを作成する 3色のグラデーションを作成する 2色の間隔を指定したグラデーションを作成する 任意の開始・終了位置のグラデーションを作成する LinearGradientとは api.flutter.dev LinearGradientはグラデーシ…

【Flutter】FVM(Flutter Version Management)の使い方

FVM(Flutter Version Management)とは FVMを使い始める前に FVMでSDKバージョンを切り替える手順 Flutterプロジェクトを作成する(新規にFlutterプロジェクトを作成する場合) FVMをインストール 各種設定を行う 環境変数 FVM_HOME .gitignore VSCode Andr…

【Flutter】BLoCパターンの実装

BLoCパターンとは BLoCパターンはアプリケーション開発に用いられるアーキテクチャパターンの一つ。 ざっくり以下のような特徴がある。 UIとビジネスロジックを分離する streamを利用してイベントと状態を管理する 次の記事に非常にわかりやすく説明されてい…

【Dart】Initializer list(コンストラクタにくっついているコロン「:」)の意味、使い方

意味 Initializer listとは、Dartのクラス内でコンストラクタ作成時に使用するキーワード。 このキーワードの役割は「メンバ変数を初期化する際の処理を記述する」こと。 使い方 基本の使い方は以下。 コンストラクタ() : 変数 = 値; 例 例で説明する。例え…

ワイヤレスイヤホンのスペックについて

最近ジムでのトレーニングのお供としてワイヤレスイヤホンを購入した。 その際に調べた内容を共有する。ワイヤレスイヤホン選びの参考にしてほしい。 イヤホンのスペック ノイズキャンセリング ノイズキャンセリングとは 種類 PNC(パッシブ ノイズ キャンセ…

【Swift】enum(列挙型)の使い方

enum(列挙型)とは 定義方法 値の取得 caseの値をArray型で取得する caseの個数を取得する enum(列挙型)とは 同じ型のデータをまとめるデータ型。 定義方法 次の様に定義する enum enum名{ case case名 .... } 例えばいくつかの動物の名称を「動物」とい…

【Swift】任意の少数桁で数値を四捨五入する方法

小数点第二位や三位など、任意の桁で四捨五入する方法を説明する。 方法 次の方法で任意の桁を四捨五入できる。 let digit: Int // 四捨五入したい桁 let val: Double // 四捨五入したい値 let adjuster = Double(truncating: NSDecimalNumber(decimal: pow(…

【Swift】配列から要素をランダムに取得する方法

配列からランダムに要素を取得する方法を説明する。 インデックスで指定する randomElement()を使う 例として次の配列を使い説明する。 let colorCandidates: [Color] = [ Color.black, Color.blue, Color.red, Color.green, Color.yellow, Color.orange, Co…

【SwiftUI】aspectRatio()メソッドに渡す.fitと.fillの違い

aspectRatio()メソッドに渡す.fitと.fillの違いについて説明する。 違い .fit .fill 少し詳しく aspectRatio()メソッド 図例 .fit .fill 違い .fit 指定された領域内にオブジェクトが収まるように表示される。 .fill 指定された領域内をオブジェクトが埋め尽…

【Swift】キャスト(型変換)について

本エントリではSwiftにおけるキャスト(型変換)についてまとめる。 キャスト(型変換)とは 種類 アップキャスト ダウンキャスト 方法 アップキャスト ダウンキャスト as! as? 参照 キャスト(型変換)とは 特定のインスタンスのデータ型を、他のデータ型に…

【Linux】treeコマンドでフォルダ構造を表示する

treeコマンドとは 指定したディレクトリに配置されているディレクトリ、ファイルをツリー状に表示してくれるコマンド。 mama.indstate.edu learn.microsoft.com インストール Linux apt install tree Mac brew install tree Windows コマンドプロンプトで元…

既存のデータからMarkdown形式のテーブルを作成する方法

Markdownは便利であり個人的にも多用している。 ただしテーブルを作成する際には、手打ちだとやや面倒。 そこで調べてみると以下のサイトが見つかった。 HTMLからもコピーできたりと、シンプルかつ多機能。 DeepLライクな見た目で使用しやすい。 markdown-co…