タグ

ブックマーク / nagise.hatenablog.jp (18)

  • なぜ自動テストの導入は失敗するのか? - プログラマーの脳みそ

    開発室の雑談。営業側のマネージャが言うには 「今のプロジェクトで自動テストの導入を試みている話をしたら、XXXさんのところでも過去にいくつか導入を試みたけどもみんな上手くいかなかったって話になって」 なるほど? まあ確かに自動テストはシステム開発にとって魅惑の技法ではあるものの、では導入がうまくいっているか? というと普及率は低いと言わざるを得ない。私がお手伝いしたプロジェクトでは、元請け側から自動テストをやるお達しが来たわけだが、紆余曲折あって掛け声倒れのような状態になってしまった。 ビジネス書の煽りタイトルのような件だが、古式ゆかしき受注生産の業務システム開発プロジェクトに自動テストを導入しようとして失敗する事例を聞いたので、僕なりに分析して見出した要素を挙げておこうと思う。 V字モデル ソフトウェア開発の手法としてV字モデルというものがある。 オーダーメイドでシステムを作るにあたっ

    なぜ自動テストの導入は失敗するのか? - プログラマーの脳みそ
    advblog
    advblog 2021/04/30
  • 西暦1年は閏年か? - プログラマーの脳みそ

    閏年(うるうどし)の話題。 Twitterで見かけた話題で「西暦1年は閏年かどうかぱっとわからん人おる?」という些か煽り気味のツイートを見かけたのだけども、反射的に「閏年じゃないに決まってるじゃん」とぱっと答えてしまわないだろうか。当にそうだろうか? そう単純な話なのだろうか? プログラミングを学んでカレンダーを扱うことを学ぶ際に置閏法についても簡単に触れられることがある。置閏法というのは閏年や閏月(太陰暦では1年が13ヵ月になるケースがあり追加の月を閏月と呼ぶ)をどのようなルールで挿入するかという話で、まさにアルゴリズムであるからプログラミングの話題と相性がいい。 置閏法 現代の西暦の置閏法(ちじゅんほう)は 西暦を 400 で割り切れる年は閏年 上記以外で西暦を 100 で割り切れる年は平年 上記以外で西暦を 4 で割り切れる年は閏年 上記以外は平年 といった手続きで閏年(つまり2月

    西暦1年は閏年か? - プログラマーの脳みそ
    advblog
    advblog 2020/10/30
  • Javaのリスク考察 2018年版 - プログラマーの脳みそ

    Java10以降、Java SEのリリースサイクルを6カ月単位とすることが発表されてしばらく経ち、また、予告通りJava11からいよいよJavaのサポート体制も変更となった。 稿ではJavaを使い続けるリスク、あるいはほかの言語ランタイムを使い続けるリスクについて検討してみたい。プログラム言語は用途に応じて様々なものが使い分けられている。特に稿では選択肢が多く、またJavaのシェアも高いサーバーサイドのWebシステムという戦場で検討してみたい。 「Javaリスク」という単語、語呂が良い— なぎせ ゆうき (@nagise) 2018年10月11日 pic.twitter.com/tBGvupxtJ4— rf (@rf0444) 2018年10月11日 ランタイムの有償化リスク 無償で提供されていたプログラム言語のランタイムが、突如有償化するリスクをまず考えてみよう。この点で、Java

    Javaのリスク考察 2018年版 - プログラマーの脳みそ
    advblog
    advblog 2018/10/16
  • ふたつのIterator - プログラマーの脳みそ

    コードを書いているとたまにふたつのIteratorをいっしょに回すコードを書くはめになる。 /** ふたつのItaratorを並べて回すサンプル */ static boolean compare1(List<String> list1, List<Integer> list2) { if (list1.size() != list2.size()) { throw new IllegalArgumentException("個数の不一致"); } Iterator<String> ite1 = list1.iterator(); Iterator<Integer> ite2 = list2.iterator(); // 敢えてショートサーキットしない&演算を用いる while (ite1.hasNext() & ite2.hasNext()) { String v1 = ite1.nex

    ふたつのIterator - プログラマーの脳みそ
    advblog
    advblog 2014/03/17
  • Java書けるんなら当然JavaScript呼び出せるよね? - プログラマーの脳みそ

    上司Java書けるんなら当然JavaScript呼び出せるよね?さっさとやっておいて」 JavaからJavaScriptを呼び出す Java 6 からスクリプトAPIを通じてスクリプト言語を呼び出すことができる。Java標準でJavaScriptのエンジン Rhinoが組み込まれているので特にインストール作業やクラスパスを通すような作業なしにJavaScriptの呼び出しをすることができる。 import javax.script.*; public class Sample { public static void main(String[] args) throws ScriptException { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEn

    Java書けるんなら当然JavaScript呼び出せるよね? - プログラマーの脳みそ
    advblog
    advblog 2014/02/28
  • 言語機能としての型、概念としての型 - プログラマーの脳みそ

    某エントリが型について再考するきっかけになったのは事実だが、個々人の思想の成否を問う気がないのでとくにリンクはしない。ここでは型とは何かという点について僕なりの思想を記しておきたい。 データ型を区別しない世界 ごくシンプルなチューリングマシンを考えよう。 チューリングの仮想機械は、 無限に長いテープ その中に格納された情報を読み書きするヘッド 機械の内部状態を記憶するメモリ で構成され、内部状態とヘッドから読み出した情報の組み合わせに応じて、次の動作を実行する。 ヘッド位置のテープに情報を書き込む 機械の内部状態を変える ヘッドを右か左に一つ移動する 上の動作を、機械は内部状態が停止状態になるまで反復して実行し続ける。 チューリングマシン この原始的な世界において「型」はない。メモリは抽象的で全てのメモリは同等に扱われ区別する必要はない。 また、チューリングマシンに程近い原始的なプログラム

    言語機能としての型、概念としての型 - プログラマーの脳みそ
    advblog
    advblog 2013/03/01
  • Javaのジェネリクスとリフレクション - プログラマーの脳みそ

    今回のテーマはジェネリクスとリフレクション。Javaのジェネリクスはイレイジャ方式なのでリフレクションでは何も得られないと思ってはいまいか。 public void hoge(List<String> list) {} といったメソッドがあったとして、リフレクションでこのメソッドの情報を得るとしよう。 import java.lang.reflect.*; import java.util.List; public class ReflectionTest { public static void main(String[] args) throws Exception { Method m = ReflectionTest.class.getMethod("hoge", List.class); Type[] types = m.getGenericParameterTypes(); f

    Javaのジェネリクスとリフレクション - プログラマーの脳みそ
    advblog
    advblog 2012/12/27
  • Javaでセミコロンなしでプログラムを書く - プログラマーの脳みそ

    java-ja温泉2日目の夕。 @yoshiori がpythonのワンライナの楽しさを得々と語っていた。 @yoshiori「Brainf*ck を Python-oneliner にコンパイルする Python-onelinerを書いたけど全ッ然反応がなかった。こんなに面白いのに!」 @yamashiro「だって分かりにくいもん」 西尾先生が通常ワンライナではtry-catchが使えないけど子プロセス立ち上げて例外を出力してパースすればエラー処理ができるとか(http://www.nishiohirokazu.org/blog/2006/08/python_12.html参照)そんな話で盛り上がる中、 @nagise「Javaでセミコロンなしでプログラムが書けるような気がしてきた」 Javaの場合、普通にセミコロン(;)でマルチステートメントにかけるのでただ1行にしようというなら改行

    Javaでセミコロンなしでプログラムを書く - プログラマーの脳みそ
    advblog
    advblog 2010/03/22
  • Javaバイトコードの読み方 - プログラマーの脳みそ

    Javaのデバッグをしていて、ステップ実行中にステップインを繰り返したらソースコードのないところに行き当たったことがあるだろう。あるいはEclipseでF3キーでクラスやメソッド・フィールドの宣言元を辿っていってソースコードのないところに行き当たったことがあるだろう。 Eclipseの場合、"Class File Editor"というものが開く。そこにはJavaのバイトコードのニーモニックがズラズラと並んでいて、「これは読めないや、ワケが分からない」と投げ出してしまったりしていないだろうか。 怖がることはない。ちょっとコツを掴めばすぐに読めるようになる。 Class File Editorの開き方 自前のJavaクラスの場合、ビルドして出来上がったclassファイルを開く必要がある。"Package Explorer"だとclassファイルは隠されていて見えないのでWindow -> Sh

    Javaバイトコードの読み方 - プログラマーの脳みそ
    advblog
    advblog 2010/02/08
  • 2010年版インスタンス生成考 - プログラマーの脳みそ

    2010年現在のアクセスレベルの限界 - プログラマーの脳みそではpublic, protected, private, パッケージプライベートという4つのアクセスレベルではうまく行かない事例という視点だったけど、例に挙げたDIコンテナ云々というのはアクセスレベルの不備というよりも、コンストラクタの不備と捉えるべきだ。 コンストラクタを使わないインスタンス取得 Javaの場合、インスタンス生成はコンストラクタによって行われる。そのクラスの外部から、インスタンスを得ようとする場合の一番基的なインスタンス取得方法は、new によってインスタンスを新たに生成する方法。 しかし、たとえばGoFデザインパターンのSingletonであるとか、あるいはFlyweightであるとか、返すインスタンスが常にnewされるわけではなく、既存のインスタンスを使い回して返すような作りに使用とした場合、コンストラ

    2010年版インスタンス生成考 - プログラマーの脳みそ
    advblog
    advblog 2010/01/07
  • ソフト開発の効率化は会計処理改革から - プログラマーの脳みそ

    あとで書きなおす。 プログラムをある程度の量書くと、いわゆる共通ライブラリ的なものが生まれてくる。個人ですら生まれてくるわけで、業務でシステム開発やってる会社となれば相応に使いまわされるプログラムというのが生まれている。しかし、ほとんどのSIerはこの使いまわされるプログラムをまったくもって管理できていないのが実態だ。 簿記と会計と財務の違いについてまとめてみた - GoTheDistanceのエントリが人気を博したが、このエントリではシステム開発における資産管理について述べたい。 費用と資産 ここでいう資産とは財務会計上の資産である。 財務会計上の資産(しさん、asset)は、勘定科目の区分の一つ。会社に帰属し、貨幣を尺度とする評価が可能で、かつ将来的に会社に収益をもたらすことが期待される経済的価値のことをいう。 資産 - Wikipedia ソフトウェアの資産の扱いについてはソフトウエ

    ソフト開発の効率化は会計処理改革から - プログラマーの脳みそ
    advblog
    advblog 2009/01/16
  • IDEは成長を阻害するのか? - プログラマーの脳みそ

    さて、IDEをちゃんと活用しようということで書いたEclipseからテキストエディタに戻れない10の理由 - プログラマーの脳みそだが、予想通りIDEを使っていたら成長できない的な意見が出てきた。このあたりは、よく論争になるネタなのだけど、今一度向かい合ってみよう。 高度な機能を使うには訓練がいる ある機能を使えば何も考えずに全自動でことが済んで考える必要性が無いよ、という主張を私は全くしていない。取り上げた10の機能でより高度なプログラミングができるよ、前提が変わるよということを主張していたのだった。車の運転を覚えたら行動範囲が広がった、というような感覚である。 リファクタリング機能のファーストステップたる名前の変更を例に挙げよう。この機能を使うことで適切じゃないなと思った名前を後からでも難なくリネームすることができるようになった。では、どう名付けようか?新しい名前はリネーム機能をつかっ

    IDEは成長を阻害するのか? - プログラマーの脳みそ
    advblog
    advblog 2008/12/23
  • Eclipseからテキストエディタに戻れない10の理由 - プログラマーの脳みそ

    ソフトウェアはいろいろな作業の効率化に貢献してきた。プログラミングという作業も例外ではない。現代の高度なIDE(統合開発環境)はプログラマが単純でつまらない作業に時間を割かずに済むようにさまざまな機能を提供してくれる。 もうテキストエディタ+コマンドラインでのコンパイルなんて環境には戻れない。以下は自分が仕事でメインに使っているEclipseというIDEを使い続ける理由。 (追記)私は仕事では主にJavaの開発をやっている。C/C++/C#の開発では以下に挙げるメリットを享受できない部分があることを断っておく。 1. コードの自動補完 標準API+フレームワークのAPIで万単位のクラスが存在するので、暗記は無理。クラスに存在するメソッド名、フィールド名までの暗記はもっと無理。よく使う範囲なら暗記しているけど、typo -> コンパイルエラー -> 探して修正 の手間より、自動補完が断然効率

    Eclipseからテキストエディタに戻れない10の理由 - プログラマーの脳みそ
    advblog
    advblog 2008/12/20
  • コンテンツは無料を広めたのは誰? - プログラマーの脳みそ

    コンテンツが無料で手に入る時代になって、TV局が動画共有サービスに苦言を呈していたりするわけなんだが、そもそもコンテンツを無料で配布していたのはTV・ラジオといった旧メディアだった。 日のTVはNHKを除けば、広告収入を得て、コンテンツは無料で配布するというビジネスモデルを確立し、消費者はタダでTVコンテンツを楽しんだのである。ドラマや映画などはビデオやDVDで販売されたりもしているわけだけども、通常TVで見るなら無料のものが、パッケージだと随分と高くそのギャップに驚くことだろう。*1アニメもパッケージの販売価格は随分と高い。 動画共有サービスには、既存コンテンツの二次加工品も多く出回っているけども、その問題と「コンテンツは無料」問題は別に考えるべきだろう。消費者に「コンテンツは無料」という意識を植え付けたのはTV業界そのものだ。消費者心理としてはもともと無料で流れていたものなんだから、

    コンテンツは無料を広めたのは誰? - プログラマーの脳みそ
    advblog
    advblog 2008/12/13
  • SI屋の経営陣が技術の空洞化に気づかない理由 - プログラマーの脳みそ

    忘年会シーズンが始まった。私も仕事柄、取引先の忘年会に出たりするわけなんだが、こういう場ではその会社の経営陣と会話をすることができる貴重な場でもある。 自分の今のプロジェクトは契約上の関係で間に中請けに入ってもらっている*1わけなんだけど、プロジェクトで中請けのとこの新人君と3年目の子を預かって教えている。また、その会社で社員によって自主的に行われているJava勉強会の講師をやったりしている*2のだけど、そんな実情は経営層は全然知らないわけだ。 技術力が外注の傭兵部隊からの借りものだったとして、プロジェクトが完遂してうまくいったとなれば、中請けの会社としては「うちもなかなかやるじゃないか」と思うことだろう。勝利の栄誉は軍を率いた大将のものである。しかし、軍を勝利に導いた戦果は誰が挙げたのかは無視できない。ましてや、それが間に合わせで雇った傭兵となれば、強いのは我が軍だ、と言えるだろうか?

    SI屋の経営陣が技術の空洞化に気づかない理由 - プログラマーの脳みそ
    advblog
    advblog 2008/12/07
  • 惹かれる文章 - プログラマーの脳みそ

    僕は文章の巧さとか稚拙さというのは、言い回しであるとか用いる語彙とかで決まるものではないと思っている。そうした表層を飾れば人を引き付ける文が書けるなんて風には思っていない。そういうテクで人を惹きつける文が書けるのだとしたら楽なのだけども。 毒にも薬にもならない文というのは結構あって、つまるところ、読んだ後に自分になんらの影響を及ぼさない文。これは、表現方法によって決まるものではなくて、語られる内容によって決まるもの。例え恋空のようなケータイ小説調で書かれていたとしても、それに共感するだとか、何かに気づかされるだとか、何かを考えされられるだとか、その文を読んで自分が変わったと思えるなら価値がある。 そうなると、人に読まれるような文章を書きたいと願うならば、結局のところは人に「なるほど」と思ってもらえるような考察をするだとか、人に面白いと思ってもらえるネタを探し出してくるだとか、そういう苦労を

    惹かれる文章 - プログラマーの脳みそ
    advblog
    advblog 2008/12/05
  • わんくまLT大会行ってきましたよ - プログラマーの脳みそ

    ちょっとライトニングトークをやってきました。50人もやるとなると目立ちたくなるのが人情。ちょっと過激なネタを仕込んで出向いたものの、やっぱりこのあたりのネタはナイーヴだから反応が引き気味なのが心地よい。 5分という短い時間だけどもやっぱりコードは出したいよね、デモりたいよね、というのはあったんだけど、そのへんはちゃんと演出できて及第点だったかな。デモがちょっとトラブったのがマイナス。デバッグは手を抜かずに綿密にやっておくべきだったなぁ。 懇親会会場が地下で全キャリア電波全滅。おぃおぃネットワークに繋げないってどういうことだよ!*1しかし人が多すぎると誰と何を話したものか。なんかいろいろ話してたような気はするけどもよく覚えていないという始末。 2次会は有志8名でスタート。途中で+2名合流。このあたりからやたら濃いトークが繰り広げられる。エンジニアの会話というのは、普段は聞き手に分かるように専

    わんくまLT大会行ってきましたよ - プログラマーの脳みそ
  • プログラミングハイウェイ - プログラマーの脳みそ

    プログラミング能力をつけるための高速道路を造りたいという話 - タムケンブログ Re: プログラミング能力をつけるための高速道路を造りたいという話 - タムケンブログ:Geekなぺーじ 実際、IT業界に身を置いていると教育機関の必要性を強く感じる。 情報工学科という学科を置く大学は数あるが、世の中に求められるのは実務としてプログラミングができる能力を持った人間だったりする。*1 情報工学科というのは座学が主体で実習が主体なわけではない。例えるならば、美大や音大のような、入学時に実技試験があり、在学中も実技を多く行うような、そういったカリキュラムの情報大学が求められている、と思う。*2 なんせ、情報工学出だろうが、情報系の専門学校出だろうが、文系大学出だろうが、新人で採るならひとしく無能だと思わなければならない。そんな出身校よりも、ホビーでプログラムするかどうかを問う方が当りの人材を引き当て

    プログラミングハイウェイ - プログラマーの脳みそ
    advblog
    advblog 2008/08/27
  • 1