ライブラリでトラブった時に、とりあえず依存関係を確認する。
./gradlew dependencies
どうも。どっことです。今回はリップルエフェクト(Ripple Effect)の実装方法について解説していきます。
リップルエフェクトは、Viewにタップした時に水の波紋のように色が広がっていくような表示のことです。
これを設定しなくても動作に影響することはありませんが、ユーザにタッチしたことを知らせるには重要な効果だと思います。
実装自体は簡単で、android:background
に以下を設定するだけです。
android:background="?attr/selectableItemBackground"
なお、すでに背景色を設定済みであれば、android:foreground
に設定することで同様に表示することができます。
android:foreground="?attr/selectableItemBackground"
今回はリップルエフェクトの実装方法について解説しました。もはや一行追加するだけという非常に簡単な設定だけなので、解説というにはあまりにもネタが少ないかなと頭を悩ませています。
どうも。どっことです。今回は、既存のテーブルにカラムを追加するALTER文について紹介したいと思います。
アプリのアップデートに伴い、もともと管理していたデータテーブルにさらに情報を追加したい、など、どうしてもテーブルにカラムの追加が必要になることがあると思います。そんな時は、ALTER
を使って既存のテーブルにカラムを追加することができます。
まずはシンプルなALTER
文です。
alter table テーブル名 add column カラム名 型;
テーブル名
、カラム名
、型
は必要な値を設定してください。
またオプションとして、初期値を設定することができます。DEFAULT
節を使って初期値を指定します。
alter table テーブル名 add column カラム名 型 default 初期値;
例えば、user
というテーブルにage
カラムをデフォルト値を18
として追加する場合は以下となります。
alter table user add column age int default 18;
今回は、既存のテーブルにカラムを追加するALTER文について紹介しました。
新しいテーブルに引っ越したり、そもそも別テーブルで管理するなどの方法もありますが、今回はそんな中での一つの解決案として紹介させていただきました。
SQLはデータベースにおけるデータの永続化をする上で避けることができない技術だと思いますので、頭の片隅にいれておくだけでも開発効率やスピードに違いが出てくると思います。
Javaと似てて、末尾に ... を追加するだけ。参照する際は、配列と同じように扱える。
func print(texts: String...) {
// 配列のように要素数を参照できる
if texts.count == 0 {
return
}
// 配列のように要素を参照できる
print("first: \(texts[0])")
for text in texts {
print("element: \(text)")
}
}
ライブラリをアプリに組み込んでビルドしたら、以下のエラーが出力されたが、知ってしまえばなんてことはない。
Undefined symbol: _GULLogBasic
Undefined symbol: _OBJC_CLASS_$_***
Undefined symbol: _OBJC_CLASS_$_***
Undefined symbol: _OBJC_CLASS_$_***
Undefined symbol: _OBJC_CLASS_$_***
「それ実機でしかビルドできないのに、シミュレータを対象にビルドしているよ」というときに表示されるエラーなので、「シミュレータでも動作するライブラリを使う」か、それが無理なら「シミュレータをターゲットにビルドするときは、該当のライブラリを組み込まずに使う、という方針となる。
どうも。どっことです。今回は、アジャイル開発(アジャイル)とスクラム開発の違い、そしてスクラム開発におけるイベントについてします。
アジャイルとは「俊敏性の高いソフトウェア開発」のことを指します。
そして、スクラムとは「俊敏性の高いソフトウェア開発」の手法のひとつです。つまりスクラム開発はアジャイルに分類される手法の一つとなります。
固定的かつ長期的なメンバーで開発が進行することを想定しています。それによりチームワークを高まり、結果として生産性の最大化やビジネス目標の達成を図ります。
スクラム開発ではプロダクトオーナー、開発者、スクラムマスターの役割があり、各役職はメンバーに割り当てられます。
スクラム開発には4つのプロセス(イベント)があります。
スプリントの最初に実施するプロセスです。
プロダクトバックログ(プロジェクトで消化すべきタスクの一覧)から優先度の高いアイテムを抽出し、タスク化します。タスク化する対象は、メンバーで認識相違がないことをあらかじめ確認したうえで決まります。そうしてタスク化されたアイテムがそのスプリントで消化するバックログ(スプリントバックログ)となります。
平日の決まった時間(午前中、特に朝が一般的)に短い時間でのミーティングを実施し、進捗確認や要求変化の確認を行います。スクラムマスターが全員に「今日は何やりますか」と質問し、その回答を確認することだけが実施される。問題があれば、スクラムマスターは別途会議などを設定することで解決を促しますが、スクラムマスターは、その問題解決意思決定の責務を負います。
スプリント後に実施します。開発されたソフトウェアのレビューを行い、必要に応じてバックログをアップデートします。製品の機能や品質が十分であると判断されるまでスプリントとスプリントレビューを繰り返されます。
いわゆる振り返りです。スプリントの最後に実施します。
「スプリントの成果」にフォーカスが宛てられるスプリントレビューに対して、スプリントレトロスペクティブは「スクラムチームの動き」などの、プロセスにフォーカスされる。例えば、以下の事項について議論されます。
アジャイル開発にはスクラム以外にもエクストリーム・プログラミング(XP)やカンバンなどがあげられます。
今回は、アジャイル開発(アジャイル)とスクラム開発の違い、そしてスクラム開発におけるイベントについて解説しました。
このブログの表示感を調整するためにCSSをカスタマイズしていたが、毎回調べなおしていたので備忘録。
width
div
で頻出。height
div
で頻出。background-color
font-size
px
,em
とか。larger
/smaller
(親要素のフォントサイズとの相対)とか。
color
font-style
normal
/italic
/oblique
とか。
padding
px
,em
指定。margin
px
,em
指定。list-style
ul
)限定。左につくボッチの指定。none
を指定すると消える。border-style
solid
(実線),dashed
(破線)など。border-width
px
, em
指定。border-color
border
border-style
, border-width
,
border-color
を一括で指定できるプロパティ。
ViewのプロパティであるisHighlighted
の更新を受けて、背景色を設定するだけ。
カスタムViewを実装する際に、isHighlighted
をオーバーライドし、didSet
でbackgroundColor
を設定すればいいだけ。こんなん。
override open var isHighlighted: Bool {
didSet {
backgroundColor = isHighlighted ? .lightGray : .blue
}
}
ちなみにisHighlighted
とは、Androidでいうところのstate_pressed
。UIButton
などのUIControlクラスを継承したViewは状態に対して背景を変えるメソッドがあるため、それを使えばタップ中の色を変えることができる。
どうも。どっことです。今回は、iOSのUIViewについて角丸や枠線をつけ方について実装を解説していきたいと思います。
私自身がAndroidエンジニアとしてやってきた時間が長いので、どうしてもAndroid開発者目線となってしまうのですが、Viewを角丸にしたり、枠線をつけたりする実装が本当に面倒くさいです。簡単に見せるだけでも、新規に背景用ファイルを用意してあげる必要があります。
しかし、iOSは角丸や枠線を超簡単に実装できます。本当に羨ましいです。別に悔しくねーし。
UIView
が共通に持っているlayer
という変数に対応するパラメータがあるので、コード上であれば以下に値を設定することで角丸にすることができます。
layer.cornerRadius
枠線の実装も同様で、以下に値を設定することで枠線を付けることができます。
layer.borderWidth
layer.borderUIColor
ちなみに、borderUIColor
は
CGColor
クラスを設定する必要があることに注意してください。
今回は、UIViewを角丸にしたり枠線をつけたりする実装方法を解説しました。特に見せ方を柔らかくする角丸の実装が簡単なのは、iOSはとても良いなと思いました。
どうも。どっことです。今回はActivity
を透明にするための設定について解説します。
完全に透明なActivity
でなにかしら処理する(つまりAPI通信する、DBの更新処理するなどを完全に透明なActivity
で実行する)のはユーザ観点ではよくないですが、例えばダイアログを表示するためだけのActivity
などであれば、背景が見えて別画面に見えてしまうのは不自然であるため、確かに透明である必要があります。そういった、不自然なことを回避する目的でActivity
を透明にする設定を紹介していきたいと思います。
AndroidManifest.xml
で透明にしたいActivity
のtheme
に以下を設定します。
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
例えば、上記の設定を適用したtheme
をTransparentActivityTheme
として用意しました。
<style name="TransparentActivityTheme" parent="AppTheme.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
上記をAndroidManifest.xml
の透明にしたいActivity
のtheme
に適用します。以下はTransparentActivity
というActivity
に設定したときの例です。
<activity
android:name="com.sample.application.TransparentActivity"
android:theme="@style/TransparentActivityTheme"/>
ただし実際にアプリ内に組み込む場合、注意が必要です。透明なActivity
には危険が含まれているのです。
透明なActivity
に対してorientation
の指定をするとクラッシュします。実装でorientation
を指定したり、AndroidManifest
でのActivity
にscreenOrientation
を指定するとアプリがクラッシュするようです。呼び出し元のActivity
と同じorientation
で制御されるようなので、透明なActivity
を呼び出す時は気をつけてください。
どうも。どっことです。 タイトルの通りですが、諸事情により GitHubPage に移行予定です。 https://mkt120.github.io/ この備忘録に記載の内容を転記しつつ、今後はこちらのページを更新していく予定です。