並び順

ブックマーク数

期間指定

  • から
  • まで

321 - 360 件 / 707件

新着順 人気順

型の検索結果321 - 360 件 / 707件

  • ライブラリとして公開したGoのinterfaceを変更するのは難しいと言う話 - 焼売飯店

    昨日Twitterに書いた内容に、sivchariさんとhajimehoshiさんからリプライをいただいたので、備忘録的にまとめておきます。 発端 interface型と非interface型の後方互換性について interface型を公開した場合 1. メソッドの追加 2. メソッドのシグニチャの変更 3. メソッドの削除 公開されたinterface型を変更する場合の後方互換性についてのまとめ 非interface型を公開した場合 1. メソッドの追加 2. メソッドのシグニチャの変更 3. メソッドの削除 公開された非interface型を変更する場合の後方互換性についてのまとめ その他の後方互換性を崩さない機能拡張のパターンの紹介 他から実装できないinterfaceにする interfaceを合成する 内部用のinterfaceを分け、構造体型を公開する まとめ 発端 昨日、フュ

      ライブラリとして公開したGoのinterfaceを変更するのは難しいと言う話 - 焼売飯店
    • Cから学ぶRustの良さ - Qiita

      背景 RustはしばしばCやC++言語と比較される記事が見られ、実際に、より開発がしやすいような機能が多々入っていると思います。そこで、私が以前業務で使用していたCと比較して、この点は、実際にRustを触ってみて良かったなと思った点をお伝えしたいと思います。 ただ、どちらかというと、Rustというより、あまり意識しなくても書けることは素晴らしいという話になるはず... Cについて Cは言わずもがな、今でも低レイヤーを扱ったりするときに用いられることもある言語です(ネットワーク、OSなど)。また、ハードウェアでも活躍しています。 マルチプラットフォームに対応しているので、環境に依存せずに実行でき、実行速度が速いことが特徴として挙げられます。 ただし、メモリを扱うことが多いため、習得難易度はやや高めとされているようです。 比較 Rustの概念として以下のようなものがあります。 安全性 並行性

        Cから学ぶRustの良さ - Qiita
      • VSCode で TypeScript の交差型のプロパティを省略せずに見れるようにする - Mobile Factory Tech Blog

        VSCode でホバーして型情報を見ようとすると、交差型はプロパティが展開されません プロパティの型を展開する Mapped Types を通すことで省略せずにプロパティを見ることができます。プロパティが交差型になっていることもあるので、再帰的にプロパティを Mapped Types に通すような型を定義しておいて、通すことでプロパティを全て確認できます type Expand<T> = T extends object ? T extends infer O ? { [K in keyof O]: Expand<O[K]> } : never : T type Temp = Expand<`確認したい型`> 厳密でなくとも簡単にどんなプロパティがあるか把握したいだけなら組み込みの Required や Partial を使うのが手軽です。ただし、あくまでデバッグ用途でそれぞれ省略可能プロ

          VSCode で TypeScript の交差型のプロパティを省略せずに見れるようにする - Mobile Factory Tech Blog
        • “しょうもないうっかり”を許さない、静的型付けの言語 コーディングミスを未然に防ぐ「Zig言語」の仕組みとは

          Kernel/VM探検隊は、カーネルやVM、およびその他なんでもIT技術の話題ジャンルについて誰でも何でも発表してワイワイ盛り上がろうという会です。小林哲之氏は、静的型付きコンパイル言語、Zigについて発表しました。 「C言語であった問題をとにかく解決する」を目標に掲げるZig言語 小林哲之氏(以下、小林):それでは、始めます。tetsu_kobaと申します。今日はZigの話をしたいと思います。 Zig言語は、けっこう新しい言語なので、初めて聞く方も多いかと思います。「5分でざっと理解するZig言語」というページを作っておいたので、こちらをご覧になってください。 ところでみなさん、解決まで何時間もかかったバグの原因が、実は数秒で直せるような、しょうもないうっかりコーディングミスだったという経験はありませんか? 私は何度もあります。 バグの原因が、しょうもないうっかりコーディングミスだったと

            “しょうもないうっかり”を許さない、静的型付けの言語 コーディングミスを未然に防ぐ「Zig言語」の仕組みとは
          • 自動テスト全体の信頼性を維持するためにはどうするか 「ブレない基準でピラミッドを作り、スモールに切り出していく」

            Qiita Conferenceは、ソフトウェア開発者が集まり、最新の技術や最先端の挑戦・ソフトウェアの未来についての考えや知見を共有し、つながる場を創出する、「Qiita」が開催するオンライン技術カンファレンスです。ここで和田卓人氏が「サバンナ便り - 自動テストに関する連載で得られた知見のまとめ(2023年5月版) 」をテーマに登壇。最後に、テストダブルとテストピラミッド、サイズダウン戦略について話します。 テスト用に使う偽物「テストダブル」 和田卓人氏:じゃあ次。テストダブルの話にいきます。「忠実性と決定性のトレードオフを理解しよう」という点です。これはもうちょっとあとにまた出てきます。 テストダブルというもので、モックオブジェクトとかスタブとかを使って、本物ではない偽物をテスト用に使ってテストをすることはよくありますよね。 データベースの偽物とか外部システムの偽物とか、Amazon

              自動テスト全体の信頼性を維持するためにはどうするか 「ブレない基準でピラミッドを作り、スモールに切り出していく」
            • 『関数型ドメインモデリング』はF#の本なのか? - 詩と創作・思索のひろば

              関数型ドメインモデリング ドメイン駆動設計とF#でソフトウェアの複雑さに立ち向かおう 日本語版出版に際し、訳者の猪股さんにご恵贈いただきました。ありがとうございます! すでに原著の『Domain Modeling Made Functional』を読んでいて、そのときの感想は以前に書いたとおり。そこからの差分としては、はてな社内でこの本の輪読をはじめたこと。輪読がはじまったその週に日本語版の出版が告知され嘆息する一同でしたが、日本最速で輪読を開始できたのは間違いないと思う。 この本の特徴をひとつ挙げろと言われれば、実装に使われている言語がF#であること、というのが大方の回答になるとおもうが、一方でこの本をやるのにF#を実践する必要はない、と考えている。そういうわけで今回輪読における実装言語にはGoとTypeScriptを指名しており、その後Scala勢力も増えたのだけど、進度的には実際にコ

                『関数型ドメインモデリング』はF#の本なのか? - 詩と創作・思索のひろば
              • TypeScriptのイカれたメンバー (主要技術) 達を紹介していくぜ!!

                はじめに TypeScriptを勉強していて、使用する技術とそのサンプルのコードの一覧があれば便利だなぁ と思ったので投稿することにしました。 対象読者 TypeScript初心者 TSをインストールしたけど挫折した人 前提条件 そもそもTypeScriptとはなにか? TypeScriptとは、JavaScriptがベースとなっていて変数や引数なんかに対して型というものを付けることができる言語です。 型っていうのは、この変数には文字しか代入できないですよ~!!なんてな感じでデータの出入りを制限できるものになります。 変数や関数の後に「:」を付け、その後に任意の型を書けば完了です。これを書くだけで晴れてあなたもTypeScripterの一員です。

                  TypeScriptのイカれたメンバー (主要技術) 達を紹介していくぜ!!
                • TypeScriptで空でない配列を型で表現する

                  // コンパイルエラー const numbers: NonEmptyArray<number> = []; // これはコンパイルが通る const numbers: NonEmptyArray<number> = [1]; const needNonEmpty = (arr: NonEmptyArray<number>) => arr.length const a: number[] = [1,2,3]; const b: NonEmptyArray<number> = [1,2,3]; const isNonEmptyArray = <T>(arr: T[]): arr is NonEmptyArray<T> => arr.length > 0; // コンパイルエラー needNonEmpty(a); // これはコンパイルが通る needNonEmpty(b); // これはコン

                    TypeScriptで空でない配列を型で表現する
                  • TypeScript Compiler APIを使って型を中心に実装を自動生成する - ドワンゴ教育サービス開発者ブログ

                    この記事は、ドワンゴアドベントカレンダー2020の10日目の記事です。 qiita.com はじめに ベルリシア(@berlysia) という名前で活動しています。Webが好きです。ドワンゴでは、N予備校をはじめとする教育事業のWebフロントエンド開発をしています。 この記事では、Webフロントエンドチームの実際の開発で用いた、TypeScript Compiler APIを使っての型を中心とした実装の自動生成事例を紹介します。考察パートが中心で、コードはほぼ出てきません。 状況説明 管理画面の開発です。検索と結果一覧とCRUD操作が中心で、多くの画面が定型的な実装です。画面数が多いため、いかにこうした定型的な画面を効率よく開発して複雑なところに注力するかが、この開発を成功させるカギとなります。また、人員的にもある程度の並列性を確保している状態です。 APIはOpenAPIで仕様が提供され

                      TypeScript Compiler APIを使って型を中心に実装を自動生成する - ドワンゴ教育サービス開発者ブログ
                    • TypeScript で実行時の入力を含む文字列を型で弾く - Object.create(null)

                      TypeScript (4.7 時点) において, 文字列に付けられる型には以下の 3 つ (とそのユニオン型) があります. 文字列型 string 文字列リテラル型 ("foo" など) テンプレートリテラル型 (`data-${string}` など) これらのうち, 実行時の入力, 特に事前にパターンが想定されていないような任意の入力が含まれるような文字列に対しては, string や string を含むテンプレートリテラル型を付けることはできても, 文字列リテラル型を付けることはできません. 文字列リテラル型を付けるためには型検査時 (実行の前) に入力文字列の内容がわかっている必要があるので, まあそれはそうですね. このことを利用して, 実行時の入力を含む文字列を与えようとすると型検査に失敗するような関数を作ることができそうです. まずは与えられた型が文字列リテラル型, ま

                        TypeScript で実行時の入力を含む文字列を型で弾く - Object.create(null)
                      • 超高速シリアライズフォーマット「DLHN」

                        新しいシリアライズフォーマットDLHNをリリースしました。 DLHNは高速でデータサイズが小さいバイナリ形式のシリアライズフォーマットです。 DLHNの発音は"Dullahan"と同じです。 公式サイトは https://dlhn.org 実装は https://github.com/otake84/dlhn イラストは @kira2beat さんに描いていただきました。 特徴DLHNはプログラミング言語やプラットフォームに依存しないバイナリ形式のシリアライズフォーマットで、JSON, CSV, MessagePack, Protocol Buffersなどから影響を受けています。 シリアライズとデシリアライズが高速で、データサイズが小さく、Schema定義ファイルが不要でストリーム処理にも対応しています。 これを聞くとMessagePackと同じように感じるかもしれませんが、実際のデータ

                          超高速シリアライズフォーマット「DLHN」
                        • 関数型プログラミング言語における関数適用構文の歴史的経緯についてのメモ - Arantium Maestum

                          先日こういうツイートがあった: Haskellとかの関数型言語を使用しているプログラマの皆様にお聞きしたいんですけど、「関数名 引数 引数 ...」みたいな関数呼び出し構文って見にくくは無いですか?「関数名(引数, 引数, ...)」に慣れたこちらからすると、丸括弧が無いからコード中のどこが関数呼び出しなのかパット見で把握しにくい。— sounisi5011/プログラム (@sounisi5011Prog) February 22, 2022 「見にくくは無いですか?」と聞かれると、個人的には「全然大丈夫です」と答えざるを得ないのだが、次のツイートに関しては考えさせられた: 数式でも函数には丸括弧を使ってるのに、どこのタイミングで丸括弧が消失したのかわからないし、その選択をした理由も思いつかない。— sounisi5011/プログラム (@sounisi5011Prog) February

                            関数型プログラミング言語における関数適用構文の歴史的経緯についてのメモ - Arantium Maestum
                          • Rustのプロジェクトを始める前に知っておきたかったこと - Qiita

                            先日AWS lambdaをRustで実装する案件をやった。工数的には1ヶ月もないくらい。 Rustは6,7年前にちらっと勉強しただけで、実質未経験だったけど、ちょっとした案件だったので、わからないことはRust by exampleなどを見ながらどうにかなると思ってた。 実際は、ライブラリの作法や事情/背景を知らず混乱したり、雰囲気で分かったと思っていても裏側の仕組みを認識してなくて、後々ハマることが多かった。そこで少し前の自分向けに事前にこういうこと知っておきたかったと思ったことをまとめておく。 識者の方々には不正確なところ、間違ってはいないがミスリードしそう、言い回しが不自然、これも触れたほうが親切、等々、ご指摘いただけると助かります。 Resultに関する諸々 Rustにはtry-catchの例外機構はない。他の言語でいうところのEither型と同じ構造のResult型を使う。

                              Rustのプロジェクトを始める前に知っておきたかったこと - Qiita
                            • Re: ドメイン固有型(値オブジェクト含む)を再考する - Software Transactional Memo

                              blog.j5ik2o.me 値オブジェクトはドメイン固有型の一種です。なので、不変と等価判定だけではなく、なにかしらのドメイン固有の不変条件(invariant)を維持する責任があると考えます(もちろん型として切り出すわけですからその投資に見合うだけの見返りがないといけません)。 違う。値オブジェクトとはID以外で等価判定をするオブジェクトの事であって、RubyのHash、Pythonのdict、C++のstd::unordered_setすらも値によって等価判定を行うのでこれらは値オブジェクトであるがドメイン固有型ではない。RubyでHashに入れて渡されたユーザ入力値をValidationしてドメイン固有型に詰め直すのはもちろん必要ならやれば良いが、Hashクラスそのものにモンキーパッチなり特異クラスなりを行って不変条件を維持する責任を負った自分専用Hashを作って普通のHashクラ

                                Re: ドメイン固有型(値オブジェクト含む)を再考する - Software Transactional Memo
                              • npm package を実装するための自分専用テンプレートリポジトリを作った - mizdra's blog

                                npm package を作る度にイチから開発環境の構築をしていて大変だったので、自分専用のテンプレートリポジトリを作りました *1。 github.com せっかくなので、テンプレートの特徴とか、どういうこと考えながら作ったとか紹介してみます。 はじめに: 基本的な技術スタック npm TypeScript Node.js Native ESM Prettier ESLint Vitest Renovate GitHub Actions vscode 向けの各種設定ファイル (extensions.json, launch.json, settings.json) GitHub の「テンプレートリポジトリ」機能を使う GitHub にそれっぽい機能があったので使ってみました。 docs.github.com 「Use this template」というボタンが出て便利です。 「Use t

                                  npm package を実装するための自分専用テンプレートリポジトリを作った - mizdra's blog
                                • TypeScriptコンパイラの読み方

                                  TypeScriptコンパイラリーディングをする上で、目当てのコードに辿りつくまでの手間を短縮するためのメモ書きです。コードリーディングの一般論や、TypeScriptコンパイラから読み取れる個別事象については極力省略しています。 TypeScriptの主要な処理系 多くのJavaScriptパーサーが拡張としてTypeScriptを読めるようになっています。また抽象構文木のフォーマットに事実上の標準があり、各パーサーはそれに従っています。AST Explorerでこれらのパーサーの出力を調べることができます。特に重要なのが以下の2つの処理系です。 TypeScript TypeScriptの型推論・リント・トランスパイル・モジュールバンドリング等ができる。 Babel TypeScriptのトランスパイルができる。 TypeScriptコンパイラの構成 libに標準ライブラリ (型定義フ

                                    TypeScriptコンパイラの読み方
                                  • Reactの"要素の型"、それぞれの特性理解していますか?

                                    はじめに 普段React・Next.jsを用いた開発に際して、UIコンポーネントを作成する際にReact.FCやJSX.Element、ReactNodeなどの"要素やコンポーネントに関する型"を使用する場面が多々あるかなと思います。 昨今のReactコンポーネント開発において、実際には要素やコンポーネントの型を「何を使うか」をあまり意識しないでもちゃんと開発できてしまいます。とはいえ、それぞれの型には微妙に異なる特徴や特性がありますので、今回はよく見かける以下の四つの型について、それぞれの違いや特性を紹介していきたいと思います。 JSX.Element ReactElement ReactNode React.FC

                                      Reactの"要素の型"、それぞれの特性理解していますか?
                                    • TypeScript 5.5で型述語を推論できて最高。配列のfilterも型安全に

                                      2024/6/20 TypeScript 5.5が正式リリースしたので追記しました。 TypeScriptの次バージョン5.5で、開発者が長い間求めていた機能がついに実現されました。 従来のTypeScript 5.4以前では、ユーザー定義型ガードを使う際には型述語(用語は後ほど解説します)の記述が必要です。 ▼ TypeScript 5.4 function isNumber(value: number | string): value is number { return typeof value === 'number'; } 2024年6月20日にリリースされたTypeScript 5.5では、関数の実体から型述語の型推論(infer type predicates)が可能になります。すなわち、次のようなコードが可能です。 ▼ TypeScript 5.5

                                        TypeScript 5.5で型述語を推論できて最高。配列のfilterも型安全に
                                      • クライアントサイドのバリデーションエラーのデータ型についての考察 - STORES Product Blog

                                        業務委託で STORES の開発をしている @inouetakuya です。 先日 STORES のフロントエンドチーム内でクライアントサイドのバリデーションについて見直す機会があり、特にバリデーションエラーのデータ型をどうするかについての議論が興味深かったので、共有させていただきます。 背景 議論の背景について簡単に触れておくと、STORES のクライアントサイドでは、バリデーションのライブラリとしてこれまで joi-browser を使ってきました。 しかしながら、本家の Node.js 版の joi がブラウザ対応したことにより joi-browser が deprecated になったことを受けて、今後も joi を使い続けるかを検討したところ、 joi-browser と joi の最新バージョンとの間で API の差異がいくつかあり、joi-browser から joi への乗

                                          クライアントサイドのバリデーションエラーのデータ型についての考察 - STORES Product Blog
                                        • 今こそ、ラムダ式を考える - なぜあなたはラムダ式を苦手と感じるのか

                                          Burikaigi ブリ会議 2024 発表資料 Java, Java SE, Project Lambda, ラムダ式, Lambda Expression 関数型プログラミング

                                            今こそ、ラムダ式を考える - なぜあなたはラムダ式を苦手と感じるのか
                                          • Pythonに型アノテーションを自動で付与する

                                            2021/10 追記 Pyannotate はメンテナが居なくなったため更新が途絶えました。またより表現多く typing を反映できるため、これからは Monkeytype を推奨します。 この記事は何か Python Advent Calendar 2020の 2 日目の記事です(元々 13 日目でしたが、2 日目の参加者が取りやめたので横入りしました)。「Python コードに自動で型を付与し、その型をテストで静的チェックして、保守性を高める方法」をご紹介する趣旨の記事です。 書いた理由 今回紹介するメインツールの pyannotate について、日本語で紹介している記事がほとんどなく、かつ古い情報が多かった為です(python3 サポートがない時代かつ、pytest との連携ができなかった時代)。「Python において型はいるのか?」という議論はしません。 今回紹介するツールは以

                                              Pythonに型アノテーションを自動で付与する
                                            • いつScalaを使い、いつ使わないのか

                                              前置き 先日Twitterでこのような興味深いツイートを拝見しました。 なるほどと思ったので、自分が技術選定/アーキテクチャ設計において「どのような時にScalaを選択し、どのような時に選択しないのか」をあらためて言語化してみることにしました。 ちなみにこの記事タイトルは Scala福岡 2019 で講演させて頂いたものと同じタイトルですが、当時の資料は説明が無いと誤解を招く部分も多く非公開にしているため、その焼き直しも含めてこの記事を書いています。 また、ここで記載している内容は2022年8月現在の事情を元にした考えになります。言語の機能やとりまく状況などは日々変わっていくものであり、前提が変われば結論が変わることも当然にあります。あくまで現時点での意見の一つとして参考程度にして頂ければ幸いです。 また、この記事では主に言語機構や周辺ライブラリ・エコシステムといった側面からの判断を中心と

                                                いつScalaを使い、いつ使わないのか
                                              • PHPerのための「PHPと型定義」を語り合う【PHP TechCafe イベントレポート】 - RAKUS Developers Blog | ラクス エンジニアブログ

                                                弊社で毎月開催し、PHPエンジニアの間で好評いただいているPHP TechCafe。 2023年5月のイベントでは「型定義」について語り合いました。 弊社のメンバーが事前にまとめてきた情報にしたがって、他の参加者に意見を頂いて語り合いながら学びました。 今回はその内容についてレポートします。 rakus.connpass.com PHPと型 静的型付け言語 動的型付け言語 一般的な誤解 PHPの型 単一の式が持つ型 型システムで扱える型 never型について void型について self,parent,static型について resource型について evalでresource型を宣言すると リテラル型について ユーザー定義型について 複合型について 型のエイリアス mixed iterable PHPで取り入れられた型表現 型宣言のメリット PHPの歴史を振り返る PHPのドキュメント

                                                  PHPerのための「PHPと型定義」を語り合う【PHP TechCafe イベントレポート】 - RAKUS Developers Blog | ラクス エンジニアブログ
                                                • 入れ子構造を自由に拡張する – TypeScript版「Trees that Grow」 | IIJ Engineers Blog

                                                  日本Haskellユーザーグループ(愛称 Haskell-jp)発起人の一人にして、Haskell-jpで一番のおしゃべり。 HaskellとWebAssemblyとプリキュアとポムポムプリンをこよなく愛する。 This is a Japanese translation of Flexiblly Extend Nested Structures – “Trees that Grow” in TypeScript. 抽象構文木(AST, Abstract Syntax Tree)の扱いに慣れた一部のHaskell開発者の間では、「Trees that Grow」というイディオムが一般的で、Haskellの最も有名なコンパイラ、GHCにおいても採用されています。今回は、この「Trees that Grow」をTypeScriptで実現するにはどうすれば良いかを共有しましょう。 あらまし Ha

                                                    入れ子構造を自由に拡張する – TypeScript版「Trees that Grow」 | IIJ Engineers Blog
                                                  • Reactコンポーネントの抽象化とインターフェースのリファクタリング

                                                    記事の概要と動機 Takepepeさんの「AtomicDesign 境界線のひき方」という記事を読んでいて、はたと気づいた。「限定的コンポーネントを横断的なものに移行する」という箇所は、SOLID原則のISPとそのリファクタリングの話だ。ISP(Interface Segregation Principle)とはインターフェース分離原則である。 コンポーネントは、はじめは限定的コンテキストで実装するべきでしょう。共通利用される頃合いに、リファクタリングすれば十分です。その際に忘れてはならないことが「抽象化」です。 この記事は、Takepepeさんの記事中の以下の一文に対して、インターフェースという観点から解説を加えた返歌、つまりアンサーソングである。 コンポーネントのインターフェース フロントエンドのコンポーネントのインターフェースとは、単純化するとPropsの型である。 type Art

                                                      Reactコンポーネントの抽象化とインターフェースのリファクタリング
                                                    • Haskellの型と直観論理 - 朝日ネット 技術者ブログ

                                                      開発部のxgotoです。Haskellの初級・中級者向けのトピックを取り上げたいと思います。 今回は型(Type)についてです。型はHaskellの入門書でも必ず最初のほうに説明されるもので、手元の本によれば、 型とは、互いに関連する値の集合である。 ---- 『プログラミングHaskell』 Graham Hutton 著 / 山本和彦 訳 だとか、 値の世界は型と呼ばれる系統的な集まりへと分割される。 ---- 『関数プログラミング入門 Haskellで学ぶ原理と技法』 Richard Bird 著 / 山下伸夫 訳 などのように書かれています。たとえば Bool は True と False の2つの値からなる集合だし、Intは整数の集合というように、型は値の集合というふうにみることができます。それならば型などと呼ばずに集合と呼べばいいと思いますが、「異なるものには異なる名前をつけろ

                                                        Haskellの型と直観論理 - 朝日ネット 技術者ブログ
                                                      • 部分型における変性と極性 - なぜScalaの変性は+や-で指定するのか - 貳佰伍拾陸夜日記

                                                        この記事はScala Advent Calendar 2022の19日目です. Scalaではジェネリック型の変性(variance)は+や-で指定しますが, 他の言語(たとえば, C#, Kotlin)ではoutやinだったりします. この記事では変性の意味を整理して, なぜScalaでは+/-の記号を使うのか説明します. 追記ただし, ここで説明している内容は基本的にC#やKotlinでも成立する(はずな)ので「なぜこれらの言語では+/-の記号を使わないのか」を説明するものではありません. 個人的には+/-の方がわかりやすいと思うし, out/inの記法は扱っている概念が簡単であるかのような誤解を生む(悪く言えば騙す)のでどちらかと言うと嫌いです. 発端 こういう話題がありました. Scala は共変が + で、反変が - なので理論重視? なのに対して、Kotlin と TypeSc

                                                          部分型における変性と極性 - なぜScalaの変性は+や-で指定するのか - 貳佰伍拾陸夜日記
                                                        • 12年前の『型システム入門』翻訳の思い出話

                                                          @ カワるガワるTAPLカタるヨる https://taplts.connpass.com/event/320294/

                                                            12年前の『型システム入門』翻訳の思い出話
                                                          • Result型とESLintでエラーハンドリング漏れを検出する

                                                            こんにちは、よしこです。 この記事では、わたしの所属する株式会社ナレッジワークで最近コードベースに取り入れた「エラーハンドリング漏れ防止の仕組み」について紹介します。 背景 「通信を伴うアクションに失敗しても画面にエラーフィードバックが表示されない」という実装漏れをしてしまったことがあり、今後こういうことが起きないように仕組みで防止したいと思いました。 「忘れてしまった」という問題なので、テストで担保するのも難しいように思いました。実装するのを忘れてしまっているということは、テストを書くこともセットで忘れてしまっているはずだからです。 「気をつける」「チェックリストを作る」のような人間が注意する方向ではなく、「嫌でも気付く」「忘れていたらCIが通らない」のように、必要なハンドリングを強制する形にできないか?と思いました。 課題 実行時に通信エラーが起きる可能性があり、ユーザーフィードバック

                                                              Result型とESLintでエラーハンドリング漏れを検出する
                                                            • Auroraバージョンアップに伴い改めてMySQL5.7の押さえるべきポイントについて勉強会を開催しました! - ANDPAD Tech Blog

                                                              こんにちは!エンジニアの福間(fkm_y)です。 弊社でデータベースの技術顧問をして頂いている三谷(mita2)さんに、MySQL5.7の追加機能についての開発部向け勉強会を実施いただきましたのでそのレポートをお伝えします。 開催背景 弊社では三谷さんによるデータベース勉強会を定期的に開催しており、3月にもMySQLロックの基礎編の勉強会を開催しました。 ANDPADでは、今年の4月にAurora MySQLをVer.1(MySQL5.6互換)からVer.2(5.7互換)にバージョンアップを実施しました。 tech.andpad.co.jp Aurora MySQL Ver.2 になることで使えるようになった、MySQL5.7で追加された機能について開発者に知ってもらい、普段の開発に取り入れてもらうためにMySQL5.7の勉強会を開催することとしました。 今回は追加された150以上の新機能

                                                                Auroraバージョンアップに伴い改めてMySQL5.7の押さえるべきポイントについて勉強会を開催しました! - ANDPAD Tech Blog
                                                              • 緊急解説! 突如出現したnitrogqlの中身と裏側

                                                                皆さんこんにちは。これは、筆者が最近公開したnitrogqlを宣伝する記事です。nitrogqlの概要や、開発にあたっての裏話などを紹介します。 nitrogqlとは nitrogqlは、TypeScriptコードからGraphQLを使用するためのツールです。有体にいえば、graphql-code-generatorを置き換えることを目指して開発しています。具体的には、.graphqlファイルからTypeScriptの型定義を生成する機能を備えています。 例えば、次のようなクエリがあったとします。 query ($unfinishedOnly: Boolean) { todos(filter: { unfinishedOnly: $unfinishedOnly }) { id body createdAt finishedAt tags { id label color } } } imp

                                                                  緊急解説! 突如出現したnitrogqlの中身と裏側
                                                                • 型付けは難しい

                                                                  ベン・フィードラーのブログより。 型検査と型推論 型検査とは、あるプログラミング言語で与えられたプログラムを実行し、すべての変数や式が正しい型を持っているかどうかを調べるプロセスです。例えば、文字列は文字列に代入され、算術式は数値のみを使用するなどです。一部の言語では型推論を提供しており、コンパイラに自分で正しい型を見つけるタスクも提供します。言語の特徴に応じて、型検査と型推論の問題は、些細なものから決定不能なものまで様々です。 一般的な用語 完全性 正しく入力されたプログラムを全てチェックできれば、タイプチェッカーは完了です。 健全性 正しく型付けされたプログラムのみを受け付けるものであれば、型検査は健全です。 決定可能性 任意の入力に対して、その入力が問題を満足するかどうかを有限時間で計算できる場合、決定問題は決定可能です。決定可能な問題の例としては、素数判定や充足可能性などがあります

                                                                  • Pythonの整数型はどのように実装されているのか

                                                                    この記事はPython Advent Calendar 2021 18日目の記事です。 GoogleでソフトウェアエンジニアをしているAlberto Oshiro氏のHow Python Represents Integers using Bignumの翻訳になります。本人のご了承を得て公開しています。感謝。 Photo by Crissy Jarvis on Unsplash C/C++のような低レイヤーのコーディングをしているプログラマは整数型のメモリ使用量を気にしなければいけません。また、オーバーフローを防ぐために変数の取りうる最小・最大値も把握して、intで十分なのか、longが必要なのかを常に考えなければいけません。 C/C++と違ってPythonの整数値にはオーバーフローがないので、Pythonプログラマは整数にどの型を使うか考える必要はないです。また、Pythonの整数型はと

                                                                      Pythonの整数型はどのように実装されているのか
                                                                    • 令和5年に知っているべきTypeScriptのnamespaceの知識

                                                                      TypeScriptにはnamespaceという構文が存在します。この構文はTypeScript初期からある独自構文の一つですが、現在では特殊な用途以外では使う理由が無いため、よく知らないという方も多いでしょう。 実際、一部のレアケースを除いてnamespaceを使う必要はありませんが、それでも知識としてあったほうが良いことが多少あります。この記事ではこの部分を解説します。 型に.でアクセスできるやつ TypeScriptを使っていると.を使って型にアクセスする機会があるでしょう。例えばReact.FCなどです。 実は、親.型名のように.を使って型にアクセスできるのは、namespaceの機能です。上のコードでのReactは単なる型や単なる変数ではなくnamespaceなのです。 試しに、Foo.BarがstringとなるようにFooを定義してみてください。これができる方法は2つしかありま

                                                                        令和5年に知っているべきTypeScriptのnamespaceの知識
                                                                      • interfaceとtypeの違い、そして何を使うべきかについて

                                                                        始め TSを初めて勉強したときに「typeよりinterfaceを使うように!」というブログをよく見ましたが、業務の時は全部typeで型を定義してました。あれ?と疑念に思ってましたので、記事でお話させていただきます。 1. 型の定義 TSで一番手っ取り早く型を定義できる方法は多分これだと思います。 let level: number = 15; level = 15 level = "十五" //Type 'string' is not assignable to type 'number' このように宣言時の変数に方の注釈をつけることを型アノテーション(Type Annotation)と言います。上の例だけ見たら特に問題なさそうに見えますが、コードが少しでも複雑になったら問題があります。

                                                                          interfaceとtypeの違い、そして何を使うべきかについて
                                                                        • 「TypeScript の型定義に凝りすぎじゃね?」の反応を眺める - Neo's World

                                                                          昨日書いた「TypeScript の型定義に凝りすぎじゃね?」という記事に対して、はてブコメや Twitter でのコメントがいくつかあったので、勝手に取り上げて補足する。勢いで書いた雑文が思いの外見られていて驚いた。みんなどうやってこんな辺鄙なサイト見つけたの?まずは読んでくれてありがとね。 ahuさんはTwitterを使っています 「自分は個人用のでも書き捨てのコードじゃないならTSを使うけど、TSはlintの延長でしかなくて型定義頑張りすぎてコストに見合ってなさそうというのはわかる https://t.co/7OhyTimsdU」 / Twitter TSはlintの延長でしかなくて型定義頑張りすぎてコストに見合ってなさそうというのはわかる TOEIC3点さんはTwitterを使っています 「TypeScript の型定義に凝りすぎじゃね? https://t.co/WuUKv9AJ

                                                                          • 『Rust Design Patterns』を翻訳してみました(Idiom 編) - Qiita

                                                                            はじめに rust-unofficialというところの出しているRust Design Patternsの日本語訳が見つからなかったため、理解のために翻訳してみました(分からないところは DeepL に頼りました)。 今回は Introduction と Idioms の部分です(デザインパターン・アンチパターン編の翻訳はこちらにあります)。 FFI の部分はよく分からなかったためスキップしています。 不慣れなため翻訳間違いなどある可能性が高いです(教えていただきたいです)。 以下から本文です。 Introduction デザインパターン プログラムを開発するとき、私たちは多くの問題を解決しなければなりません。プログラムは問題の解決方法と見ることができます。また、プログラムは多くの異なった問題の解決方法の集まりと見ることもできます。これらの解決方法の全てが一緒に大きな問題の解決へと働きかけ

                                                                              『Rust Design Patterns』を翻訳してみました(Idiom 編) - Qiita
                                                                            • オブジェクト指向プログラミング入門 -- Java object-oriented programming primer

                                                                              Javaで学ぶ、オブジェクト指向プログラミングの基礎知識。型とカプセル化が腹落ちすると、びっくりするくらいオブジェクト指向プログラミングがわかようになる/できるようになるRead less

                                                                                オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
                                                                              • 多言語化対応における TypeScript の型定義を通して開発のしやすさについて考えた - SmartHR Tech Blog

                                                                                こんにちは、SmartHR でプロダクトエンジニアをしている @nabeliwo です。 今年の9月に SmartHR のログイン後のホーム画面がリニューアルされました。 【9/21更新】新しいホーム画面を公開しました | SmartHR|シェアNo.1のクラウド人事労務ソフト この記事では、新しいホーム画面の実装の中で、開発者体験を損なうことなく多言語化対応を進められるよう、TypeScript の型定義を工夫した話をします。 まだまだ改善の余地がある状態ではあるのですが、私達のチームでの試行錯誤が読んでくれた方の参考になれば幸いです。 SmartHR の多言語化対応 SmartHR の既存のページではすでに WOVN.io というツールを使った多言語化対応が行われていました。 ただ諸々の理由があり1、新しいプロダクトでは自前で翻訳の仕組みを用意していこうとしています。 実際に、Smar

                                                                                  多言語化対応における TypeScript の型定義を通して開発のしやすさについて考えた - SmartHR Tech Blog
                                                                                • いかにして動的型付けのRubyに静的な型検査を持ち込むか? SteepとRBSが目指すもの - Findy Engineer Lab

                                                                                  Rubyをはじめとする「動的型付け」のプログラミング言語は、ソースコード中に型に関する記述が陽に出てこないことが特徴で、プログラムの実行前に(静的に)型検査をすることはありません。しかし、このようなプログラミング言語においても、大規模な開発における品質の向上や開発体験の改善、実行の高速化のために、静的な解析を活用しようという試みは多くなされてきました。この記事では、動的型付けの言語のための型検査の歴史を簡単に振り返って、現在私が開発しているRuby向けの型検査器Steepとその基盤となっている型記述言語RBSについて説明し、今後の展望を議論します。 著者:松本宗太郎さん(@soutaro) Rubyコミッター。大学院でRubyプログラムの型検査の研究に取り組み、修了後はスタートアップでWebアプリケーションの開発に従事。2017年から型検査ツールSteepの開発を始め、2019年からはRu

                                                                                    いかにして動的型付けのRubyに静的な型検査を持ち込むか? SteepとRBSが目指すもの - Findy Engineer Lab

                                                                                  新着記事