mypyで使えるProtocolが便利という話の例。 structural subtypingをやる際にgoでもほしいと想うことが多かった例がProtocolでは大丈夫なので良いなーという例(今回はそのうちのひとつだけを紹介)。 Protocol? Protocolをいつ使いたくなるかというと、大抵は複数ある何かを同一視したくなった場合。 例えば以下の様な例があげられる。 クラスの継承関係を無視して同様のふるまいを持つものを同一視したいとき ある値を持つものを同一視したいとき 関数とcallable objectを同一視したいとき 同一視した表現を受け取って再帰的に同一視した表現を返したいとき (self-reference) mypyでの型チェックはnominalなので、こういう構造を利用して同一視したい場合にはstructural subtypingが欲しくなる。これ用のinterfa
mypyのdmypyの実装の仕方を把握する。知りたいことは裏側でのprocessの管理の仕方とクライアントとサーバー間のデータのやり取りの仕方。 準備 $ git clone --depth 1 git@github.com:python/mypy エントリーポイントの把握 インストールされるコマンドの確認(setup.py) setup(name='mypy', ... entry_points={'console_scripts': ['mypy=mypy.__main__:console_entry', 'stubgen=mypy.stubgen:main', 'dmypy=mypy.dmypy:main', ]}, data_files=data_files, ... mypy.dmypy:main()がエントリーポイント実際のファイル。 main.py ほとんどargparseを
Ateam cyma Advent Calendar 2019、20日目です!いよいよ終盤ですね! 本日は 株式会社エイチーム のねぼすけエンジニア @NamedPython がお送りします! さて、タイトルで「お?Rubyに型?」と思ったあなた!そう、ついにRubyにも型の時代がやってこようとしているのです! 今日は、RubyKaigi2019にてStripe社から発表があったオープンソースのRuby向け型チェッカーであるSorbet🍨をふんわり紹介します! どういう経緯・思想で作られたかは、Stripe社のプレゼン: State of Sorbet: A Type Checker for Ruby を見るととても分かりやすいです。ぜんぶ英語ですが聞き取りやすく、自動生成字幕の精度も高いので字幕つけてみるのがおすすめです。 読み方 そるべ って読みます。 カタカナで書くところの「シャー
個人的に今年から毎週読ませていただいている週間Railsウォッチにて、「Sorbet」というGemが紹介されました。 ※アイコンかわゆい。 よければプロダクトにも導入してみたいな〜と思い、軽い気持ちで触ってみました。 この記事なに? 🙄 Sorbetとはなんぞや? 🤔 本編(導入〜動作確認) 環境 導入 sorbetの初期化 sorbet配下に生成されるrbiファイルについて 型チェックの処理を記述 動作確認 型チェックを実行 rails s→動作確認 実行時エラーを無視するには? おわり 参考記事 所感 この記事なに? 🙄 この記事では、Gem「Sorbet」をRuby on Rails環境に導入、軽く動作確認した際の手順と自分なりに咀嚼した内容を記載します。 もしよろしければ、一読・参考にしていただければと思います。 🙇♂️ Sorbetとはなんぞや? 🤔 Sorbetとは
はじめにこんにちは! フィフス・フロアの開発チームリーダーのnotozekiです。 フィフス・フロアでは、Rubyを長年活用しています。 たとえば弊社プロダクトのうちのこまとめやぷちのこメーカーはいずれもバックエンドはRuby(Rails)で実装されていますし、そのほかの開発実績もRubyを利用したものが数多くあります。 ところで、このところRubyの周りでは「型」の話題がホットですね。 現在開発が進められているRuby3では静的型チェッカーが導入される予定ですし、今年の6月にはRubyの型チェッカーSorbetがオープンソース化されました。 フィフス・フロアにはRubyを活用するプロダクトが多いことと、型は開発(特にチーム開発)を円滑に進めるのに役立つ機能なので、この話題にはとても注目しています。 この記事では、簡単なRailsアプリケーションにSorbetを導入して、「Rubyに型があ
Learn Languages 2018 というイベントで、最近のPythonについて発表してきました。 (一昨年まではLightweight LanguageでLLイベントだったのが、去年からLearn Languagesイベントになったらしい!) Python update in 2018 #ll2018jp from cocodrips www.slideshare.net せっかくなのでポイントだけでも書き起こして見ようと思います。 ここ1~2年で便利になった機能 1. The pathlib module (PEP 428) pathlibはファイルパスに関するモジュールで3.4で導入されました。 ただ、build-inのopenやos.pathモジュールがpathlib.Pathオブジェクトを受け入れられるようになったのがPython3.6(PEP519)となっています。 3.
ちょっとだけ背景説明 なんでそんなことがしたくなったかというと、やっぱり定義を記述したらおしまいでいられる世界が理想なので。そして特定の領域(e.g. OpenAPI, GraphQL, Protcol Buffers, database定義, ...)に属さないような中立的な表現が欲しくなったので。 この記事は一言で言うならpythonのクラスの各フィールドにどうやってメタデータを持たせようか?ということに対するメモです。 どうしてpython? 現状よく触るのがgoとpythonなのですが、goは直和型が素直に記述できないので1。 普及している言語の中ではTypeScriptの方がゆるふわな表現を良い感じに型パズルしやすいとは想うのですが、literal typeやtyped dictやprotocolなどそこそこpythonでも悪くはない形で型チェックが可能になってきたかなーというこ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く