タグ

型ヒントに関するknj2918のブックマーク (28)

  • 「null安全」とは――Javaプログラマーが血と汗と涙を流さなくてすむ理由

    「null安全」とは――Javaプログラマーが血と汗と涙を流さなくてすむ理由:Android Studioで始めるKotlin入門(3)(1/2 ページ) Android Studio 3.0を使い、最近話題のプログラミング言語「Kotlin」の特徴を解説する連載。今回は、特にJavaプログラマーに注目していただきたい「null安全」について解説します。 Android Studioを使い、Kotlin言語の特徴を解説する連載「Android Studioで始めるKotlin入門」。連載第1回では、Kotlinの大まかな構文を説明しました。前回からは、Kotlin言語の個々の機能について解説しています。 Kotlin入門の3回目となる今回は、特にJavaプログラマーに注目していただきたい「null安全」について解説します。多くのプログラマーを苦しめ続けてきたnullの扱いですが、Kotl

    「null安全」とは――Javaプログラマーが血と汗と涙を流さなくてすむ理由
  • 力試し:SwiftのOptionalでこれできますか? - Qiita

    Optional は Swift を使う上でとても重要です。 Optional を使いこなせているか試してみて下さい。 Optional を使って次のことをやる場合に、 簡潔かつ安全 に書く方法を考えて下さい。 a: Int? があるとき、 a の値を二乗したい。ただし、 a が nil の場合は nil を得たい。 array: [Int]? があるとき、 array の最初の要素を取得したい。ただし、 array が nil か、最初の要素が存在しない( Array が空の)場合は nil を得たい。(ヒント: [Int] は first: Int? というプロパティを持つ。 first は最初の要素が存在しない場合は nil を返す。) x: Double? があるとき、 x の平方根を計算したい。ただし、 x が nil または負の数の場合は nil を得たい。なお、 sqrt を

    力試し:SwiftのOptionalでこれできますか? - Qiita
  • TypeScript の「型安全」を担保するために知っておきたかったこと - OITA: Oika's Information Technological Activities

    タイムリープTypeScriptTypeScript始めたてのあの頃に知っておきたかったこと〜 アドベントカレンダー1日目の記事になります。 よろしくお願いします。 3行で TypeScript で安全に型を扱う勘所は以下2点だと思いました。 最初から最後まで型が壊れていないことを保証する 型が壊れる可能性があるものは壊れている前提で扱う 個人的背景と前提 もともと C# での開発をメインとしていました。 Web開発は、JavaScript歴 ≒ TypeScript歴くらいの型付依存者です。 そのため、型付けのゆるい言語に対する耐性がなく、内容もそういうポジションからの見解になります。 記事内のサンプルコードは TypeScript V4.4 で挙動を確認しています。 最近のバージョンで変更のあった点は脚注を入れています。 最初から最後まで型を壊さない C# という静的型付け言語

    TypeScript の「型安全」を担保するために知っておきたかったこと - OITA: Oika's Information Technological Activities
  • SwiftのOptionalのベストプラクティス - Qiita

    それでは、『SwiftのOptionalのベストプラクティス』というタイトルで発表します。 #swtws pic.twitter.com/OJfz2tk4sP — koher (@koher) 2017年4月15日 2 年程前、 Qiita に『SwiftのOptional型を極める』というタイトルで投稿をしました。内容は、 Optional とは何かという説明と、 Optional の使い方を合わせたものでした。 しかし、 Swift 1 だった当時と比べると Optional 周りの状況は大きく変わり、特に使い方の部分が適切ではなくなってきました。また、僕のSwift経験値もたまって、新たな知見も蓄積されてきました。 今回の投稿では、 Swift の Optional 周りを整理し、いつ・どのように Optional を使うべきか、僕の考えるベストプラクティスを紹介します。 全体を通し

    SwiftのOptionalのベストプラクティス - Qiita
  • [Python]循環importになるケースでも型アノテーションができるケースがある、という話 - Qiita

    TL;DR Pythonで2つのモジュール間でお互いにimportしており、且つその中でのクラスなどの型アノテーションをエラーにならずに対応できるケースがあるよ、という話です。 使う環境 OS: Debian GNU/Linux 10 Python 3.6 ※個人で趣味で作っているPythonライブラリの最低バージョンの3.6に合わせているので新しいPythonバージョンではもしかしたら話が変わってくるかもしれません(そろそろPython 3.6のサポートを切っても良いかもですしね・・・)。 悩ましいPythonの循環importのエラーの話 他の静的型付け言語だと特に気になったりしないのですが、Pythonだと2つのモジュールでお互いにimportしあう形になっているとImportErrorになったりすることがあります。例えば以下のようにsample_A.pyというモジュールとsampl

    [Python]循環importになるケースでも型アノテーションができるケースがある、という話 - Qiita
  • Pythonでゆるく始める静的型検査 - Qiita

    TypeScriptを一年程楽しく書いていたのですが、1ヶ月程前から業務でPython3を触ることになりました。 Pythonは簡潔にかけて楽しいものの、他の人から引き継いだ箇所もあり、開発していて型がないのが辛くなってきました。 一番つらいのはコードリーディングしていて、この関数は何を返すのか? とか、この変数は何が入ってるのか、とかひと目見て分からないこと。……ドキュメントとしての型が無いことです。 無いなら導入しようということで、型アノテーションとmypyを導入することにしました。 いきなりガチガチに型を導入しても逆に辛くなるので、型のない状態から無理せず型を導入していく方法を取り、結構うまく導入できたので、今回はその時の手順や得られた知見、Tipsを紹介しようと思います。 環境 今回はpipenvの環境でテストしていますが、mypyに付いてはpip等でも特に変わらないと思います。

    Pythonでゆるく始める静的型検査 - Qiita
  • 型ヒントが提供されていないpythonライブラリにmypy用に型ヒントを入れる - Keep on moving

    最近mypy趣味で使い始めたのでいろいろ書こうと思います。 @tk0miiyka さんの記事を読んでとりあえず自分の仕事mypy使えそうなところをいろいろ考えてみた 対象バージョン version python 3.5.2 mypy 0.4.6 last update 2017.01.08 TL;DR pyiファイルをつくれば世の中の型ヒントが提供されていないプロジェクトに型ヒントをつけられる。 まーでも結構めんどいので、みんなでtypeshedを育てていくのがよさそうです。 GitHub - python/typeshed: Collection of library stubs for Python, with static types mypyって? こちらの素晴らしい記事を読んだほうがいいですね。 qiita.com 要はPython3.4以降で使える静的型チェッカーらしい。個

    型ヒントが提供されていないpythonライブラリにmypy用に型ヒントを入れる - Keep on moving
  • PythonにおいてannotationsとTYPE_CHECKINGで循環参照を防ぐ

    はじめに Python で annotation(型付け)を付けていると、循環参照に陥ることがあります。 循環参照とは以下のようにモジュールの参照がループしてしまうことを指します。 モジュール A がモジュール B を参照 モジュール B がモジュール A を参照 a.py from b import B class A: def __init__(self): pass if __name__ == '__main__': a: A = A() b: B = B(a) 最初から型を付けながら設計・プログラミングする場合は、循環参照を起こさないように留意できます。 しかし、すでに何年も前に作られたライブラリに対して型を新しく付けようとすると、問題が発生します。 これは、型定義をしているモジュールをインポートしようとすると、相互参照になることがあるためです。 Python は型がなくても 実

    PythonにおいてannotationsとTYPE_CHECKINGで循環参照を防ぐ
  • Robust(頑強)なPythonコードの書き方

    以下の書籍を通じて学んだRobustなPythonコードについてまとめる GitHub 1. まとめ Robustnessの必要性 If your software is “good enough,” why add even more complexity? To answer that, consider how often that piece of software will be iterated upon. Delivering software value is typically not a static exercise; it’s rare that a system provides value and is never modified again. Software is ever-evolving by its very nature. The codebase

    Robust(頑強)なPythonコードの書き方
    knj2918
    knj2918 2023/01/31
    Type Annotationsの使い所については色々な考え方があると思うが、必ずしも全ての変数につける必要はない。
  • Pythonと型チェッカー

    2. 自己紹介 ● 森 哲也 – twitter: @t2y ● ポータルサイトの会社 – オブジェクトストレージの開発・運用 ● 業務では Go 言語で開発 – 普段使いのツールやプロトタイピングに Python ● エキスパート Python プログラミング改訂2版 – Python 3.5 ( 翻訳は 3.6) を対象 3. 最近のニュース ● Pyre: Fast Type Checking for Python – 概要から引用 Facebook 社も Instagram 社も大規模に Python を使っています。私たちは Python の表現力、 柔軟性、開発における生産性をとても好んでいます。しかし、数百万行といった大規模コード ベースの保守を考えると、そういった良いところにも陰りがみえてきます。 ● 静的な保証がないと、既存のコードベースを安全に変更することが難しくなり

    Pythonと型チェッカー
  • Python3.6の概要(その2 - 変数アノテーション) - atsuoishimoto's diary

    変数アノテーション PEP 484 -- Type Hintsで導入された型ヒントが、モジュールのグローバル変数や、クラスのインスタンス変数などにも指定できるようになった。PEP 526 -- Syntax for Variable Annotations 変数の型アノテーションは、mypy などではコメントとして指定するようになっていたが、Python3.6以降では、正式なPythonの構文で指定できるようになった。 >>> SPAM:str = 'global spam string' # SPAM は str型グローバル変数 >>> class Ham: ... EGG: int = 100 # EGGはint型クラス変数 この例では、代入文で変数を作成するのと同時に型を宣言しているが、変数の値を指定せずに、変数の型だけでも宣言できる。この場合は代入文では使用せずに、 >>> SPA

    Python3.6の概要(その2 - 変数アノテーション) - atsuoishimoto's diary
  • Python と型アノテーション

    K YamaguchiEngineer, Hose Husband at Tohoku University, Inui-Okazaki Laboratory

    Python と型アノテーション
  • Python の型ヒントと typing と mypy | 民主主義に乾杯

    めちゃくちゃ長いですが 変数や属性に代入されるオブジェクトの型名を書く という、ただそれだけの話です。 # 1. はじめに 型ヒントの書き方については mypy のマニュアルにチートシートがありました。 わかる方は、直接こちらをご参照ください。 Type hints cheat sheet (Python 3) - mypy (opens new window) また型ヒントをいつ使うのか、と言った 「使い分け」 、型ヒントが登場した 「背景」 については、 以下の記事にまとめました。記事の後編にあたります。 動的言語と静的言語ってなに? この記事では主に 「書き方」 と 「使い方」 について、書いていきます。 # 1.1. 型ヒント 変数に代入される型の名前です。 正確には違います。引用先の用語集をご参照ください。

  • 【Java】varを使うべき場合、使うべきではない場合 - Qiita

    概要 Java10から、varを使ったローカル変数の型推論が使えるようになりました。便利である反面、使い方を誤ると可読性が落ちる恐れがあるため、どのような場合に使うべきなのか考えてみました。(Java10が出たのが1年以上前なので今更な話ですが) 動作環境 Java10以降 そもそもvarって何? ローカル変数の宣言時、変数の型を指定する代わりに「var」と書くことで、型の指定を省略することができます。いわゆる型推論です。

    【Java】varを使うべき場合、使うべきではない場合 - Qiita
  • Error codes enabled by default - mypy 1.11.2 documentation

  • [翻訳] PEP 0484 -- 型ヒント (Type Hints) - Qiita

    概要 PEP 3107 は関数アノテーションの構文を導入しましたが、その意味論は意図的に未定義にされていました。今日では静的型解析を目的としたサードパーティの利用法がたくさんあり、コミュニティは標準化された語彙と標準ライブラリ内の基的ツールの恩恵を受けられます。 この PEP は、標準化された定義やツールを提供するための暫定モジュールおよびアノテーションを利用できない状況に対する規約を導入します。 この PEP は依然としてアノテーションの他の利用方法を明示的に阻むものではありません。さらに、この仕様に準拠した場合でも、アノテーションに対する何らかの特別な処理を必要とする (または禁止する) ものでもないことに注意してください。それは PEP 333 が Web フレームワークに行ったことのように、単純により良い協調をもたらすものです。 例えば、次の簡単な関数はその引数と戻り値の型がアノ

    [翻訳] PEP 0484 -- 型ヒント (Type Hints) - Qiita
  • null安全でない言語は、もはやレガシー言語だ - Qiita

    これらは、表中の「リプレース対象言語」に挙げたように、多くのメジャー言語に対する代替手段でもあります。 Java の代わりには Kotlin や Ceylon が、 JavaScript には TypeScript や Flow が、 Objective-C には Swift が、そして PHP には Hack があります。 Python は自身に null 安全 を取り込みました。 Crystal は直接 Ruby と連携して使えるわけではありませんが、 Ruby 風の null 安全 な言語です。 RustC++ の代替を目指して開発され、 Firefox の一部で C++ のコードを置き換えるのに使われています [^100] 。 null が引き起こしてきた数々の問題を考えると、僕は、 null 安全 は GC (やその他の安全なメモリ管理手法)に匹敵するプログラミング言語の進

    null安全でない言語は、もはやレガシー言語だ - Qiita
  • Null安全がすごい - 騒音のない世界 BLOG

    先日社内で事業部のエンジニア全体向けに発表する機会があり、テーマが割と何でもありだったのでNull安全について話しました。発表の中で話せなかったことなども踏まえてブログにもまとめてみようと思います。 まずこのテーマを選んだ理由ですが、背景として 自分がちょうどSwiftでiOSアプリを開発しており、Null安全な言語を利用していた 事業部でNull安全な言語を使っているプロジェクトが他になかった 比較的近年になって広がりを見せている新しい概念である 自分がSwiftを書き始めて一番感動した部分だった 将来的に言語選定の際の判断軸になるなど、具体的なアクションにつながりそう といったところがあり、共有する価値があるのではと考えました。そういうわけなのでできるだけ特定の言語に依存せず、まったく知らない人にその概念を理解してもらい、良さを伝えるということを念頭に置いています。 Null安全とは

    Null安全がすごい - 騒音のない世界 BLOG
  • Null と Optional と関数の戻り値の扱い方パターン - Qiita

    この記事は エムスリー Advent Calendar 2015 の10日目の記事です。 はじめに 最近、かなり古くからある Java6 ベースの巨大サービスを Java8 に移行しました!(パチパチ) lombok や RetroLambda を入れるのは怖くてできなかったのと、一度 Java7 移行に失敗していたため、メンバーの喜びもひとしおです。Java8 向けのコーディングスタイルを決めるミーティングでも、心なしかチームメンバーからワクワク感が感じられます。 早速ラムダや Optional を使いまくりの日々でしたが、しばらくするとソースコードレビューで長々と議論が始まってしまったため、一度、皆でどうしたらよいか話し合うことになりました。 この記事はそこで出てきた関数の戻り値の返し方パターンについてまとめたものです。 余談ですが、Guava の Optional は Java8 の

    Null と Optional と関数の戻り値の扱い方パターン - Qiita
  • Python と型ヒント (Type Hints) - forest book

    先日、Python の静的型チェッカーとして mypy を紹介しました。 mypy で静的型付け Python プログラミング - forest book 私には難しくてまとめきれないため、Guido が参照している漸進的型付け (Gradual Typing) も含め、また別の機会に、、、。 とか言っているうちに1ヶ月ほど経ってしまいました。 そうこうしているうちに PEP のドラフトも出てきたので区切りとしてまとめておきます。一通り調べたことを基にして書いていますが、私の誤解や勘違いもあるでしょうから怪しいところがあったら調べ直してみてください。もちろんツッコミも大歓迎です。 型ヒント (Type Hints) を導入するという提案 PEP 483 - The Theory of Type Hints | Python.org PEP 484 - Type Hints | Python

    Python と型ヒント (Type Hints) - forest book