slides for #builderscon tokyo 2018

slides for #builderscon tokyo 2018
Daggerってありますよね。コンパイル時に依存性を解決するのでパフォーマンス的に有利なDIコンテナです。 https://google.github.io/dagger/ 依存関係の不備がコンパイル時にエラーになって発見できるのも、実行時にエラーが出たときの修正の難易度が高いAndroidアプリにはありがたいということで、Androidでよく使われてるようです。 基本的なオブジェクトの定義 I have a pen. public class Pen { @Override public String toString() { return "ペン"; } } I have an apple. public class Apple { @Override public String toString() { return "アッポー"; } } Ohh!!! Apple Pen!!! p
Sun MicrosystemsがOracleに買収されたのが2009年ですから、あれから7年が経ちました。 2013年、Javaは大人になったはずだった 僕は2013年に「イマドキのJavaとORACLEについて - arclamp」という記事をアップし、次のように書きました。 そんなわけで「ORACLEはJavaにコミットしているのか?」という質問が無意味なぐらい、ORACLEはJava技術だけではなく、Javaユーザーの方を向いているのです。 もちろん、ORACLEは(SUNに比べて)イノベーションが足りないとかスピード感がないとか批判もできるのですが、これだけエンタープライズのユーザーが増えた中では、Javaの後方互換性を保ちつつ、着実に進化していく、つまりは引き続き安心してJavaを使うことができるというのは大きな価値でしょう。 そう、Javaは本当の意味でオトナになったのかもし
色んなシステムに携わっていると、様々なJavaのクラス名に遭遇する。 ○○Beanとか ○○DTOとか ○○Entityとか ○○VOとか ○○Form。 ここらへんって 「MVCのModelのデータ部分にあたるって意味で同じだし」 とか 「ゲッター/セッターがあるクラスで意味的に一緒じゃない?なんで色々名前つけてんの?」 って思いませんか? ってことで、今回はそれぞれの定義を改めて考えてみようと思う。 とりあえずはそれぞれの意味から ・Bean 総称はBean。あえて言うならJavaBeansの略。 Javaの初心者でも知っている。 あまりに有名すぎるが、Oracleのサイトのガイドを見ながらパクってまとめてみた。 ・Sun Microsystems社のJavaBeans仕様に準拠した再使用可能なソフトウェア・コンポーネント。 ・最低限、クラスにはプロパティが必要。 ・プロパティはメソッ
タイトルを見て釣られクマーな皆さんこんにちは。 ホッテントリメーカーで作るような煽りタイトルって、みなさんもう見飽きてると思うんですよね。 今調べたらホッテントリメーカー2008年だそうで。どうりでねー。古臭いなーと思いましたよー。 「一から学ぶJava」ってのをね、1.0にするだけでこんなに素敵なタイトルになるんだから面白いですねー。 タイトルを思いついただけだったんですけど、思いついたらやっぱりちゃんと中身も書かないと行けないじゃないですか。やだー 面倒くさいんですけどね。ちょっと1.0から学んでみましょうか。 Java 1.0 1996年1月23日Javaの1.0がリリースされたのは1996年1月23日ですね。発表されたのが1995年5月23日でJavaの誕生日といった場合にどちらを取るかで揉めることがあります。 かれこれ20年前なわけで、当時のパソコンというとハードウェアはCPU
5年前に買った『Java並行処理プログラミング ―その「基盤」と「最新API」を究める―』をようやく読んだ。買った頃には Perl やシンプルな JavaScript ばかり書いていたので並行プログラミングなんてほとんど気にすることがなく、実感がなくて読むのも途中で止まってしまっていた本で、家を掃除しているときに見つけたもの。その後も趣味で Android アプリを書くなど Java に触れる機会はあったけれど、せいぜいが AsyncTask を使うくらいで、マルチスレッドを強く意識してコードを書くこともなかった。 Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行本購入: 30人 クリック: 442回
このエントリでは、Yegor Bugayenkoによる記事、ORM Is an Offensive Anti-Patternを紹介する。 (Yegorから和訳と転載の許可は得た。) 以下はその全文の和訳だが、意訳超訳が混じっているので、もとのニュアンスを知りたければ元記事を読んでもいいし、読まなくてもいい。 結論から言えば、ORMはオブジェクト指向プログラミングの原則の全てに違反するひどいアンチパターンだ。オブジェクトをバラバラに引き裂き、もの言わぬ受身なデータ入れに変えてしまう。 小さいWebアプリケーションから、数千のテーブルをCRUD操作するエンタープライズシステムまで、どんなアプリケーションにもORMが存在することはゆるせない。 代わりになるものは? SQLを話すオブジェクトだ。 ORMの仕組み オブジェクト関係マッピング (Object-relatinal mapping、ORM
新規広告開発部の松本です。 クックパッドiOS/Androidアプリの広告の開発に携わっています。 Androidアプリ開発の際、皆さんはnullをどのように扱っていますか?また、nullチェックを行うのであれば、どのような基準で行っていますか?私自身まだまだAndroid開発歴が浅いため、特に何か基準がある訳でもなく至る所でif (foo != null)といったnullチェックを行おうとしていました。 これに対し、先日の社内コードレビューでとてもためになるアドバイスをもらいました。私のようなAndroid初心者にとってnullに対する考え方の基礎を作ってくれるレビューだったので、本稿で共有したいと思います。 また、AndroidやJava開発に慣れた方にとっては「今更そんな話か」といった内容かと思いますが、クックパッドでのレビューの一例としてご覧いただければ幸いです。 やりがちなnul
渡辺です。 DevelopersIOでの100本目のエントリーがJUnitネタとなりました。 自分がJUnit実践入門を執筆したのは2011年から2012年にかけてです(出版が2012年11月)。 それからJava8がリリースされていますが、JUnit4自体は大きな進化はしていませんでした。 昨日、JUnit Lambda Prototypeが公開されました。 まだプロトタイプということで、今後の変更は大きいかと思いますが、いよいよ次世代のJUnitの足音が聞こえてきた感じがします。 今回は、このドキュメントからJUnit Lambdaの概要と方針について速報をお送りしたいと思います。 なお、現在JUnitチームでは、このプロトタイプに対するフィードバックを募集しています。 ここはこうじゃないとかはてブコメントする前にTwitterやGitHubでフィードバックを! JUnit Lambd
仕事で Android アプリのコードを触り始めはや数ヶ月。少しは理解が進んだ。 今の仕事のコードは、残念ながらそれほど素晴らしくない。その昔 Android Java にまだ慣れていなかった人々が書いたであろう古いコードが目につく。そして古いコードの昔ながらな残念さは、従来の Java とは違う Android Java の「らしさ」を描き出す。そんな話を数回にわけて書いてみたい。 第一回は非同期性のはなし。 Android のアプリはメインスレッドをブロックしてはいけない。だから色々と非同期に書く。ところが従来の Java は非同期がさほど得意でない。多くの API がブロックする。 ブロックする処理は別のスレッドに追い出せばいい。ただし結果はイベントループを通じてメインスレッドに戻さないといけない。これを綺麗に書くイディオムが、Android では最近まで確立されていなかった(Asy
仕事でマルチスレッドを扱うようになったので備忘録として Executors 関連のメモを残しておく。 あるタスクを別スレッドで実行したい時、Executors クラスを使えば自前でスレッドの管理をすること無く簡単に並列処理を行えるようになる。 もちろん完全に簡単になったわけではなく、マルチスレッドプログラミングの困難さは健在だが、自前でスレッドの管理をしない分バグを仕込む可能性も減るだろう。 はじめに Executors はタスクと呼ばれる処理の最小単位を別スレッドで実行する仕組みである。マルチスレッドなのでシングルスレッドに比べると複雑性は若干上がるものの、通常のマルチスレッドプログラミングに比べれば少ない複雑性、高い安全性を備える。そして何より、パフォーマンスの向上が期待できる。 この仕組みはジョブキューモデルそのものである。ジョブはタスク、キューは後述する Executor に相当す
人は、新たな環境で経験を積んでいくと、少しずついろんなことが出来るようになり、そのうち、その環境では、何でも自分の思った通りに出来るようになります。 「おら、強ぇ」状態。 これは、素晴らしいことなのですが、一つ問題があります。成長が止まってしまうことです。 人は、知らないことを経験したり、つまずきを乗り越えたときに、成長します。知らないことがほとんどなくなったり、つまずくことがなくなったりすると、成長が止まってしまうのです。 Seasar2.4、S2JDBC、SAStrutsと開発してきて、通常のサーバーサイドJavaは、十分にやりきった感がありました。このままこの場所にいるのは、心地いいんだけど、成長が止まってしまうのが不安でした。 人って不思議なもので、一定の能力でとどまるってことが出来ないんだよね。成長が止まると、能力は落ちていく。 自分はどこか、ドラゴンボールの悟空に似ているところ
GoFデザインパターンの一覧表と,活用のためのコメント,および入門者が独学するためのリンク集(サンプルコード付き)。 入門者の独学を支援するために,このページのURLを提示して熟読させ,各パターンを短時間で効率よく学んでもらう。 デザインパターンはプログラマの常識だ。 Java使いかどうかは問わない。 にも関わらず,入門書を買ったまま,途中で挫折する人が多い。 挫折の原因は,パターンの数が23もあって,多いからだろう。 全パターンをすんなり覚えてもらうためには,各パターンごとに 「要するにこういう目的のパターンなんだ。」 「10文字で表現すると,パターンの意味はこうなんだ。」 という要点・本質を,短いコメントで伝えれば助けになるだろう。 こういった学習を通して,Java言語の「設計思想」も併せて感じ取ってゆけるはず。 全パターンの一覧表(要約コメント付き) 全パターンについて,10文字以内
関数の再帰と末尾再帰について学習したのですが、ちょうど某所で話題にあがってたので良いタイミングだなと思って書き留めておきます。 再帰とは自分自身を参照するようなアクションのことです。再帰関数が一番に思い浮かびますが、定義や言葉遊びなどでも使われます。例えばプログラム言語のPHPですが、この頭文字は現在「PHP: Hypertext Preprocessor」を意味するものとなっています。PHPを展開したのにまたPHPが出てきます。 階乗を計算する! さて自分自身を呼び出す関数のことを再帰関数と呼びますが、一例としてnの階乗を計算する関数を見てみましょう。nの階乗とはn!と書き、1からnまでを乗算した数です。1の階乗は1、2の階乗は1×2で2、3の階乗は1×2×3で6となります。同様に、nの階乗は1×2×…×(n-1)×nとなります。 もうちょっと詳しく計算を注目してみます。 1! = 1
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く