今回はRecyclerViewのところだけにする。Dagger2はまたの機会に。 Dao RoomのDaoクラス。(一部) interfaceにFlowableを指定すると、SQLite3上で変更を検知したらonNextで流してくれる。 Room上で使用できるRxJavaのクラスは以下の通り。 Class データがない時 データがある時 変更通知
概要 ソースコードはこちらです。 大量のデータがある場合に、一度に取得せずに必要な分だけ逐次取得してRecyclerViewに表示するような場合のサンプルを作成しました。 挙動としてはメルカリやクックパッド、スマートニュース等のアプリをイメージするとわかりやすいと思います。 議員の一覧をRoomデータベースから取得し、選択した議員の2018/1/1からの国会での発言をWebAPIから取得していますが、ソース元がRoomでもWebAPIでもPageKeyedDataSourceに変換することでUI側では同じように扱えます。 参考にしたコード android-architecture-components/PagingWithNetworkSample at master · googlesamples/android-architecture-components Architecture
N高等学校でプログラミングを教えているsifueと言います。本日「Webプログラミングが面白いほどわかる本」という、JavaScriptでプログラミング入門を終えたN高等学校の生徒が、本格的なWebプログラミングを学ぶための基礎知識を習得する部分をまとめた本を出版させてもらいました。N高等学校の生徒さんが1年目の9月ぐらいまでに習う内容となっています。 各所で話題となっていますN予備校プログラミング入門コースの、第1章部分は前書である「高校生からはじめるプログラミング」なのですが、この本は2章から3章の前半までがまとまった内容となっており、 ●Chapter1 Linuxの基本を身に付けようLinuxというOS/コンピューターの構成要素/コマンドでファイルを操作する/標準出力/viの使い方を学ぼう ●Chapter2 シェルプログラミングをやってみようシェルプログラミング/通信とネットワー
先日書いた AWS の勉強方法をまとめた記事(AWSを学ぶ上でやってよかった勉強法5選 - log4ketancho)で、「簡単なWebサービスをAWSで運営するといい勉強になるよー」と書きました。その中で、 今まで経験したり今いるところはどこもオンプレばかりでAWSとかのクラウドの知識が全くつかないからどこかで勉強したいし個人サービス運用とかしたいんだけど、1年過ぎるといきなりコストがドカンとかかりそうで…… や 「2)簡単なWebサービスをAWSで運営する」は誰もが考えることだが、最初の無料期間1年間以外、AWSで個人ブログなりを運用するのはコスト悪すぎだろ…。 というような利用料金が気になってしまう、、というコメントを幾つかいただきました。 この気持ちとても分かります!業務で使う分にはサーバー何台立てようが気になりませんが(は言い過ぎですがw)、個人でサービスを運営する場合はそうはい
Yes, in API level 26 it's deprecated. Instead, you can use progressBar. To create it programmatically: First get a reference to the root layout RelativeLayout layout = findViewById(R.id.display); //specify here Root layout Id or RelativeLayout layout = findViewById(this); Then add the progress bar progressBar = new ProgressBar(youractivity.this, null, android.R.attr.progressBarStyleLarge); Relativ
REST API仕様からAPIクライアントやスタブサーバを自動生成する「OpenAPI Generator」オープンソースで公開。Swagger Codegenからのフォーク RESTful APIの仕様を基に、APIクライアント用SDK、APIクライアントのテスト用にAPIサーバのように振る舞ってくれるスタブサーバ、Webサーバのコンフィグレーション、ドキュメントなどを自動生成してくれる「OpenAPI Generator」がオープンソースとして公開されました。 RESTful API仕様の記述フォーマットは、2015年にマイクロソフトやGoogle、IBMらが立ち上げた「Open API Initiative」が提唱する「OpenAPI Specification」が事実上の業界標準となっており、OpenAPI GeneratorもこのOpenAPI Specificationを基に開
背景 サーバーサイド開発のプロジェクトでGitFlow(的な)運用を行っていたが、本番リリースの際に困ることがあったのでgitの運用フローを変えて解消したという話。 まず問題の内容から順番に書いているので、結論(新しい運用ルール)だけ知りたい人はこちら git運用フローについては、GitFlow・GitHub Flow・GitLab Flowなどが有名だがどれとも少し違うように思ったのでまとめた。 <2018/06/10追記> 新フローにも名前が欲しいと思っていたが、同じやり方を「GitFeatureFlow」と呼んでいる記事を見つけた。個人的にもしっくり来たのでこれからはこの呼称を使っていこうと思う。 cf. GitFlowは使わない!シンプルな「GitFeatureFlow」を紹介します </追記終わり> 導入プロジェクトの概要 採用するべき運用ルールはプロジェクトの条件にも依ると思う
ドメイン駆動設計は原典となる「エリック・エヴァンスのドメイン駆動設計」の初版が2003年と歴史があり、モダンなフレームワークであればその思想を取り入れた設計がなされているにも関わらず、日本語の情報が少ない気がする。 最近ドメイン駆動設計をやろうと主にWeb上の情報を探っていたので参考になったサイトをリンク集の形でまとめてみる。 概要 概要を把握するのが一番難しいように思うので、色々と目を通すのがよさそう。 little-hands.hatenablog.com enterprisegeeks.hatenablog.com enterprisegeeks.hatenablog.com speakerdeck.com ドメイン駆動設計とは何か 【入門編】 from 増田 亨 www.slideshare.net 3週連続DDDその1 ドメイン駆動設計の基本を理解する from 増田 亨 www
デザイン思考は、問題を探索・解決するための方法です。リーンは、私たちの信念を試し、適切な成果につなげる方法を学ぶためのフレームワークです。アジャイルは、ソフトウェアの変化していく状況に適応するための方法です。 デザイン思考は、能力と学習に関するものです。スタンフォードd.schoolのCarissa Carter主任は、デザイナーを高める能力について、素晴らしい記事を書いています。たとえば、曖昧さ、共感的学習、統合、実験などが、その能力として挙げられています。意味を生み出し、問題の枠組みを設定し、潜在的な解決策を探索する、デザイナーの能力が重要なのです。 『誰のためのデザイン?』の著者であるドナルド・ノーマンは「デザイナーは最初のアイデアに満足しない」と述べています。あなたも考えてみてください。最初のアイデアが最高のアイデアだったことはありますか?意味や新しいアイデアが生まれるのは、物事を
たぶん1000回くらいは言われてきているがいまだに絶滅しないので、もう1回言う。ファイル名でもソースコード上の変数でもCSSのセレクタでもなんでもいいけど、相対的なネーミングはやめよう。 Safe Harbor Statement この投稿は個人の(中略)であり、所属する組織とは関係ありません。 なぜ相対的なネーミングをしてはいけないか 名前をつけた人の主観が入り込むため 時間が経つにつれ名前が実態と乖離し混乱を招くため 実装に無駄な制約をかけるため なぜ相対的なネーミングがなくならないか なにが相対的なネーミングなのか理解していないため じゃないかな多分。 避けるべき語 というわけで相対的なネーミングを回避するための禁止ワードのうち代表的なものをあげておきます。 new, 新, latest, 最新, old, 旧 など これらの時系列を表す語は、比較対象がないと新なのか旧なのかわかりま
概要 AndroidでDialogを実装するとき、Activityにinner classとしてDialogFragmentを実装する方法をよく使っていましたが、Activityのステップ数が多くなってしまうのと、Dialogがどこにあるのかわかりづらいと感じていたので、Dialogの実装を統一化するプラクティスを考えました。 詳細 Activity内にDialogを実装するのではなくDialog表示のためのFactoryを使う。 DialogのshowもActivityではなく共通クラスに任せる。 ソースコードはGitHubより取得お願いします。 https://github.com/ken-maki/k_commons.dialog 構成は以下。 com.android.k.commons.dialog ┣lib ┃┣BaseDialogFactory ┃┃ DialogのBaseFa
Javaのサポートについてのまとめ Javaのライセンスやサポート状況について混乱が発生しているように思います。Javaのサポートを各団体がどのように行なっているかをまとめてみます。 知っておいてほしいのは、Javaの実装やサポートはOracle JDKかOpenJDKの二択、ではなくAdoptOpenJDKやAzul Zulu、Corretteなど多くの選択肢があるということです。 ここでサポートはバグやセキュリティに対応したパッチがリリースされることを表しています。 Javaのリリースサイクル これまで、Javaは3年ごとを目標に結局5年くらいかけて次のバージョンを出したりしていましたが、それでJavaはなかなかバージョンアップしなくて古いと言われていました。それが2017年9月、今後は6ヶ月ごとにフィーチャーリリースを行うというリリースモデルに変更されました。Java9が2017年9
あるエンジニアが「Kibela」というサービスを考え、リリースするまでのフローを全部教える エンジニアがサービスのアイデアを思いつき、それをリリースするまでにはどのような過程があるのでしょうか。情報共有ツール「Kibela」が世に出るまでのフローを、起業した井原正博さんが詳細に振り返ります。 ヤフーやクックパッドでの開発を経て、ビットジャーニーで代表を務める井原正博(いはら・まさひろ/@ihara2525)です。プライベートで超長距離のランを楽しむかたわら、情報共有ツール「Kibela」の開発・運営を手がけています。 Kibela - 個人の発信を組織の力にする情報共有ツール 「Kibela」は僕自身が2015年に起業して立ち上げたサービスですが、この記事では、僕がサービスをいかに開発したか、その方法からリリースまでの過程を振り返りつつ、サービスの現在の状況までお伝えします。 「自分でもサ
鳥のさえずり声を聞いて、私は悪態を吐いた。今日の早朝に予定されていたミーティングのことをすっかり忘れていたのだ。 まったく、最悪の朝だ。着替えている間に、電話も鳴った。「高い金を払ってコンサルタントを雇った極めて重要なミーティングだ」と念を押されていたというのに。 それもこれも昨日のバグのせいだ。睡眠時間も、開発スキルも、人員も、私の現場には何もかもが足りていない。 それにも関らず、理解の足りない上司は「テスト工程を削ってでも早く納品しろ」とプレッシャーを与えてくる。 あの馬鹿どもめ。一体何を考えているんだ? スーツに着替え終わった私は、冷蔵庫の缶コーヒーで空腹を誤魔化すと、バイクに跨った。通勤時間が5分なのが、せめてもの救いだ。 「遅れてすまない」 そう言って会議室に入ると、奇妙なことに気がついた。教室のように整然と並んでいたはずの机が、即席の半円形に並べ替えられていた。 何より、ホワイ
InstrumentedHashSet<String> s = new InstrumentedHashSet<String>(); s.addAll(Arrays.asList("AAA", "BBB", "CCC"); System.out.println(s.getAddCount()); このとき、s.getAddCount()は6を返す。要素を3つしか追加していないのに何故か? その理由はHashSetが内部的にaddを呼び出しているから。add()とaddCount()で二重にaddCountが加算されている。 このInstrumentedHashSetを正しく動作させる為には、HashSetのaddAllメソッドがallメソッドを使用しているという事実を実装者が知っている必要がある。サブクラスとスーパークラスの実装が同じプログラマの管理下であれば安全だが、そうでない場合は脆い
(*この記事はデザイン未経験者や、非実務経験者の方に向けた実践記事です。) ✏️目次(再掲) 0. 前置き 1. メルカリとは 2. UIトレースをしてみる 3. デザイン観点の追加と、トレースの調整 4. 実際にメルカリのデザイナーに聞いてみた 5. まとめ・終わりに 0.前置きこんばんは、ココディーです。 前回、こんな記事を書いて、デザイナーや、デザイナーに未経験からなったという人達から、たくさんの反響をもらいました。ありがとうございました! この記事の中で、問題視していたのは「デザイナーの総数を増やしていく必要性」でした。 その上で「ノンデザイナーからデザイナーになっていくプロセスが確立していない」ということを課題として、その解決の一つの方向性として「デザイナーに弟子入りするということ」を挙げていました。 とはいえ、「未経験からデザイナーのもとに弟子入りをする」という事も、デザイナー
最近増えているスタートアップで働きたいデザイナー向けの記事です。自分の経験から勧めたい・知っておいて欲しい事をまとめました。 作業環境はケチらないで投資する学生でも本気で勉強すれば1年以内にその投資を回収できるので、PCはケチらずにハイスペックなMacBook Proを買った方が良い。 稀に安いからと言う理由で、MacBook Airや旧スペックのPCで作業している人を見かけるけど、若い時ほど本質的な勉強に時間を裂いて欲しいし重い環境で作業し続けるのは効率が悪くインターンの @reo も古いPCで効率悪かったので、新品のMacBook Proを付与して、まともなソフトウェアセッティングとショートカットを教え込んだ。 ちなみに、僕がデザイナーにiMacではなく、Macbook Pro+外部ディスプレイを勧める理由は、キーボードとトラックパッドが近いと手を動かす量が減って作業効率が良いのと、仕
最終報告書を読む 九州商船株式会社のWEB予約サービスに対する不正アクセスについて、最終報告書が公開されました。報告書を読ませていただきましたが、その内容に関して大変勉強となることが多く含まれています。 弊社WEB予約サービスに対する不正アクセスに関する最終報告|九州商船 ※ITmediaでニュースにもなっていましたので追記しておきます。 japan.zdnet.com 不正アクセスの目的は、linuxに不正侵入し仮想通貨マイニングを行うというものです。データを盗み出すのではなくマイニングというところが2018年っぽいです。ただCPUが100%に張り付くのですぐに見つかってしまっていますが。 この報告書について考察してみます。 原因についての考察 原因はvsftpdで使っているFTPプロトコルをANYで開けていて、ブルートフォースでパスワードが割れてしまったこと。かつ、OS/ミドルウェアの
こんにちは、青木ととです。 最近、 所属している会社 でふりかえりにおけるファシリテーションをすることが多くなってきたので、ふりかえりについてのポエムを書こうと思います*1。 特定の書籍や文章から影響を受けている部分は多いですが、持論の箇所も多々あるので、何か違和感を感じたら遠慮なく石を投げてください。ぽいぽい。 "ふりかえり" について 🌲木こりのジレンマ 🗯ふりかえりは愚痴大会ではない 📆開催頻度は1~2週間に1度 ⚒ふりかえりの手段/フレームワーク KPT KPTとは KEEP KEEP ≠ GOOD PROBLEM 掘下タイム⏰ 問題 🆚 私たち TRY 質より量🗻 コントロール🎮できることに注力する TODO/ACTION 「誰が」「いつ」やるのか KPTの進め方について 大まかな流れ テーマを決める グラウンドルールを決める 出来事を思い出す 今週はどんな出来事があ
はじめに 本稿では、仕事をする上での作業工数の見積もり方法について説明します。 工数とは何か 工数(こうすう1)というのは、仕事において、あるひとつの作業を完了するまでにかかる総累計時間のことです。情報処理技術者試験に出てくるTAT(ターンアラウンドタイム)とは意味合いが異なります2。 例えば、ある作業に40時間(40H3)かかるとした場合、工数は40時間であるといえます。1日8時間勤務だとした場合、40時間は5人日(にんにち)と表現することができます。さらに、1ヶ月20日勤務だとした場合、0.25人月(にんげつ)と表現することもできます。 一般的に工数の単位は「人日」および「人月」で扱います。 学生時代は工数を気にすることはないですが、ITエンジニアとして会社で働くようになると、かならず工数を意識する必要があります。 なぜ工数を意識する必要があるのか なぜ工数を意識する必要があるのかとい
結論メソッド数のカウントはAndroid Studioで簡単にできるよ! 詳しくAndroidアプリを作っていると65536という数字に敏感になります。これはメソッド数の上限。超えてしまうとビルド時にエラーになります。 64K を超えるメソッドを使用するアプリの設定 | Android Studioにも 単一の DEX ファイル内で参照できるメソッドの総数が 65,536 に制限されます。 と書かれていますね。 Multidex構成にすればビルドできるのですが、ビルド時間が延びたり、特定条件下で正しく動作しなくなったりと、できれば避けたいところ。 debugビルド時もProGuardを有効にして不要なメソッドを削除する作戦もありますが、これもビルド時間に影響がでます。 なので、普段からメソッド数をカウントして65536を超えないかどうかチェックすることになります。いい感じのライブラリなんだ
「頑張って遅れを取り戻す」 綺麗な言葉ですが、私は嫌いです。その中でも次の言葉が特に嫌いです。 頑張る 遅れ 取り戻す 全部。これらが嫌いな理由をそれぞれ説明していきます。順番は「頑張る」→「取り戻す」→「遅れ」です。 なお、「頑張って遅れを取り戻す」に期待される結果は「他に一切の影響を与えず、遅れだけが綺麗になくなる」だと思われます。 頑張る 「頑張ってなかったん?」と言うと「頑張っていましたが、もっと頑張ります。」みたいなのが返ってきます。でもこれって多分「頑張る」と言われることが求められているからそう返してるだけで、もともと手なんて抜いていない。仮に手を抜いていたとしたら「頑張る」は「手を抜いていました」の宣言になるので、それを許容してる状態が問題になるんじゃないかな。 とか言葉遊びは置いておいて、現実の話をします。こういう文脈での「頑張る」は「長時間連続労働」に他なりません。そこで
Activity が再生成される際の、View の onSaveInstanceState メソッドと onRestoreInstanceState メソッドについて個人用にまとめておく。 Activity の再生成 Activity が再生成 (re-creation) される際には、以前の状態が Activity#onCreate と Activity#onRestoreInstanceState に渡される。 See : The Activity Lifecycle | Android Developers Activity#onRestoreInstanceState が呼ばれるのは、Activity#onStart が呼ばれた後。 『This method is called after onStart() when the activity is being re-initia
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く