Developers Summit 2023 Summer で使用したスライドです。 サーバーレスアーキテクチャは強力ですが、同時に冪等性やトランザクションなど特有の考慮事項が必要であり、高い設計力が求められます。ところで、安全なプログラムを書く上で、静的型付き言語は広く利用されていますね。型はい…
こるぼー @zero_kpr バイト先の留学生「日本の情報学部はよくない偏りがある」 ぼく「ほう」 バ「授業でプログラミングをやたら教えて数学を教えないか、逆に数学を教えてちゃんとプログラミングを教えないかみたいなところがある」 ぼく「へえ、続けて」 バ「そしてコードを紙に書かせる」 ぼく「わかる〜〜〜〜!!!」 2020-02-27 11:25:30 TANAKA U ゲーム系フリーランス @TANAKA_U 弟(甥っ子の父)には「プログラムに興味を持ってゲームを作るようになると、数学や物理に"具体的な使い道"ができる。何に使うんだと学ぶのとは効率が違う。いい理系に育つ。それにプログラマは単価が高くて、潰しがきく、覚えて損はない。」と、ありったけのメリットを説いて帰ってきた。俺を信じろ・・ 2019-01-14 09:20:58
最近めっきりDenoに触ってない。一言で言うと飽きてしまった。 とはいえどうなってるかくらいの情報は追っているのだが、どうも使いたいと言う気分にならない。 今自分はDenoコントリビューターではないのでいち開発者としての外から見たDenoの現状を語ってみる 最近のDenoはWeb標準に追従している 具体的には、fetch APIの実装に始まり、ブラウザに実装されているAPIの実装を頑張っている windowオブジェクトもあるし、webcryptoやWebGPUのような、ブラウザでも誰も使ったことのないようなAPIまで実装している 自分はどうもこの流れに乗れなかった この方針は現在のDenoコアチームの強い姿勢であり、最近JavaScriptの標準化団体であるTC39に参加したという だがDenoがサーバーサイドの言語である以上、ブラウザに存在する様々なブラウザ的問題を解決するための仕組みや
「効率的で信頼できるソフトウェアを誰もが作れる言語」を提唱するプログラミング言語・Rust。その優れたパフォーマンスやプログラムとしての信頼性・生産性の高さなどから、近年非常に人気を集めています。 Rustのようなオープンソースソフトウェア(以下、OSS)の開発を支えているのは、機能開発やドキュメント整備など、プロジェクトに何らかの形で貢献をするコントリビューターたちです。今回はRustのコアコミッターである大櫛佑貴さんとTaKO8Kiさんに、知られざるRust開発の裏側とOSS活動に携わる魅力について聞きました。 * … 取材はリモートにて実施しました。 Rustに触れたきっかけ ――今回のインタビューでは、お二人のコントリビューターとしての活動内容を伺います。まずは、ユーザーとしてRustを書くようになったきっかけを教えてください。 大櫛:Rustとの出会いは2018年頃でした。私がま
はじめに アーキテクチャ設計の具体変化とコード構成の詳細 アーキテクチャ設計の変化 課題1: 各層の相互依存関係により、仕様変更の修正影響範囲が多い 課題2: service 層に複数の責務が集中し、メンテナンス性が低下していた 課題3: service層のdaoへの依存が大きかった コード構成の詳細 「イベントストーミング」から「実装」への変換プロセス 1.ドメインモデル から実装への変換プロセス 2.イベントから実装への変換プロセス 3. コマンド から実装への変換プロセス 4. 実装とイベントストーミングとの違いの見直しと仕様変更による修正 テストしやすい制約のポイント テスト戦略の変化 ユニットテストと統合テストの責任分離 「壊れやすい構造」から 「テストしやすい構造」 へどう変わったか 設計を「知識」として蓄積する 各層の責任の明確化とそれによるレビュー・開発体験の変化 数値で示
ChatGPTなどの大規模言語モデル (Large Language Model; LLM) にプログラミングやリファクタリングをさせる場合、目的に合ったものが作られているかを何らかの方法で検証する必要がある。 プログラムの正しさを完全に保証する方法はないが、ある程度の正しさを継続して担保するための方法を探ってみたので以下にまとめた。 ポイントは、ChatGPTの生成したプログラムの検証にもやはりChatGPTの力を借りることである。 実行可能性と入出力のチェック プログラムを生成するタスクである場合、いつでも「実行できるか?」というチェックが可能である。これは自然言語の生成と大きく異なる点だろう。実行可能性を確かめることは最低限のチェック項目になる。 エラーが出力された場合、自力で修正するか、もしくは、エラーの内容をChatGPTに提示して修正を依頼し、再度実行可能かを確かめる。 入力・
最初にプログラミングを始めた時は、学校にリファレンスマニュアルを持って行って全てのページを丸暗記した。丸暗記が目的だったわけではなく、読んで知識を吸収していくのが楽しくてしょうがなかった。 PC-9801のN88-BASICリファレンスマニュアルは、読み物としてとても良くできていた。各ステートメントの紹介があり、パラメータの説明があり、ごく簡単なサンプルコードも書いてあった。大体見開き一ページで一つのステートメントの説明なので読みやすかったし、ベーマガかなんかで読む呪文のようなコマンドの意味を詳細まで知れて楽しかった。 だがこれを「楽しい」と思う人は少数派のようだった。 僕のクラスメートのうち、相当数の人が親にパソコンを買ってもらい、BASICに挑戦したが、全くその世界に馴染めず結局ゲーム機になって行った。僕も親父がゲームなんかを買ってきたら話は変わっていたかもしれないが、親父の教育方針で
概要 この記事では、エンジニアにとって重要な、 「良いコードとはなにか? どうすれば良いコードが書けるのか?」について、 基礎の考え方から、私なりに頑張ってまとめて記載してみようと思います。 ターゲット 新卒~1年目のエンジニア向けにわかるように、なるべくかみ砕いて説明をしようと思います。 第1章:良いコードとは? まず初めに、良いコードとは何でしょうか? ここでは会社に所属するエンジニアの視点から考えてみましょう。 会社に所属するエンジニアに求められるのは、 利益のあるソフトウェア(ゲーム) を作ることです。 言い換えれば、良いコードとは ソフトウェア(ゲーム)が生み出す利益を最大化するためのコードと言えます。 ここから、推論を進めてみましょう。 ⇒ 良いコードとは? ⇒ ソフトウェア(ゲーム)が生み出す利益を最大化するコード ⇒ 利益を最大化するためには? ⇒ 少ないコスト(時間・人件
オープンソースへの貢献をメンターがサポートしてくれる「Google Summer of Code」、18歳以上なら誰でも参加可能に Googleは2005年から毎年、夏休みの時期の学生を対象に、オープンソースへの貢献をメンターがサポートすることでオープンソースへの参加を促し、オープンソースの活性化にもつなげようというプログラム「Google Summer of Code」を開催しています。期間中に一定の課題をクリアした学生には奨学金も提供されていました。 今年もGoogle Summer of Codeの開催が発表されていますが、実は今年から参加資格が変更されました。これまでは学生に限定されていましたが、今年からは18歳以上なら誰でも参加できるようになりました。 下記は「Expanding Google Summer of Code in 2022」からの引用です。 Beginning i
他の方の記事ですが、読んでいておもしろかったです。記事に出ている本はClean ArchitectureとTDD、LeanとDevOpsの科学くらいしか読んだことなかったです。 また自分も書くことで、他の方も記事を書くようになり、ついでに他の方の記事を読んでみるなどしたいなと思ったので書いてみます。 私はソフトウェアエンジニアとしてのキャリアはまだ7年くらい[1]なので短い方ですが、約7年間の中で読んで印象に残ったものを紹介します。 計算機プログラムの構造と解釈 Scala関数型デザイン&プログラミング Effective Java Programming Rust 実践ドメイン駆動設計 なお、この記事ならびに本のリストは誰かの役に立つことは想定しておらず、単に自分が読んで影響を受けているなあと感じる本をまとめています。つまり自己満足です。 加えてこの手の記事を書く際には、一応筆者のプロフ
無料のメールクライアントである「Thunderbird」を開発するMozillaが、ウェブブラウザからアクセスできるGmailのようなメールサービスの「Thundermail」と、AIアシスタントやスケジュールツールなどが使える有料サービスの「Thunderbird Pro」を発表しました。 Thundermail and Thunderbird Pro Services | Topicbox https://thunderbird.topicbox.com/groups/planning/T437cd854afcb1395 Post by @[email protected] View on Mastodon Mozilla Announces Thundermail and Thunderbird Pro Services - Thurrott.com https://www.thur
https://github.com/xin-chao/nguyen-oi プロンプトを書き換えると好きな人格にできます🤣 ブコメの生成過程が確認できます🤣 https://github.com/xin-chao/nguyen-oi/actions Gemini APIの無料枠が少なくGitHub Actionsの無料枠が月2000分のため、0時から7時まで就寝してます💤 イラン戦争の関係でfree tierだと503でやすいかも gemini-3.1-flash-lite-previewは一日500回無料だからオススメ https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-1-flash-lite/ Google AI Proに課金してるから月$10ドルまでは有料枠でもお金か
Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。rui314氏は、制作中のリンカである「mold」について発表しました。全2回。後半は「mold」速さと、その高速化を実現するテクニックについて話しました。前半はこちら。 リンカが速いと何がうれしいのか植山類氏(以下、植山):リンカが速くなって何がうれしいのか。普通にうれしいです。プログラムを書いているとうれしいことがわかると思いますが、makeを実行すると、普通は自分が直前に変更したファイルしかビルドしないので、デバッグをしていると1つのファイルを編集してビルドすることになります。 コンパイラは1つだけのファイルをコンパイルするのはそこそこ速いですが、リンカは基本的には実行ファイルを丸ごと作ります。全体の入力を一気に受け取って出力するため、差分コンパイルであってもリ
PC上でJavaScriptを実行できるJavaScript実行エンジンではNode.jsが最も普及しています。これは十分高速であるため、サーバー用途でも利用されています。しかし、Node.jsの作者は2018年より新たなJavaScript実行エンジンDenoを開発しています。DenoはNode.jsの反省より生まれたプロジェクトで多くの点でNode.jsを改良したものです。期待のDenoはNode.jsと比べて何が良いのか実際にプログラムを作って試してみましょう。 DenoでWebサーバーを実装して実行したところ DenoはNode.jsの反省から生まれた Node.jsの作者として有名なライアン・ダール氏は、2018年にJavaScriptの国際的なカンファレンス「JSConf 」にてDeno(読み方:ディーノまたはデノ)を発表しました。しかも、それは「Node.jsに関する10の反
はじめに この記事では、Streamlitの概要を説明し、Streamlitを使ってデータ分析Webアプリを実際に開発する中でStreamlitの機能をいろいろと紹介していきます。最終的に以下のようなApacheやTomcatなどのアクセスログを解析するWebアプリをつくります。 Streamlitとは Streamlitは、Pythonで実装されたオープンソースのWebアプリケーションのフレームワークであり、機械学習やデータサイエンス向けのグラフィカルなWebアプリを簡単に作成して全世界に公開(クラウドサービスにデプロイ)できます。 主な特徴 Pythonのみで実装可能(HTMLやCSS、JavaScriptなどフロントエンドのコードを書かなくていい) 豊富なウィジェットが利用可能 Google ColabやJupyter Notebookで作成したPythonのコードがほぼそのまま利用
背景 基幹システム移行でいわゆる「複雑な業務ロジック」を移行する場面です。 最近「ドメイン駆動設計をはじめよう」を読んだため、その手法を意識して移行を行います。 言葉のイメージ 「複雑な業務ロジック」という言葉がありますが これは「業務ロジックが複雑」なイメージを持っていました しかし今回移行したシステムで、実際に複雑なのはその「前処理」でした。 「入力に対する結果が予測しづらい」システム 今回の移行対象は、業務ロジックとしては教科書通りのシンプルなものでした。 しかし全体として見通しが悪く運用で苦労していました。 いわゆる「入力に対する結果が予測しづらい」システムです また、レガシーシステムとの連携があり、そこでも「値の加工」「区分値の変換」が記述されていました。 つまり複数の層に処理が分散している状態です。 これが見通しの悪さにつながっていました。 どのように対処したか 一連の処理を整
初学者用のRustの教材として、RustでWebアプリケーションのサーバーサイド側をつくる一連のチュートリアル記事、『Zero To Production In Rust』を読んでみている。 https://www.lpalmieri.com/posts/2020-05-24-zero-to-production-0-foreword/ 一気に読んでいるかのような雰囲気でさらりと書いているが、仕事と遊びの合間に少しずつ、数日に1章程度の速度でゆっくり読み進めている。 問題駆動型の学習方法が嬉しい 知らない知識を複数同時に与えると学習効率が悪くなりがちなので、ある程度基礎部分を学んだら、少し難易度の高い領域であっても、自分の馴染みのある分野でどう使うかという話を例に学んでいく方が良いと考えている。今回の自分のケースの場合、Webアプリケーション開発という題目がそれにあたる。分からないところが
マイクロソフトは、AIエージェントの能力を拡張する「Agent Skills」の仕組みに対応した、.NETの開発スキルを向上させる「.NET Skills」を公開しました。 Agent Skillsは、Anthropicが提唱したAIエージェントの能力を拡張する仕組みです。現在では事実上の業界標準となっています。 Agent Skillsに対応したフォーマットで記述された情報をAIエージェントに読み込ませることで、特定のタスクに特化した知識や手順などを組み込むことができます。 参考:Anthropic、AIエージェントにタスクの手順や知識を組み込める「Agent Skills」をオープンスタンダードに。早くもVS CodeやCursorなどがサポート .NETのコーディングやパフォーマンス分析、デバッグなどに対応 マイクロソフトが公開した「.NET Skills」は、.NETのコーディング
コドレビューの観点 コドレビューの観点をまとめてみました。チェックリスト的なものになりますた。 機能性 コードが設計通りの機能を有するか? データの流れ、取得方法は、設計と一致するか? データのチェックの漏れはないか? データの生成、修正、加工は、設計と矛盾がないか? ループの中で更にSQLなど重い処理を発行するなど、パフォーマンスの懸念はないか? 必要な場合、国際化の対応しているか? コネクションやリソースは適切な方法で閉じられているか? NULLとなる場合や値が取れない場合を考慮しているか? NULLをある程度許容したコードになっているか? 読みやすさ 名前の付け方は、共通認識の範囲か? スタイルガイドにそっているか? ループ、分岐等の処理記述方法は同じか? コード設計 パラメータ、プロパティなど正しく機能区別されて実装されているか? インスタンス等の上書き、重複など考慮されているか?
ついに、国がインディーゲームクリエイターの支援に乗り出した。 経済産業省が主催するゲームクリエイター・映像クリエイターへの支援事業「創風」が、いよいよ本格的に動き出そうとしている。 このプログラムでは国内の若手のクリエイターを対象に、最大500万円に及ぶ支援金が手配される。さらにゲーム開発の補助のみならず、海外市場に進出するために必要なノウハウなどのレクチャー・メンタリングを約8か月にわたって行っていくという、非常に本格的な内容のものだ。 そして、そのゲーム部門の“実働部隊”として選ばれたのが「iGi indie Game incubator(通称: iGi/イギ)」。 株式会社マーベラスの運営するインディゲーム支援プログラムであり、BitSummitで大賞を受賞した『NeverAwake』や『Death the Guitar』、『8番出口』がヒットしたKOTAKE CREATE氏の『ST
1個の本質的な問題を解いてしまうほうが細かいことを考えるよりも簡単植山類氏:では始めます。本日、機会をいただいて講演をすることになった植山と申します。この講演の内容は「大きな問題のほうが小さな問題より解くのは簡単だ」というタイトルです。 どういう趣旨かというと、常に簡単だというわけではないのですが、いろいろな場面で、1個の本質的な問題をドッカンと解いてしまうほうが、いろいろな細かいことを考えるよりも簡単なことが多いという話です。 そういうソリューションが往々にして見逃されがちということがけっこうあって、そういうことにどうやって挑戦していくのかという気持ちの話を、僕がそういう大きな問題を解決した経験を踏まえて話をしていきたいと思います。 「LLVM lld」と「mold」が解決した問題僕が何を作ったかというと、リンカと言われるプログラムです。「LLVM lld」というリンカと、「mold」と
要約 Agent Skillsは、定型作業を自動化し、創造的な時間を確保するための強力なツールである。本記事では、開発系10個、コンテンツ作成・クリエイティブ系10個、ドキュメント・ナレッジ系2個の計22ユースケース(+番外編2個)を紹介する。オンボーディング効率化からSEO最適化、画像・音楽生成プロンプト作成まで、実際に業務またはプライベートで活用している具体的なスキル構成例と使い方を解説する。 対象読者: Agent Skillsの基本を理解し、具体的な活用例を探しているエンジニア、コンテンツクリエイター、マーケター、生産性向上を目指すビジネスパーソン 検証環境: Claude Code 2.0.76 / Claude Max プラン(2025年12月時点) この記事を読むことで得られるメリット 実際に業務またはプライベートで何回もやっている作業をスキル化した事例を紹介する。スキルの構
X で見かけたこの映像。とても不思議。 コードで再現したものが以下。コマが回っているように見える。 一方で、色をつけてかつ軌跡がわかるようにすると、振動しているだけだとはっきりわかる。不思議。 この小さな円に見えるものは、式にすると以下のようになる。ここで $t$ は時間を表現した実数。 $$ \left(x- \frac12 \cos t \right)^2 + \left(y + \frac12 \sin t \right)^2 = \frac14. $$ これはすなわち $(x, y) = (\frac12 \cos t, - \frac12 \sin t)$ を中心に持つ半径 $\frac12$ の円。 これを $x$ 軸で切り取った断面の様子を見る。すなわち $y=0$ を代入する。すると、 $x$ に関する簡単な2次方程式が出てきて、その解は $$ x = 0, \cos t
■なぜ、正しく計算できないのでしょう? まず、最初の $333.75b^{6}$ を手計算してみましょう。 $b^{6}$ は、$1,314,174,534,371,215,466,459,037,696$ なので、$438,605,750,846,393,161,930,703,831,040$ です。 次の項のカッコの中を計算していきます。 $11a^{2}b^{2}$ は、$72,586,759,116,001,040,064$、 $b^{6}$ は、$1,314,174,534,371,215,466,459,037,696$、 $121b^{4}$ は、$145,173,518,207,904,485,376$ なので、 カッコの中は $-1,314,174,606,957,974,558,362,483,010$。 それに$a^{2}$ を掛けて $-7,917,111,779
本連載では、Webブラウザー上でJavaScriptとともに動作できるバイナリ形式のプログラムファイル「WebAssembly」を、Rustプログラミング言語で実装する方法を説明していきます。前回はRust言語の基礎を説明しました。今回はいよいよ、Rust言語でWebAssemblyを実装していきます。また実装したサンプルを利用して、WebAssemblyのメリットなどを説明します。 はじめに 本連載では、Webフロントエンド開発において注目されているバイナリ形式のプログラムファイルWebAssemblyを、Rustで実装して活用する方法を説明しています。初回記事ではWebAssemblyの背景およびRust開発環境の作成について、前回記事ではRust言語の基本的な言語仕様について説明しました。 今回はこれまで説明した内容を利用して、実際にRust言語でWebAssemblyを実装していき
こんにちは、クレスウェア株式会社の奥野賢太郎 (@okunokentaro) です。本記事では、GPT-4を使った開発体験について語りたいと思います。 2023年3月14日、GPT-4が発表されました。GPT-4とは、OpenAI社が開発した最新のAI技術で、自然言語処理の能力が従来のGPT-3.5と比較して、さらに向上しています。これにより、文章生成やコーディングの補助といった様々な分野での応用が期待されており、開発者にとっても非常に興味深いツールとなっています。現在は、GPT-4を利用するためにはChatGPT Plusという課金コンテンツに月額20ドルを支払う必要があります。驚くことに、この記事もChatGPTに大半を書いてもらいました。それでは、GPT-4を活用したコーディング体験について紹介します。 AIとのペアプロに近いコーディング体験 筆者はGPT-4公開初日である日本時間の
Zhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, UR
3つの要点 ✔️ デコンパイルに特化した初のオープンソースモデル「LLM4Decompile」を開発 ✔️ モデルに新しい学習目的を導入し、デコンパイルの精度向上を実現 ✔️ 再コンパイルと再実行可能性に焦点を当てたデコンパイルのための初の標準化されたベンチマークを構築 LLM4Decompile: Decompiling Binary Code with Large Language Models written by Hanzhuo Tan, Qi Luo, Jing Li, Yuqun Zhang (Submitted on 8 Mar 2024) Comments: Published on arxiv. Subjects: Programming Languages (cs.PL); Computation and Language (cs.CL) code: 本記事で使用してい
こんにちは、技術開発室の滝澤です。 最近(2021年春)、Go言語でメールパーサーを書く機会があり、備忘録的な意味でも知見をまとめておこうかなと思い、この記事を書きました。 メールパーサーを書いていて考慮しないといけないことの一つは、文字エンコーディング(charset)が正しく指定されていないメールがときどきあることです。 MIME(Multipurpose Internet Mail Extensions)関連のインターネット標準であるRFCが公開された1990年代や世間一般にインターネットメールが利用され始めた2000年代初期ならともかくとして、2021年にもなってまだその点を考慮しないといけないのはなかなかつらいことです。 そのようなメールを取り扱うときには、文字エンコーディングの検出を行う必要があります。本記事ではその文字エンコーディングの検出方法について書いてみました。 なお、
とりあえず調べたところだと、このあたりは良いらしい。 Gene H. Golub「Matrix Computations」 ・・・ 行列計算として知ってないといけないらしい Gilbert Strang 「Linear Algebra and Learning from Data」 ・・・ MITのYou Tube動画が上がってるものの教科書らしい。 Steven L. Brunton他「Data-Driven Science and Engineering: Machine Learning, Dynamical Systems, and Control 」 ・・・ 神経科学でのデータ処理に関係するらしい。You Tubeの動画がある。 大学生協の洋書コーナーに通っていれば、メジャーな本は知ることができるのだろうが、 どうも個人ではアンテナがはれない。 あと数式からプログラムに落とせない
wolfSSLをもとに、SSL/TLSの正しい利用法と仕組みを理解する 暗号化された安全な通信は、ネットワークを使う全てのアプリケーションにとって、 考慮すべき重要な課題です。 セキュアな通信を実現するために用いられる技術SSL/TLSの最新版がTLS 1.3であり 各種SSLライブラリも対応してきています。 ただ、ライブラリだけが最新のものになっても、仕組みを知り、 正しく使わなければ、安全は担保されません。 そこで本書は、そんなTLS 1.3の基礎的なプロトコルの流れから、 暗号化・認証の仕組み、アプリケーション実装のベストプラクティスを 組み込みシステム向けの軽量&高機能なライブラリwolfSSLを例に 解説していきます。 さらに、ライブラリコードの解説を含め、内部実装にまで踏み込んだ解説も行い、 SSLライブラリを徹底的に理解できる一冊です。 Part 1:TLSの技術 ・Chap
Spec-Driven Development (SDD) revives the old idea of heavy documentation before coding — an echo of the Waterfall era. While it promises structure for AI-driven programming, it risks burying agility under layers of Markdown. This post explores why a more iterative, natural-language approach may better fit modern development. The Rise of Specification Coding assistants are intimidating: instead of
axum version0.2.0 is released!! 本日2021-08-24、axum version0.2.0がリリースされました。 この記事のコードを参考にする場合はバージョンによる違いに注意してください。 2021-08-14追記 axum 0.1.2, 0.1.3のリリースによりこの記事の一部の記述は古いものとなりました。 この記事に関わる変更は以下です。 多くのextractorが Deref を実装した axum が hyper::Server をre-exportするようになった extract::UrlParams と extract::UrlParamsMap が非推奨となり、 extract::Path が推奨されるようになった axum 0.1.3対応版のコードは https://github.com/techno-tanoC/axum_sample/tr
家電量販店に行くと今でもボイスレコーダーのコーナーがあり人気だ。またスマートフォンにも必ずボイスメモアプリがある。筆者も一時期アイデアをボイスメモで録り溜めていた。しかし、ボイスメモは聞き直す必要があり管理が面倒という欠点もある。そこで、今回はPythonからMicrosoftのAPIを利用して自動的にボイスメモをテキストに変換する方法を紹介しよう。 WAVファイルを音声認識してテキストに変換したところ 音声認識APIを使ってみよう AI技術の進歩により音声認識の精度が向上している。これまでも音声認識の技術はあったものの精度が今一歩だった。そして個人ユーザーが気軽に活用できる感じではなかった。ところが、最近では、各社が競い合うように音声認識の精度向上に力を入れている。各社から発売されているAIスピーカーを積極的に活用している読者も多いことだろう。 そして、大きな点として、Microsoft
ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは。Yahoo!広告 ディスプレイ広告エンジニアの安田です。私たちの開発チームでは広告配信の起点となるJavaScript(TypeScript)ライブラリを提供しています。今回はこのライブラリのデプロイ失敗率を改善できた、コード品質改善の取り組みについてご紹介します。 コード品質を定量的に測る指標の1つにCognitive Complexityがあります。Cognitive Complexityは人間視点での複雑性を評価する指標で、例えばネストが深くなるほど複雑と判断される特徴があります。複雑なコードは変更に多くの時間を要し、テストが難しくなるので要改善なシグナルといえるでしょう。私たちが今回実施した品質改善の取り組みで
なんかオブジェクト指向の話が盛り上がってるので、関連記事をまとめておきます。 まずはここから。12年たちました。 Java 8が出たすぐあとくらいの記事です。 Javaでラムダ式が入って、その後は継承のできないrecord型が入ったり、パターンマッチが入ったり、クラスの定義を書かなくてもHello worldが書けるようになったりと、非オブジェクト指向な機能も出そろってます。 だいたい同じ内容ですが、3年前。 今回の発端になったのは、過剰設計のコードがオブジェクト指向的に正しいみたいな話が出てきたからだと思うのだけど、過剰設計ということばでいろいろ議論されてるように、オブジェクト指向だとオブジェクト迷路ができがちというのは問題視されていたので、正しいというわけではないです。 で、なんでオブジェクト指向迷路ができるかというと、オブジェクト指向の本がアプリケーションを見据えずにモデリングの話を
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く