くま's Tech系Blog

基本的には技術で学んだことを書き留めようと思います。雑談もやるかもね!

SwiftのDictionaryについて

今回はSwiftのDictionary型についてまとめようと思います Dictionaryとは? Dictionaryとはキーと値をセットにした配列のようなものです 例えば、Dictionaryでは、「名前 : “山田”」「年齢 :23」「性別 : “男”」のようにキーと値をセットで作成します。 この…

レイアウトの背景をカスタマイズする

今回はレイアウトファイルで、背景をカスタマイズする場合の方法についてです レイアウトで枠線をつけたり、角丸にしたりカスタマイズしたい場合Attributesで設定できるものもあれば、設定できないものもあります そして、設定できない場合にはxmlファイルを…

Kotlinのオブジェクト式について

個人的な意見ですが、オブジェクト式や無名オブジェクトを理解するのに若干苦労したのでまとめようと思います 合わせて、無名関数も苦労したので合わせて記載しようかと思います オブジェクト式とは? オブジェクト式では無名オブジェクト(無名クラス)の定義…

RecyclerViewのGridLayoutについて

GridLayoutはリストを格子状に並べるという形式です 以前RecyclerViewについての記事を投稿した際にLayoutManagerにGridLayoutManagerというパターンがあるというのを記載しています kumaskun.hatenablog.com 今回はGridLayoutManagerについて少し深掘りしよ…

AndroidでWebViewを使ってみる

今回はAndroidのWebViewについてです iOSと違う部分もあるので見ていきましょう! Webページを表示させる Webページを表示させるだけであれば簡単にできます 前提としてAndroidManifest.xmlでインターネットの権限の設定を行ってください <manifest ... > <uses-permission android:name="android.permission.INTERNET" /> </manifest> レイアウトファ…

ExpandableListViewを使ってみる

Androidで開閉式のアコーディオンテーブルを作成する際にExpandableListViewを使います あまり使う機会がなく記事もあまりなさそうなので、記事にしようと思います ExpandableListViewを使う手順 ExpandableListViewをアプリで使う手順は次の手順で行います…

モバイル開発における同期・非同期処理について

今回はモバイル開発で欠かせない同期・非同期処理の概念についてです 最初の方の概念の説明はAndroidも共通している内容ですが、後半はiOSに特化した内容になります Androidの同期・非同期処理はこの前、技術書典で出版した本で軽く説明しているので気になる…

FragmentManagerについて

今回はFragmentManagerについて調べたことをまとめようと思います FragmentManagerをどのインタンスから作成するかを意識しないとうまく表示できなかったりと想定外なことが起こるので注意が必要です (今回は指定違いで想定外なことが起こっていました) Frag…

SwiftのGenericsについて

今回はジェネリクスについてまとめます ジェネリクス(Generics)は指定したタイプで柔軟に動作する再利用可能な関数や型を指定できる機能です ジェネリクスを使用するには、関数名のあとに<T>を指定します <T>は型引数(型パラメータ)と呼ばれるもので、この関数で</t></t>…

TableViewCellの再利用について

あるときこんなレビュー指摘がありました。 「CellのViewをhiddenにしているけど、ずっとhiddenになったままでいいの?再利用されるときに想定外の場合になる可能性があるよ」 最初、??と思ったのですが、そのときにTableViewCellは再利用されていることを…

Rx(Swift)とは?

今回はリアクティブプログラミングについてまとめようと思います RxSwiftをベースに説明しますが、概念の部分はAndroidや他のプログラミング言語でリアクティブプログラミングを行う場合でも共通すると思います Rxとは? Rx(Reactive X)とは、「オブザーバパ…

CompositionalLayoutsを使ってみる

今回はCompositionalLayoutsについてです CompositionalLayoutsはiOS13から登場したCollectionViewのレイアウト構築方法です これまではUICollectionViewFlowLayoutクラスを使用していましたが、次のような課題がありました Boilerplate code: ボイラープレ…

iOSの証明書について

今回はiOSで使用する証明書についてです アプリをビルドしたり、リリースしたりする際に証明書関連の対応手順は理解していても、それぞれどんなことをしているのかがあまり理解できていなかったので、調べてまとめます まずは全体像を下記に載せます ビルド…

技術書典13にサークル参加します

告知になります 明日9/10(土)からの技術書典13にサークル参加します!!(公式サイトはこちら) 今回はオンライン・オフライン両方で実施されます 今回オンラインのみで本を出します!(紙の本用の表紙と印刷が間に合わなさそうだったので...) 8月にブログを更…

Xcodeで例外発生箇所を特定する

今回はXcodeで例外発生箇所を特定する方法についてです。(小ネタですが最後まで見てね) クラッシュしたときに原因となった場所が表示される場合もあれば、次のようにわかりづらい箇所が表示されたり、AppDelegateで止まったりすることがあります そんなとき…

PencilKitを使ってみる

今回はPencilKitについてです PencilKitとはApple Pencilやユーザーの指からの入力を受け取り、iPadOS、iOS、macOSで表示する画像に変換するiOSアプリケーション用の描画できるSDKです PencilKitには、線を作成したり、消したり、選択したりするツールが付属…

frameとboundsの違いについて

今回はViewの配置やサイズ指定で使うframeとboundsについて違いを調べていこうと思います 違いを知らずに表示の不具合を起こす可能性があるので要注意です(まさに自分が体験しました...) frameについて 公式ドキュメントにあるように親Viewから見た相対的な…

Swiftのvar、letについての個人的疑問を解消する

今回はSwiftのvar、letについてです。 たまにvar、letを定義したときに思わぬワーニングが表示されることがあり、個人的に疑問に思う場面があったので疑問を解消する記事にしようと思います 基本的なvar、letの解説は割愛しますが、varは変数でletは定数です…

RecyclerViewについて

今回はRecyclerViewについてです Androidでリスト形式のデータを表示させる場合にはListViewやRecyclerViewなどがあると思いますが、複雑なリストが作成できたりする点でRecyclerViewを選択することがほとんどだと思います ただ、当たり前のように使っていて…

build.gradleとは?

今回はbuild.gradleについてです build.gradleファイルに息をするかのごとくライブラリを追加したり、設定を追加したりすると思いますが、よくよく考えるとbuild.gradleってなんだろうとふと思いまとめてみることにしました build.gradleとは? まず、Androi…

Androidでプッシュ通知(FCM)を使う

今回はAndroidでプッシュ通知を使う方法です。プッシュ通知はFCM(Firebase Cloud Messaging)を使います。 FCMの設定に関しては今回は割愛しますが大まかにいうとFirebaseのプロジェクトを作成してパッケージ名を設定すると、google-service.jsonがダウンロー…

UIのインスタンス化について

Xcodeには、Interface Builderでコードを書かずにデザインを構築することが多いと思います Auto Layoutも比較的付けやすいので、使ったことがない人はいないくらい使われると思っています 今回は、Interface Builderとソースコードを紐付ける方法をまとめま…

Realmを使ってみよう(Android編)

今回はRealmをAndroidで使うやり方について書こうと思います Realmの大まかな説明などは前回の記事をみてください Realmの導入 まずはRealmを使えるようにします build.gradle(app)で下記設定を追加します plugin { id `realm-android` } そして、build.grad…

Realmを使ってみよう(iOS編)

だいぶ久しぶりの更新になりました(なかなか忙しくて...) 今年初の更新がこのタイミングになってしまいましたが、これからは定期的に更新できればと思います 今回はRealmに関してまとめます。今回はiOS編です Realmとは? まずはRealmについて軽く説明しよう…

Androidのツール属性について

今回はAndroidのレイアウト作成時に使うツール属性について書いていこうと思います ツール属性は主にレイアウトのプレビュー確認で使う名前空間です

ViewPager2とCardViewでカルーセル表示を行う

QiitaのAndroid Advent Calendar 2021の23日目の記事です 他の方も素晴らしい記事を投稿しているので、ぜひこちらからご覧ください! 今回はCardViewのカルーセル表示についてです カルーセル表示とは横にスライドして次のデータを表示させるものです 下記の…

iOSDC Japan 2021 に参加した

iOS

iOSDC Japan 2021 に参加してきたので、ブログにしようと思います iosdc.jp iOSDC Japanとは? iOSDC Japan 2021はiOS関連技術をコアのテーマとしたソフトウェア技術者のためのオンラインカンファレンスです。 日本中、世界中から公募された100本を超える知…

Callkitで着信画面を表示させる

今回はCallkitについてです Callkitは下記のようなiPhone標準の着信画面を表示させる機能です。画面がOFFの状態であれば、スライドして応答する画面が表示されます。また、着信履歴にもデータが残ります SkypeやLINEなどで電話をかけたときに、着信時に同じ…

なぜ?突然Githubにpushできなくなった

いつも通りGitHubにpushしようとしたら、突然エラーが発生するようになりました。 fatal: unable to access 'https://github.com/ユーザー名/リポジトリ名.git/': The requested URL returned error: 403 リポジトリ名は合っているし、なんだろう? ssh接続…

UIViewのレイアウトライフサイクルについて

今回はUIViewの表示についてまとめようと思います。 AutoLayoutが効かない・Viewの表示位置がおかしい・表示されない・画面表示までが遅いことが実装している中で1度は経験はあると思います。 このような問題は、Viewの表示の流れを理解せずに開発しているこ…