タグ

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

  • 掛算の順序と学習指導要領 - きしだのHatena

    あいかわらず掛算の順序の話がもりあがってるようなのだけど、コーディングルールの話なんだから計算の定義の話をしても徒労だよなと思いながら見ていた。 で、ちょっと教育指導要領解説を見てみたのでまとめる。 学習指導要領解説の記述 「【算数編】小学校学習指導要領(平成29年告示)解説」では次のようになっています。順序は表現のときの問題で、計算では交換則を使っていいとなっています。 被乗数と乗数の順序は、「一つ分の大きさの幾つ分かに当たる大きさを求める」という日常生活などの問題の場面を式で表現する場合に大切にすべきことである。一方、乗法の計算の結果を求める場合には、交換法則を必要に応じて活用し、被乗数と乗数を逆にして計算してもよい。 このPDFの115ページ。 https://www.mext.go.jp/content/20211102-mxt_kyoiku02-100002607_04.pdf

    掛算の順序と学習指導要領 - きしだのHatena
  • 時代がstaticおじさんに追いついてきた(追記あり) - きしだのHatena

    この文章みてください。 オレはもう20年以上システム業界にいるけどな、その長い経験から言うと、オブジェクト指向なんてものは、理論としては面白いけど、およそ実用的とは言い難いものだな。まぁ、例えばGUIのコンポーネントとかはオブジェクト指向に基づいて作られているようだから、そういうツールとかを作る人には必要なものなのかもしれない。しかし君たちがいずれ作ることになる業務アルゴリズムにはまったく無縁のものだと思ってもらって間違いない。どうもこの業界、オブジェクト指向でなければダメ、というような風潮がまかりとおっているけどな、オブジェクト指向なんか当に使っている人はほとんどいないよ。オレも少し勉強してみたけど、カプセル化とかポリ何とかとか、どうにも利点が理解できなかったね。実際、実業務で使ったことなどないしな…… 「またお前、オブジェクト指向の話をしてるのか」と思ったかもしれませんが、2010年

    時代がstaticおじさんに追いついてきた(追記あり) - きしだのHatena
  • サーブレットを「JavaでのWebアプリケーションの基礎」として最初に勉強させるのをやめてあげてほしい - きしだのHatena

    研修がはじまるという画像でサーブレットJSPのが並んでて、サーブレットを最初に勉強させるのをやめてあげてほしいと思った話。 オブジェクト指向もそうなんだけど、現状で使わなくなっているにもかかわらず情報更新がされずオブジェクト指向やサーブレットJSPが教えられ続けが売り続けられるという現状がある。 でももうさすがに変わってほしさ。 ただ、JSPはそこまで悪くないので、サーブレットで話を進める。(ただし、サーブレットが動かない環境ではJSPは動かない) 使われていない まず、いまの案件の多くがSpring / Spring Bootになってて、サーブレットをさわるということは少ない。 2020年のJetBrainsの調査ではこんな感じ https://blog.jetbrains.com/ja/idea/2020/10/a-picture-of-java-in-2020-ja/ 2021年

    サーブレットを「JavaでのWebアプリケーションの基礎」として最初に勉強させるのをやめてあげてほしい - きしだのHatena
  • Javaがパブリックスタティックヴォイドメインの呪文から解放される - きしだのHatena

    みなさん、今日もパブリックスタティックヴォイドメインしてますか? ジャバと言えばパブリックスタティックヴォイドメインですよね。 最近はIDEでmain[tab]と入力すれば補完してくれるとはいえ、コードを読むときには目に入ってきたりしますね。 そんなパブリックスタティックヴォイドメインの呪文から解放される日が近づいています。 TL; DR 9月リリースのJava 21の試用機能として void main() { System.out.println("Hello"); } をhello.javaで保存したら、java hello.javaで実行できるようになります。 (Java 21では--enable-preview --source 21が必要) Javaではプログラムを開始するときにpublicなclassなどにStringの配列を受け取るpublicでs

    Javaがパブリックスタティックヴォイドメインの呪文から解放される - きしだのHatena
  • 空の配列に対するmaxは何を返すか - きしだのHatena

    ちょっと前に「配列中のすべての要素が条件を満たすかどうか判別する関数で、空の配列はTrueを返すべきかFalseを返すべきか」のような話が話題になってました。 まあこれは「Trueを返す」が答えなわけですが、では「配列中の最大値を返す関数で空の配列の場合は何を返すか」が気になりました。 「配列中のすべての要素が条件を満たすかどうか判別する関数」について言えば、簡単に言えばこんな感じ。 まず、配列のすべての要素が偶数であるかどうか判別する関数を考えます。 void main() { int[] data = { 23, 44, 12, 98, 5 }; System.out.println(allEven(data)); } boolean allEven(int[] data) { for (int n : data) { if (n % 2 != 0) return false; } r

    空の配列に対するmaxは何を返すか - きしだのHatena
  • ChatGPTの登場でWeb3への興味が急速にしぼんでいる - きしだのHatena

    MidjourneyやStable Diffusionのような画像生成AIが出たりChatGPTが出たりで、Web3で騒いでいたところがAIに移行した感じあります。 Google Trendsだと、生成AIは完全にWeb3を抜いています。 メタバースも抜いたところ。 ChatGPTは圧倒的です 実際にニュースどうなってるか見てみると、Web3に関するニュースは4月以降は出ていないです。 5月に一件あるのは、AI規制の話をWeb3の人が話したというもので、Web3の記事ではないです。5月はあと3日残ってるけど、そんなになさそうな気が。 3月には「Web3格採用」のような記事が多いことを考えると、突然死のようにも見えます。 朝日新聞、INTERNET Watch、ITmediaエンタープライズ、日経xTech IT, エレキでのWeb3事件数は次のような感じ。 去年6月に盛り上がって漸減傾

    ChatGPTの登場でWeb3への興味が急速にしぼんでいる - きしだのHatena
  • GPTの仕組みをちゃんと勉強したい本 - きしだのHatena

    やっぱGPTを仕組みから勉強したい、というをいくつか見つけたのでまとめておきます。 まず理論的な概要。 機械学習からニューラルネットワーク、CNNでの画像処理、トランスフォーマーでの自然言語処理、音声認識・合成、そしてそれらを組み合わせたマルチモーダルと章が進むので、理論的な概観を得るのにいいと思います。 最初は数式が多いのだけど、Σをfor文だと思いつつ、定義が説明文中に埋まってるPerlよりたちが悪い記号主体言語だと思えば読めるけどめんどくさいので飛ばしても問題ないと思います。 深層学習からマルチモーダル情報処理へ (AI/データサイエンスライブラリ“基礎から応用へ” 3) 作者:中山 英樹,二反田 篤史,田村 晃裕,井上 中順,牛久 祥孝サイエンス社Amazon で、もういきなり作る。 トークナイザーから全部つくっていきます。TensorFlowでBERTをつくってGPT2をつくる

    GPTの仕組みをちゃんと勉強したい本 - きしだのHatena
  • 新しいプログラミング言語が出てこない(新しく出てた言語を追記) - きしだのHatena

    2010年代前半にKotlinが2011年、TypeScriptが2012年、Swiftが2014年、Rustが2015年と、新しいプログラミング言語が立て続けに発表されていましたが、そこを最後にみんなが話題にするような言語は出てきていません。 なんでだろうと、思いつく要因をあげてみます。 ※ 追記2023/5/11 わざとなのか「みんなが話題にするような」を無視してツッコミ入れてる人いるのだけど、言い換えれば「新しい言語が出てもみんな話題にしない」という話です。 プラットフォーム用の言語が出そろった KotlinTypeScriptSwiftRustが2010年代前半に出てきましたが、これはJVM(Android含む)、ブラウザ、Appleデバイス、ネイティブといった代表的プラットフォームでほどほどの言語が出そろったということではないかと思います。 結局のところプログラミング言語は

    新しいプログラミング言語が出てこない(新しく出てた言語を追記) - きしだのHatena
  • ChatGPTがGoogle検索を使いものにならなくする未来 - きしだのHatena

    いろいろ仕組み的にChatGPTというのはGoogle検索の代替以上の働きをするなぁと思っていたのだけど、それとは別にChatGPTによって検索が使い物にならなく未来が考えられるなぁと思った。 ChatGPTが検索よりもいいのは、そのものズバリな文書がなくても、その周辺から学んだ単語の関係をもとに、答えを構築してくれることです。 たとえば検索の場合は、日語で書かれた文書が用意されていなければ、たとえ英語中国語の文書があったとしても日語での検索には引っかかりません。 けど、ChatGPTの場合は、英語中国語の文書から学んだ単語の関係や、ほかの文書から学んだ英語と日語の関係、日語での単語の関係などから、日語の回答を生成してくれます。 たとえばGluonという会社について日語で説明してる記事はおそらくないと思うのですが、ちゃんと日語で説明してくれます。社はベルギーですが。。。

    ChatGPTがGoogle検索を使いものにならなくする未来 - きしだのHatena
  • Javaのインストール2023年版 - きしだのHatena

    ちょっとJavaのインストールについて調べてみました2023年版。 Javaにはディストリビューションがたくさんあるので、目につくインストーラーをWindowsで全部ためしてみました。 初心者が勉強するためにJavaをインストールするというときにどれを使うのが手軽か確認するというのが主な目的です。 Oracle JDK Temurin by Adoptium Amazon Corretto Azul Zulu Liberica JDK Microsoft Build of OpenJDK SapMachine OpenJDK SDKMAN! winget OpenJ9 / Semeru Runtime Red Hat Build of OpenJDK GraalVM Scoop いろいろあるので、結論を先に書いておくと次のようになります。 いまPATHの設定が必要なJDKインストーラはない

    Javaのインストール2023年版 - きしだのHatena
  • 「オブジェクト指向神話からの脱却」という特集をWEB+DB PRESSで書きました - きしだのHatena

    「オブジェクト指向神話からの脱却」というあおり気味タイトルの特集をWEB+DB PRESS vol.132で書きました。 12/24発売!クリスマスプレゼントです WEB+DB PRESS Vol.132 作者:きしだ なおき,加藤 尋樹,斉藤 洸紀,牟田 裕太郎,吉澤 政洋,朝日 リナ,鈴木 僚太(うひょ),川島 義隆,五十嵐 進士,末永 恭正,佐藤 雄太,吉井 健文,牧 大輔,西山 和広,吉田 花春,古川 雅大,岡林 大,池澤 春菜,和田卓人,日高 正博,はまちや2,竹原技術評論社Amazon 大まかには、「オブジェクト」でソフトウェアをぜんぶ考えるということに無理があったので、パーツそれぞれ適したやりかたでやっていこうぜ!という内容です。 ソフトウェアを切り出したときのパーツとしてのオブジェクトの特性が同質であるという暗黙の前提があって、だから「オブジェクトの話をすればソフトウェア開

    「オブジェクト指向神話からの脱却」という特集をWEB+DB PRESSで書きました - きしだのHatena
  • インスタンスとオブジェクトの違い - きしだのHatena

    インスタンスとオブジェクトは混同しがちで区別がようわからんになりがちです。 とりあえず某所で説明したものを再構成します。 ※2022/12/10追記: クラスに対するのはインスタンスになるべき(たとえばクラス変数とインスタンス変数)なので、ちょっと修正するべきですが、このエントリはそのまま残してます。 クラス・インスタンス・オブジェクト クラスをインスタンス化(実体化)したものがオブジェクト(物)です。 実際に在るものはクラスとオブジェクトで、インスタンスはそれらの関係です。colorsやsportsが並んでるツリーが「オブジェクト」で、右のパレットに並んでるTreeが「クラス」、Treeからみたときのツリーが「インスタンス」ということになります。 ここでツリーはオブジェクトでもインスタンスでもあります。 このように、同じものをオブジェクトともインスタンスともいうことができるので混同してし

    インスタンスとオブジェクトの違い - きしだのHatena
  • さよなら「あなたと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
  • Javaで作るのは他人のためのプログラム、Pythonで作るのは自分のためのプログラム - きしだのHatena

    JavaやCで組むのは他人のためのプログラムで、Pythonで組むのは自分のためのプログラム、という違いがないかなという話。 TIOBEでとうとうPythonが1位になったというニュースが流れてました。 https://internet.watch.impress.co.jp/docs/yajiuma/1357645.html でも、Pythonが1位になったとはいえ、CやJavaであったような、世の中のプログラム全部Pythonになるみたいな雰囲気はないなと思いました。 で、こんなツイートをしたわけです。 PythonJavaやCを抜いて1位になるのは、JavaやCが担っていたところがPythonに置き換えられたのではなくて、他人のためのプログラミングではなく自分のためのプログラミングが増えたということじゃないかなと思う。https://t.co/LeM3ADCwAA— きしだൠ(K1

    Javaで作るのは他人のためのプログラム、Pythonで作るのは自分のためのプログラム - きしだのHatena
  • オブジェクト指向はすでに粒度が時代にあっていない - きしだのHatena

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

    オブジェクト指向はすでに粒度が時代にあっていない - きしだのHatena
  • オブジェクト指向には、カメラがやっとついたころのガラケーのイメージがある - きしだのHatena

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

    オブジェクト指向には、カメラがやっとついたころのガラケーのイメージがある - きしだのHatena
  • 新しいリリースモデルは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
  • 作って理解するDIコンテナ - きしだのHatena

    DIコンテナ使ってるけど、アノテーションってなんなの!って聞かれて、作ってみたらわかるよと答えてみたので、自分でも作ってみました。 よくわかった。 「DIコンテナ使うと何がいいの?」ということも、作ってみるとわかります。あと「DIって何がいいの?」に関しては、「DIはちょっとコードを書くのが楽になるだけで、それだけあっても仕方ない、大事なのはコンテナ」と答えるようにしてますが、コード比率からもそれがよくわかります。 続編としてWebフレームワークも作っているので参考まで。 作って理解するWebフレームワーク - きしだのHatena まずはコンテナを作る とりあえず1ソースの状態で。 こんな感じで、管理する型を登録できるようにします。 static Map<String, Class> types = new HashMap<>(); static void register(String

    作って理解するDIコンテナ - きしだのHatena
  • ぼくの実装した最弱のディープラーニング - きしだのHatena

    8月の頭からディープラーニングを実装していたのを、先日、プレゼンしてきました。 プログラマのための数学勉強会@福岡 - connpass ぼくの実装した最弱のディープラーニング from なおき きしだ ※追記 2023/4/12 SpeakerDeckにも置いてます https://speakerdeck.com/kishida/weakest-deep-learning-i-implemented GPU対応したり、ドロップアウトとかミニバッチとかいろいろ実装して、結構つよくなってます。 ちゃんと学習してくれないこと以外は。 ソースはこんな感じになってきています。 https://github.com/kishida/neuralnet/tree/CorrectOperationAsCCN GPU対応にはaparapiを使っています。JavaGPUコードが書けるスグレモノです。 ap

    ぼくの実装した最弱のディープラーニング - きしだのHatena
  • コードに対してコメントを書くと実装に関するコメントになる - きしだのHatena

    おととい、渋谷JVMというイベントがあって登壇させてもらったんですが、そのあとビール飲んでるときに、ぼくが「コード書く前にコメントだけ書くのいいよね」と言ったあとの返答としてきょんくん(kyon_mm)が言った言葉。 全体としては 「コード先に書いてそのコードに対してテストを書くと実装に対するテストになるし、コードを先に書いてそのコードに対してコメントを書くと実装に対するコメントになる」 という感じ。 ここに至るまでの話もおもしろかったんだけど、ここでは、コメントについて書いてみます。 まず、実装に対するコメントってどういうのかというと、こういうの。 id = findId(name); if(id == -1){ // idが-1だったとき登録 register(name); } いやそれはコード見ればわかるから、ってやつですね。 これは、こうやるとより適切です。 id = findId

    コードに対してコメントを書くと実装に関するコメントになる - きしだのHatena