タグ

ブックマーク / nowokay.hatenablog.com (92)

  • なぜオブジェクト指向方法論に代わる方法論が出ないのか - きしだのHatena

    1990年代にオブジェクト指向分析・設計の方法論がめちゃ流行ったことがあります。 ただ、そのブームが終わって、後続となるような方法論が流行ることはありませんでした。 で、なぜなのか考えていたのですけど、オブジェクト指向方法論のウリは分析段階で出てきたオブジェクト(といいつつクラス)がコードにそのまま引き継がれるというものでした。ようするにオブジェクト指向方法論というのはコードのスケッチを書いて詳細化していくというものだったのです。 しかしながらこれは、スケッチとして書いた分析・設計が間違っていればコードも間違うわけで、強くウォーターフォールの性質をもつものでした。 結局のところスケッチの妥当性というのはコードを書かないと検証ができません。分析・設計段階で見出されたクラスが妥当かというのは、コード書かなければわからなかったのです。逆に、コードを書けば妥当かどうかわかります。であれば、最初から

    なぜオブジェクト指向方法論に代わる方法論が出ないのか - きしだのHatena
    honeybe
    honeybe 2022/08/05
  • さよなら「あなたとJAVA」 - きしだのHatena

    みんなから愛された「あなたとJAVA」の役割が終わったようです。 「Java」で検索するとjava.comのサイトがひっかかるのですが、このサイトは古いまま放置されていて、Javaの学習を始める人にとっての罠になっていました。 https://www.java.com/ja/ 「あなたとJAVA」というキャッチコピーの脱力感と、「ダウンロー」で改行され「ド」だけが目立ってしまう間のヌケかたから大人気のサイトでしたが、かっこいいものではない・・・ もともとはJAVA+YOUで、2008年JavaOneのキャッチコピーでした。これは大文字だけのデザインだからよかったのだけど、日語訳するときJAVAだけ大文字で残ってしまい「JAVAではなくJava」の説得力をなくさせてくれていました。 それに、ほとんどの人がJavaのプログラミングの勉強をしようとして「Java」を検索するのにJREの配布サイ

    さよなら「あなたとJAVA」 - きしだのHatena
    honeybe
    honeybe 2022/05/25
  • オブジェクト指向はすでに粒度が時代にあっていない - きしだのHatena

    定期的にオブジェクト指向disを書いてしまってるのだけど。 とりあえずオブジェクト指向の話をすると定義が人によって違いすぎるので、改めてここでの定義を書いておくと 、基的にはOMTの「データ構造と振る舞いが一体となったオブジェクトの集まりとしてソフトウェアを組織化すること」 に従うのですが 「1990年に流行りソフトウェア開発のすべてを飲み込み、いまとなっては人それぞれ定義が違って技術的議論に使えなくなった、主にオブジェクトを基単位としてプログラムを整理するやりかたを指すマーケティング用語」 という感じです。 ほとんどの場合で人によってオブジェクト指向の指す範囲が違いすぎて、技術的知見の共有には使えなくなっています。でも、いずれの定義にしろオブジェクトを基単位にするというのは重要ではないかと。 ソフトウェアの組織化の単位としてオブジェクトを使うというのが大事で、データの搬送に構造体代

    オブジェクト指向はすでに粒度が時代にあっていない - きしだのHatena
    honeybe
    honeybe 2021/09/25
  • 「写経」の原典 - きしだのHatena

    書籍とかのサンプルコードをそのまま入力して勉強することを「写経」というけども、それを言い出したのは角谷さん、というメモ。 写経は言葉ではなく心で理解するのが大事。 2004-2005頃に @t_wada と働いていた頃、サンプルコードをコピペでなく手打ちすることを「写経」と呼んでました。和田さんが以前の現場に通いながら"TDD by Example"のサンプルコードを「祈るような気持ち」で手打ちしていたというエピソードを形容して「写経ですね」と呼んだのが始まりだったような…— Kakutani Shintaro (@kakutani) 2021年9月18日 恐らく2005年7月ごろではないかと思われる。 この夏は写経が来るね, 地震が来た - 角谷HTML化計画(2005-07-23) 角谷さんのブログでの初出も7/15だけど、babieさんのコメントを見るとこの時期にまわりで語ってたこと

    「写経」の原典 - きしだのHatena
    honeybe
    honeybe 2021/09/19
  • オブジェクト指向には、カメラがやっとついたころのガラケーのイメージがある - きしだのHatena

    某所でオブジェクト指向についていろいろ書いたのでまとめておく。 問題意識としては初学者がなにかというと「オブジェクト指向できるようになりたい」のようなことを言うけどそこまでの優先順位でがんばるものではないんでは、というところです。 まず前提として、オブジェクト指向は1980-2000年くらいに流行って発達したものの、それ以降は時代にあわせた進歩はしていない20年以上前の技術ってのがあります。 そのころは今だとCPUのキャッシュにも満たないようなメモリをやりくりしてプログラムを書く必要があったので、オブジェクト指向はメモリ上のデータをコピーすることなくうまく使いまわせるようなプログラム技術になっています。 そしてオブジェクト指向にはそこから目だった更新はなく、タイトルに書いたように、カメラがやっとついたくらいのガラケーのような古い技術という感じがします。 オブジェクト指向について、アプリケー

    オブジェクト指向には、カメラがやっとついたころのガラケーのイメージがある - きしだのHatena
    honeybe
    honeybe 2021/01/21
  • 光療法ライトで睡眠が改善して昼間のヤル気もでてきた - きしだのHatena

    睡眠リズムを整えるために光療法ライトを買って3ヵ月試してみたら、昼間活動しやすくなっただけではなくて、冬の時期によくあるヤル気のなさもなくなって、いろいろ活動できるようになりました。このブログエントリもそう。 在宅勤務で出勤がなくなったり出かけることがなくなって、気分がおちこんだり夜ねむれなくなったという人は、光療法ライトを試してみるといいかもしれません。 注意 睡眠や気分の問題を感じているなら、できれば睡眠外来やメンタルクリニックにいって相談するほうがいいと思います。 非24時間眠覚醒症候群 ぼくは非24時間眠覚醒症候群というやつで、厚生労働省のサイトには「通常の社会生活が困難となります」などと書かれており、たしかに通常の社会生活は困難だなーと思っていたところ。 非24時間睡眠覚醒症候群 | e-ヘルスネット(厚生労働省) で、いろいろ試していたのだけど、まあ出社もしなくていいし、寝れる

    光療法ライトで睡眠が改善して昼間のヤル気もでてきた - きしだのHatena
    honeybe
    honeybe 2020/12/27
  • オブジェクト指向は禁止するべき - きしだのHatena

    プログラムがまだ不慣れな人が「プログラムちょっとわかるようになったけど、まだぜんぜんオブジェクト指向とかできてません」のように言ったり、ちょっと慣れた人が「このソース、ぜんぜんだめ。オブジェクト指向ができてない」にようなことを言ったり、まるで、オブジェクト指向ができてるかどうかがよいプログラムかどうかを表すことになってるようだ。 Javaのアルゴリズムのに、「Javaなのにオブジェクト指向ができていない」のような書評がついているのを見たときには、お前は何を求めてるんだと思ったりもした。 そのようなオブジェクト指向は、窓から投げ捨てるべきだ。オブジェクト指向はプログラムのよしあしの基準にならない。 むだにHogeインタフェースとHogeImplクラスがあったり、むだにnewするだけのcreateメソッドがあったり、どこで値が設定されてるかわからないオブジェクトがひきまわされてたり、ソースコ

    オブジェクト指向は禁止するべき - きしだのHatena
    honeybe
    honeybe 2019/07/29
  • GraalVMはどれだけ遅いか - きしだのHatena

    GraalVM流行ってますね。 そして、多くの人はGraalをAOTとして使うnative-imageのことだけをGraalVMと言ってたりします。 ご安心を。このエントリではGraalをJITとして使うHotSpotモードとGraalをAOTとして使うnative-imageの両方が遅いという話です。 GraalVMは速い、と言われてますが、残念ながらHotSpotモードでC2より速い結果を手元では出せていません。 公式ブログでは1.7倍から5倍速くなると書いてますけど、手元では再現できてません。 Under the hood of GraalVM JIT optimizations - graalvm - Medium native-imageは速い、というのはよくありますが、これはネイティブ化によりJVMの起動時間や最適化の時間、最適化されずに動く時間が省略されるので起動が速い、とい

    GraalVMはどれだけ遅いか - きしだのHatena
    honeybe
    honeybe 2019/06/27
  • アルゴリズムの勉強のしかた - きしだのHatena

    この記事で、アルゴリズムの勉強はアルゴリズムカタログを覚えることじゃないよということを書きました。 プログラムの理論とはなにか アルゴリズムの勉強というのは、スポーツで言えば腕立て伏せや走り込みみたいな基礎体力を養うようなもので、「ソートなんか実際に自分で書くことないだろう」とかいうのは「サッカーは腕つかわないのに腕立ていらないだろう」とか「野球で1kmも走ることなんかないのに長距離の走り込みいらないだろう」とか言うようなものです。 Twitterでアルゴリズムの勉強とはなにかと尋ねられて、「アルゴリズムの基的なパターンを知って、それらの性質の分析のしかたをしって、いろいろなアルゴリズムでどのように応用されているか知って、自分が組むアルゴリズムの性質を判断できるようになることだと思います。 」と答えたのですが、じゃあ実際どういうで勉強すればいいか、ぼくの知ってるからまとめてみました。

    アルゴリズムの勉強のしかた - きしだのHatena
    honeybe
    honeybe 2019/05/14
  • Java11でのAPI変更を雑に列挙 - きしだのHatena

    先月末でJDK11はRampdownフェーズに入って、機能凍結されました。 なので、今後はAPIの追加・削除・変更はほとんどないと思われます。 おそらく、機能的には現在でているea20とほとんど同じものがJava11としてリリースされることになると思います。 JDK 11 Early-Access Builds 大きな機能変更としては、ここでJEPとしてまとまっています。 「JDK 11」 http://openjdk.java.net/projects/jdk/11/ Raw String Literalが間に合わなかったのはとても残念です。JDK11トレインに乗り遅れるからがんばるぞ!みたいな投稿があって仕様をまとめてからML上は音沙汰なしですが、Rampdownフェーズが始まってから機能追加するLate Enhancement Request Processというのがあるようなので、

    Java11でのAPI変更を雑に列挙 - きしだのHatena
    honeybe
    honeybe 2018/07/05
  • Java11ではjavacせずにJavaファイルが実行できるようになる - きしだのHatena

    JDK11 ea18から、javacしないでもJavaファイルを実行できるようになりました。 あと、Windowsバイナリはzipファイルで提供されるようになっています。tarコマンドが提供されたとはいえ、エクスプローラーから解凍できるzipファイルになるのは ありがたい。 JDK 11 Early-Access Builds JEP330が取り込まれたことにより、ソースファイルがひとつのJavaプログラムは、javac不要でjavaコマンドで実行できるようになります。 JEP 330: Launch Single-File Source-Code Programs Windowsのコマンドプロンプトだと こんな感じ。 C:\Users\naoki\java>more Hello.java public class Main { public static void main(String

    Java11ではjavacせずにJavaファイルが実行できるようになる - きしだのHatena
    honeybe
    honeybe 2018/06/18
  • Javaの新元号対応を試す。そして実用には問題がある。 - きしだのHatena

    新元号対応はNewEraという仮の元号で対応が進んでいるので、試してみました。 おそらく、実用では使えない場面がある仕様になっています。 なので、元号対応が必要そうな人は、早めに試して声をあげる必要があると思います。 ビルドする ※ 2018/6/16追記 ea18が出ているのでそのまま試せます Masterブランチに取り込まれているので、明日あたりにでてくるea18で使えるようになると思いますが、いまは自分でビルドする必要があります。 ビルドについては、こちらを参考にしてください。ここに書いてるのとは違って、リポジトリはhttp://hg.openjdk.java.net/jdk/jdkです。 http://d.hatena.ne.jp/nowokay/20171104#1509753358 使ってみる JShellで使ってみます。 jdk $build/macosx-x86_64-no

    Javaの新元号対応を試す。そして実用には問題がある。 - きしだのHatena
    honeybe
    honeybe 2018/06/15
  • Java9、10でStringの+=に副作用があるバグ - きしだのHatena

    Java 9、10でStringの+=にバグがあるということがStack OverFlowで報告されていました。 Why does array[idx++]+="a" increase idx once in Java 8 but twice in Java 9 and 10? - Stack Overflow どういうバグかというと「s[i++] += i + ""」のようなコードが正しく動かないというものです。 次のコードを実行してみます。 public class PlusEqual { public static void main(String[] args) { System.out.print(System.getProperty("java.version")); String[] s = {"aa", "bb"}; int i = 0; s[i++] += i + "";

    Java9、10でStringの+=に副作用があるバグ - きしだのHatena
    honeybe
    honeybe 2018/06/12
    target=8だと期待通り動作する点含めて面白いバグ。
  • JDK 11で2つメソッドが削除されてHTTP Clientが正式に入る - きしだのHatena

    JDK9でincubatedでJDK10でもincubatedなHTTP Clientが、ようやくJDK11でjava.net.httpパッケージで入るらしい。 JDK HTTP Client - JEP 321 - Update あと、 1.2からDeplicatedだったrunFinalizersOnExitメソッドが削除される。Runtime.runFinalizersOnExitとSystem.runFinalizersOnExit。 (11) RFR JDK-8198249: Remove deprecated Runtime::runFinalizersOnExit and System::runFinalizersOnExit Java 9でforRemoval=trueになってますね。 https://docs.oracle.com/javase/jp/9/docs/api

    JDK 11で2つメソッドが削除されてHTTP Clientが正式に入る - きしだのHatena
    honeybe
    honeybe 2018/02/22
  • 10年間のプログラミングの変化といえばクラウド、型推論、リアクティブ - きしだのHatena

    この10年間のプログラミングの変化、というのが流れてきたのだけど、個人的にはクラウド、型推論付き静的型、リアクティブかなぁという風に思ってます。 クラウド(とスマホ) 2008年にGoogle App Engineが出たり、最初のHadoopサミットが行われたり、ちょうど10年前に始まったとも言えるクラウドは、すでに流行ではなく常識になっています。 いまや、クラウドを考えずにシステムを組むということはないんじゃないでしょうか。 スマホもこの10年で広まり、端末にUI、データはクラウドということも当たり前になっています。 40%の視聴率をもった紅白で視聴者が同時投票するようなことも、AWSを使って危なげなく行えるようになっていますが、10年前にこのようなサービスをたった4時間だけ行うということはなかなか考えにくいもので、実現できるのも限られたベンダーだけだったと思います。けれどもいまではそれ

    10年間のプログラミングの変化といえばクラウド、型推論、リアクティブ - きしだのHatena
    honeybe
    honeybe 2018/01/09
  • 正月からMSXのZ80アセンブラを書いていた - きしだのHatena

    あけましておめでとうございます。 どこぞに、正月3日に起こった出来事が1年を決めるという話が流れてましたが、そうすると今年は1年、夜中にZ80アセンブラを書いて昼間寝る感じになるんでしょうか・・・ 書いてたのは、こんな感じで誤差拡散でカラーテーブルを表示するプログラムです。 まずは素直なカラーテーブル 最初、年末に何を思ったかこんな感じのカラーテーブル表示プログラムを作りました。MSX2は赤緑8階調、青4階調の256色を同時表示できていたので、それを表示するとこうなるのです。 100 DEFINT A-Z 110 SCREEN 8 120 FOR I=0 TO 15 130 R=(I MOD 8)*32 140 B1=INT(I/8) 150 FOR J=0 TO 15 160 LINE (I*16,J*13)-(I*16+15,J*13+12),R+B1+(J MOD 8)*4+INT(

    正月からMSXのZ80アセンブラを書いていた - きしだのHatena
    honeybe
    honeybe 2018/01/09
  • 電子工作たのしー!ブラウザ上で回路シミュレーション。Arduinoも簡単 - きしだのHatena

    ブレッドボードを使った練習回路をちょっといじろうと思って、たぶんいいツールがあるはずだと探してたら、ブラウザで回路シミュレーションできるTinkercad circuitというのをみつけました。 https://www.tinkercad.com/circuits もともとはサンハヤトのキットでタイマーICを使ったブザーを作って、これをArduinoに対応させたかったのだけど、電子回路は不慣れなので、なにかシミュレーションできるツールを探していたのでした。 サンハヤト 小型ブレッドボードパーツセット SBS-203 タイマーIC555を使った電子工作セット 出版社/メーカー: サンハヤトメディア: Tools & Hardwareこの商品を含むブログを見る まずはそのままWeb上で動かしてみる。 電子工作たのしー! pic.twitter.com/QNr87vleqG— きしだൠ (@ki

    電子工作たのしー!ブラウザ上で回路シミュレーション。Arduinoも簡単 - きしだのHatena
    honeybe
    honeybe 2017/11/07
  • 新しいリリースモデルはJavaを使う人 全員要注目だった - きしだのHatena

    9月の頭くらいに、Javaのリリースモデルが6ヶ月ごとの短期リリースになるということが発表されてました。 で、「へぇ〜」みたいな感じで見てたのですけど、JavaOneでの話を聞くと、これ結構大変なのかも、ということになってそうなので、ちょっとまとめてみます。 追記:2018年05月の状況をQiitaでまとめています。 [Javaのサポートについてのまとめ2018 - Qiita](https://qiita.com/nowokay/items/edb5c5df4dbfc4a99ffb) Javaの新しいリリースモデル 公式情報はこちらにまとめられています。(10/4にアップデートされてます) http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html ざっくり言えば、6ヶ月ごとに機能リリースを行い、3ヶ月ごとにメンテナンス/セキ

    新しいリリースモデルはJavaを使う人 全員要注目だった - きしだのHatena
    honeybe
    honeybe 2017/10/07
  • ラムダのオブジェクトはどう作られるか - きしだのHatena

    ラムダは匿名クラスのシンタックスシュガーだとか言われますけど、オブジェクトの作られ方が違いますね。 というのを検証してみます。 (jdk1.8.0_112で動かしています) ループの中でhogeにラムダを渡して、hogeでオブジェクトを表示します。 まず匿名クラスを使ったコード。 public class LambdaObj { public static void main(String[] args) { for (int i = 0; i < 2; ++i) { hoge(new Runnable() { @Override public void run() { } }); } } static void hoge(Runnable r) { System.out.println(r); } } 実行するとこう。 myproject.LambdaObj$1@15db9742 myp

    ラムダのオブジェクトはどう作られるか - きしだのHatena
    honeybe
    honeybe 2017/06/09
  • 品質におけるコメントの役割。あるいは、レビューとコメント - きしだのHatena

    昨日のエントリでも書いたきょんくんとの会話なんだけど、なんとなく、コメントとテストは同じように扱えるんではないかという認識のもとで話がすすんでた。もちろん、コメント書けばテスト書かなくていいとかそういうのではなくて。 テストは、書きやすい対象と書きにくい対象がある。関数的に計算を行うコードの場合はテストが書きやすい。一方で、関数的ではなく副作用のあるコードはテストが書きにくい。データベースを扱ったり通信したりUIがあったり。 そして、そのようなテストを書きにくいときに、コメントはテストのように品質のために使えるんではないか。 で、問題は、どのように品質のために使うかということなんだけど、コードレビューのときの指針として使えばいいんじゃないかなと思った。 コードレビューのとき、コードだけを見ていると、名前付けとかコードの順番とか条件文の使い方とか、体裁的なものだけのレビューになりがち。そこで

    品質におけるコメントの役割。あるいは、レビューとコメント - きしだのHatena
    honeybe
    honeybe 2015/04/21