書いている人モバイルアプリケーションアーキテクトとして働いています。モバイルアプリケーションのアーキテクチャ、自動テスト、CI/CDに興味があります。 X(Twitter) GitHub 2022-01-05 昨年(2021年)末にAndroid Developersに掲載されているアプリアーキテクチャガイドが更新されていましたね。更新版の内容で参考になったことの一つが、UseCaseの実装についてでした。Domain layerに関する以下のページです。 Domain layer | Android Developersドメインとは何か、UseCaseとは何か、ということについては上記のリンクに譲ることにして、ここではその実装方法を見ていきたいと思います。 リンク先では、以下のようにUseCaseの invoke を実装することで、UseCaseがただ一つの機能のみを持っていることを強制
mhidakaです。久しぶりにAndroidアプリ開発の技術記事です。タイトルの「雰囲気で乗り切っているひとのためのAndroidビルド高速化ノウハウ」は書いている間にどんどん長くなってしまってGradleビルドシステム、CI/CD、ビルド時間等の計測手法という3つの内容をカバーするものになりました。 今回はそのなかから抜粋して、1つめのGradleビルドシステムを取り上げます。Androidアプリのビルドが早くなる(なった)Gradle設定を紹介します。プロジェクトルートにあるGradleビルドプロパティ設定値を変えるだけなので開発プロジェクトでも試しやすいと思います。いけそうなら使ってみてください(既に導入してたら開発プロジェクトの感度が高い…!雰囲気は卒業できています!)。 Gradleビルドキャッシュを使おうGradle 7.1.x以上 / Android Studio Bambl
追記 (2022 5/29): サーバ代をケチるべくVercelに移行しました。動いていたソースコードは ココ に置いてあります。 あなたの予想に反して、このページが見えているでしょうか?このWebサイトは自作OSのKerlaが提供しています。 これは自作OS Advent Calendar 2021の23日目の記事です。 自作OS「Kerla」の紹介 Kerla(かーら)はRustで書かれたLinux ABI互換モノリシックカーネルです。今年の春頃から作り始め、DropbearというSSHサーバが動作する程度には基本的なUNIXの機能が実装されています。具体的には、ファイルの読み書きやUDP/TCPソケット、fork/exec、シグナル、擬似端末といったものです。 カーネル実装の雰囲気を軽く紹介すると、Kerlaでは以下のようにシステムコールが実装されています。 /// write(2)
こんにちは。おいしい健康Androidエンジニアの小林です。 Jetpack Composeのプレビュー機能好きなんですが、PreviewParameterでもっと好きになったのでブログにしてみます。 実際に作った画面 こんな画面をJetpack Composeでつくりました。 アプリ内課金ができるのですが、その画面内に課金に関するFAQをリストした画面です。 ※画像中の情報は 2021/12/24現在のものです。 文字数やデバイスサイズごとにプレビューしたい 上のスクショのとおり内容による文字数の差が結構あります。2行程度から〜10行程度のものまで。 「デバイスサイズによっては画面が1つのカードで覆い尽くされてしまって読みづらさを感じるのではないか?」と、画面サイズごとにプレビューで確認しておきたくなりました。 まずは1つプレビューしてみます。 @Preview(showBackgrou
この記事はモバイルファクトリー Advent Calendar 2021の25日目の記事です。 メリークリスマス🎉 エンジニアのid:kfly8です。 技術ブログの「ネタがない」といったコメントや「この記事の課題がよくわからない」といった記事レビューをすることがあります。技術アドベントカレンダーの時期は、短期間に記事が集中するので、特に困らせているように感じます。 普段から意識する習慣で、楽ができないかと考えると、「技術ブログが書ける開発をする」のが良いと思いました。 誤解しないでほしいのが、「技術ブログを書くために開発をしよう」と言いたいわけではないです。あくまで、チーム、事業の目的ありきです。 ただ「技術ブログが書ける開発をする」ことは、普段の開発の質を高めると思っています。 技術ブログが書ける開発とは? モバファクの技術ブログでは、「課題を解決する方法や経験を発信したい」と思ってい
皆さん Jetpack Compose は触っていますか? Jetpack Compose といえば Modifier ですが、Modifier の関数は場所によって使えたり使えなかったりする場合があると思います。 どうなっているのでしょうか? 例えばこの画像のようなものを実装したいとします。 実装したいコンポーザブルの画像 方法はいくつかあると思いますが、今回は Modifier.align(Alignment.Center) を使いたいと思います。 次のコードでは、Box コンポーザブルの中にある Text コンポーザブル内では Modifier.align(Alignment.Center) は期待通り動作します。 @Composable fun HogeComposable() { Surface( modifier = Modifier .fillMaxWidth() .heig
こんにちは。モバファク採用担当です! モバファクでは、現在40名近くのエンジニアが働いており、多様なキャリアを歩んでいます。 そしてモバファクには、職務制度として管理職を目指すMコースと、高度専門職を目指すPコースを選択できるようになっており、社員は各々の志向にあわせてキャリア選択をしています。 今回は、実際に入社したエンジニアがどのようなキャリアを歩んでいるのか、モバファクで活躍するエンジニア2名にインタビューを実施。 どのような考えで現在のキャリアを選び、どのような業務を行っているのか、Mコースを選択しているF・HさんとPコースを選択したodanさんに話を聞いてみました。 入社から現在まで、具体的にどのような業務に携わってきましたか? F・H 1年目から位置ゲームの「駅奪取」を開発するチームに配属され、フロントエンドからバックエンドまで、幅広く業務に携わりました。 1、2年目で印象的だ
デザインパターン (design pattern) とは、過去のデザイナーたちが見つけた経験則的な型に対して名前をつけ、型の再利用性を高めやすくしたものです。ソフトウェアデザインの世界(特に、プログラミングの領域)においてはプログラム構造の設計パターンのことをまさに “デザインパターン” を呼び、これを共通の知識として積極的に取り入れています。 これに対しアンチパターン (anti-pattern) とは、必然的に否定的な結果に至る型を指します。アンチパターンもデザインパターンの一種と捉えこれを知識に蓄えておけば、設計の過程でどのような結果に至るのかを事前に予測することができるし、失敗を未然に防ぐことも可能となります。 今回は、アプリケーションデザインにおける典型的なアンチパターンをいくつか紹介します。 アプリケーションデザインの定義 ここでの「アプリケーションデザイン」の言葉は、以下の意
プライバシ意識に目覚めて Google のプロダクトを使いたくなくなることもあるでしょう。人間だもの。 “検索エンジン 匿名” などのキーワードで Google 検索すると、最初に出てくるのが DuckDuckGo だ。 The search engine that doesn't track you. というメッセージとシンプルな検索文字列の入力フォームがトップページにある。そうそう、こういうのが欲しかったのだ。 しかし、残念ながら、僕はこのプロダクトに満足することはできなかった。日本語検索の結果が非常に悪い。古かったり関係なかったりする記事がずらーっと並んでしまう。 DuckDuckGo は検索エンジンそのものを開発しておらず、エンジンは Microsoft Bing を使っている。DuckDuckGo は仲介者であり、検索クエリをユーザーに代わって Bing に投げるため、Bing
Conventional Commits 人間と機械が読みやすく、意味のあるコミットメッセージにするための仕様 Conventional Commits 1.0.0 概要 Conventional Commits の仕様はコミットメッセージのための軽量の規約です。 明示的なコミット履歴を作成するための簡単なルールを提供します。この規則に従うことで自動化ツールの導入を簡単にします。 コミットメッセージで機能追加・修正・破壊的変更などを説明することで、この規約は SemVer と協調動作します。 コミットメッセージは次のような形にする必要があります: 原文: <type>[optional scope]: <description> [optional body] [optional footer(s)] 訳: <型>[任意 スコープ]: <タイトル> [任意 本文] [任意 フッター] あな
こんにちは。ブロックチェーンチームのソフトウェアエンジニアの id:odan3240 です。 ブロックチェーンチームでは NFT を販売するためのUniqysマーケットプレイス(以下、ユニマ)と、その NFT を販売するための管理画面(以下、管理画面)を開発しています。ユニマはブロックチェーン上の NFT を日本円で売買可能なマーケットプレイスです。 ユニマの開発はブロックチェーンに関するサービスなので、ブロックチェーンに関する技術をゴリゴリに使って開発しているのでは?と考える方がいるかもしれません。しかし実際はそうではなく Web アプリケーションに関する開発は普通の技術スタックで開発しています。もちろん実装するロジックによってはブロックチェーンに関する知識が必要となる場合もありますが、マネージドサービスやフレームワークやツールを活用してコア機能の実装に集中できるように技術スタックを選択
はじめに こんにちは。クラシルのAndroidアプリチームのテックリードのうめもりです。 皆さん、Gradleのモジュール機能は活用していますか?ソースコードの依存の方向をモジュール単位で強制出来ることでアーキテクチャーの制約を強制しやすかったり、並列ビルド・差分ビルドの局所化によるビルド高速化を期待できたり、大規模なAndroidアプリを作るにはとても役に立つ機能ですよね。 そんな役に立つ機能ですが、実際どうやって活用していけばいいか分からなくて導入に踏み切れない方や、導入してみたがいまいち恩恵が感じられない、そんな方もいらっしゃるのではないでしょうか。 ところで、Androidアプリを開発してきた皆さんなら一度は聞いたことがある言葉にClean Architectureというものがあると思います。 引用: クリーンアーキテクチャ(The Clean Architecture翻訳) |
僕は、1 日に少なくとも 3,000 行程度、多く書くときで 10,000 行以上のプログラムを書くことができる。その結果、多い月で 10 万行 / 月くらいである。なお、言語は書くソフトウェアの性質上、大半が C 言語である。 また、プログラミングにはバグが付き物だが、ここ 2、3 年の間は、発生するバグの数を極めて少なく保つことに成功している。 とても大きく複雑で、かつレイヤ的に OS に近い処理をたくさんやるプログラムを書く場合は、プログラミングをするときでも、事前の設計が極めて重要となる。設計をうまく行わないと、後になって全面的に書き直しをしないといけなくなったり、パフォーマンスが低下したりする原因となり、開発者の苦痛の原因となる。 当然のことながら、これまで書いたいくつかの大きく複雑といえるソフトウェアの大半の設計も、自分で行った。いかなる場合でも、設計は、最初の 1 回目で確定
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く