ブックマーク / qiita.com/shibukawa (31)

  • Goの準々標準ライブラリの探索 - Qiita

    フューチャーアドベントカレンダー21日目のエントリーです。全25話中、神回が25回あったウルトラマンZが終わってしまいましたね。全日人のうちの1億2000万人ほどがウルトラマンZロスでうちひしがれているころかと思います。 Goでは、Goをインストールしたときに一緒にインストールされるライブラリを「標準ライブラリ」と呼びます。また、golang.org/xなパッケージ群は準標準ライブラリと呼ばれます。準標準ライブラリには多彩なライブラリが含まれます。今ではもう家に入ってしまって、後方互換性のためだけに残っているパッケージも一部ありますが・・・ これ以外にも https://github.com/golang/ にはたくさんパッケージがあります。一部はgolang/xのものも入っているのですが、それ以外のものをここでは仮に準々標準ライブラリと呼ぶことにします。 golang.org/xのも

    Goの準々標準ライブラリの探索 - Qiita
  • Go 1.13時代のエラー実装者のお作法 - Qiita

    Goアドベントカレンダーその2の3日目のエントリーです。 Goではエラー処理の方法としてはプリミティブな方法しか提供しておらず、他の言語のユーザーからやいのやいの言われてきました。Go2でそれを改善するぞからプロポーザル募集でいろいろ意見を募っては二転三転みたいな感じで、Go 1.13ではだいぶおとなしい感じに機能拡張されました。基的な方向性としてはgithub.com/pkg/errorsから少し機能を取り込んだ感じです。 すでに、数多くのエントリーやらプレゼンテーションやらでGo 1.13の利用者視点でのerrorsの変更点については触れられてきましたので詳しくはそちらをご覧ください。サマリーとしては下請けのパッケージで出てきた詳細なエラーをラップして扱うための便利な機構がいろいろ追加された感じです。 これらでは主にアプリケーションコードの実装者というかライブラリの利用者向けの説明が

    Go 1.13時代のエラー実装者のお作法 - Qiita
  • 2019年末版:Chromebookを開発に使う - Qiita

    PySpaアドベントカレンダーのエントリーです。昨日はYesterdayでした。今日はTodayです。 ずっと開発や普段使いで使えるChromebookが欲しいと思っていました。勉強会の発表で使ったりするので、きちんと技適が通ったやつで、性能がまとも(以前ATOMベースのマシンにLinux入れたけど遅くて使う気になれなかったので)なやつを待ち望んでいました。 7月ぐらいからHPがChromebookを販売開始してくれました。気づいてから申し込んだものの、予想外に受注があったのか、納期が伸びに伸びて1ヶ月半近くかかりましたが、とても良いものだったので、今ではすっかりメインで使っています。 バージョンによって状況はまた変わってくるかもしれないので、タイトルに日時を入れました。これを書いた時点でのバージョンは78.0.3904.106(Official Build)(64 ビット)でした。 日

    2019年末版:Chromebookを開発に使う - Qiita
  • 事業会社とOSS - Qiita

    最近、社内でよく話をする内容についてまとめました。 企業がOSS化するといろいろメリットがあると思っていて、社内でもそこのコンセンサスはうちの技術横断部門のメンバー間では取れていたりするのですが、自社以外の人とかと話をする時もあるので、いろいろまとめておきます。 なお、この文章では業をOSSにしつつビジネスを回そうみたいなElasticsearchとかMongoDBとかMySQLみたいな話題はとりあげず、業が別にある会社がOSS化する、という部分に特化した話です。 9/13に追記 よく言われるメリットとデメリット メリットは、公開することで開発が自然と進み、コスト削減になる。一方でノウハウの流出などのデメリットがある、みたいなトレードオフ、という理解をしている人が多いようです。 コストは削減にならない OSS化したら多くの人に使ってもらいたいですよね?というのは考えるわけですが、その「

    事業会社とOSS - Qiita
  • FacebookのHermesというJSエンジンがエロい - Qiita

    FacebookがHermesという組み込みのJSエンジンを公開したようです。 ReactNative用の組み込み用のJSエンジン(最新版だとオプション切り替えで使えるっぽい) MITライセンス プロプラなものとの組み合わせが発生しうる組み込みにおいては正義しかない ES2015をサポート(予定) 現時点ではクラスとかlet/constのブロックスコープは実装途中 Map/Setとかの組み込みクラス系は実装済み サイズの小ささをうたった処理系はES2015への対応はまだまだなのが多いので(Duktapeとか)良い 事前にJavaScriptのソースコードをパースして中間表現(LLVM IRをそのまま利用?)にしておいてロードする モバイルのCPUやバッテリー、メモリーにも優しい なお、エロいというのは強く感情が揺さぶられた結果が出てきたワードであってセクシャルな内容は一切含まれておりません

    FacebookのHermesというJSエンジンがエロい - Qiita
  • 2019年版: JavaScriptのループの考察 - Qiita

    JavaScript いつの間にかずいぶん違う言語になったなぁ、と思うけど、 for(let i = 0; i < 100; i++) { /.../ } これはまだこう書くしかないのかな?const使えない? — Takuo Kihira (@tkihira) June 6, 2019 このツイートを起点に、パフォーマンスの話が出て、紀平さんも計測されていたんですが自分でも思うところがあって計測して考察してみました。 実測前の僕の予想(というか過去の経験)は 普通のforが最速 for-inは速度以前に使ってはいけない for-ofとforEachは関数呼び出しがループごとに挟まるのでどちらも遅いが同じ水準 for ofは言語標準なので最適化が行われる期待! でした。さて、結果はいかに? それぞれのループの解説 伝統的なfor 伝統的なループが一番軽いというのはみんなが認めるところです。

    2019年版: JavaScriptのループの考察 - Qiita
  • JavaScript/TypeScriptの例外ハンドリング戦略を考える - Qiita

    PySpa統合思念体です。あと、 @yosuke_furukawa にも協力いただきました。 基的に、あまりエラーの種別を細かく判定してあげることはJavaScriptでは今までやってこなかったのですが、ちょっとしたメタデータを乗っけてあげるとか(例えばリトライ回数)、何か凝ったことをしたくなったらこういう方針でやればいいのでは、という試行錯誤録です。 エラーと例外の区別が必要か この手の話になると、エラーと例外の違いとか、こっちはハンドリングするもの、こっちはOSにそのまま流すものとかいろんな議論が出てきます。このエントリーではエラーも例外も差をつけずに、全部例外とひっくるめて説明します。 例外というのはすべて、何かしらのリカバリーを考える必要があります。 ちょっとしたネットワークのエラーなので、3回ぐらいはリトライしてみる 原因: ネットワークエラー リカバリー: リトライ サーバー

    JavaScript/TypeScriptの例外ハンドリング戦略を考える - Qiita
  • マイクロサービスほどじゃないけどウェブサービスを分割開発したい人向けDocker設定を集めるスレ - Qiita

    Futureアドベントカレンダー6日目です。昨日は @shun_shushu さんでした。 マイクロサービスまではいかなくても、gRPCなり、Swaggerなりを使って、リッチなSPAのフロントエンドと、いくつかのプロセスに分割されたバックエンドでサービスを開発したい、というニーズはあると思いますので、今までやってきた開発の反省・良かったところを踏まえて、次やるなら絶対にこうする・実際にこうし始めた!というDocker活用案です。 フロント、バックエンドのサービスを種類ごとに書いています。好きなフロントエンドと、好きなバックエンドのレシピを組み合わせて、オリジナルのdocker-compose.ymlを作る、という感じで読んでいただけるように書いています。対象言語とかも増やしたいので、この記事自体、検証結果を受けてどんどん変わっていく予定です。 ソースコードは次のリポジトリに置いておきます

    マイクロサービスほどじゃないけどウェブサービスを分割開発したい人向けDocker設定を集めるスレ - Qiita
  • 多くの人はまだHTTP/3を無理して学ぶ必要はない - Qiita

    フューチャーアドベントカレンダー2018のピンチヒッターです。ワイキキの海を見下ろすホテルからこんばんわ。 QUICがリブランドされてHTTP/3になったというのはそれなりに大きな話題になりました。これを機に学ぼうという人も多いと思いますが、個人的には費用対効果を考えると、まだ早いのではないかと思います。HTTP/2のときともまた違ってそんな学んだことが役に立つ人も多くないのではないかな、と思います。 HTTP/2を学ぶべきだがHTTP/3を(あえて)学ぶ必要はないと思う理由 HTTP/1.1からHTTP/2はほとんどの部分が同じです。フレーム単位で送受信する方式になって、メールとかネットニュースと同じようなテキストベースのプロトコルから変わったりという「表現のシンタックス」上の変更が中心でしたが、その上で表現する、たとえばクッキーの意味だとか、フォームなどの情報をどのようにシリアライズし

    多くの人はまだHTTP/3を無理して学ぶ必要はない - Qiita
  • 2019年版: 脱Babel!フロント/JS開発をTypeScriptに移行するための環境整備マニュアル - Qiita

    2019年版: 脱Babel!フロント/JS開発をTypeScriptに移行するための環境整備マニュアル環境構築TypeScriptライブラリReact TL;DR いろいろ書いていますが、一番書きたかったのは最初のライブラリと最後のReact Componentのプロジェクトの作り方ですね。ぱっとnpm installして、最初から型定義ファイルが入っていて、@typesを持っているライブラリを探したり、自分で.d.tsを書いたりしなくてもいい世界がやってきて欲しいな、という気持ちから書いています。 ここで紹介したTypeScript環境構築はすべて、自分用にYeomanのテンプレートとして作成したので、以下のジェネレータをインストールして選択したらそれでおしまいです。 @shibukawa/typescript (npmには公開していないので、checkoutしてビルドしてインストール

    2019年版: 脱Babel!フロント/JS開発をTypeScriptに移行するための環境整備マニュアル - Qiita
  • チョットできるGoプログラマーになるための詳解GoDoc - Qiita

    上の2つがCLIで、下の2つがブラウザです。歴史的な経緯を見てみましょう。 〜1.1: go docはバンドルされているツールで、ソースもgo体に同梱 1.2: go docは別のリポジトリにわけられてgodocになり、go体から外れた 1.3: godocで-analysisオプションが追加 1.5: 新しい"go doc"コマンドがgo体に同梱 1.11: godocがウェブだけになるため、go docを使えというアナウンスが出るように 1.12: godocが-httpだけをサポートしてCLIの機能は削除予定 1.13: godocのwebサーバーが同梱されなくなって手動でのインストールが必要に 1.13~: 既存のgodoc.orgから、go modのプロキシサーバーの情報をもとにドキュメントをホスティングするpkg.go.devが運用開始 わかりましたか?よくわかりませんよ

    チョットできるGoプログラマーになるための詳解GoDoc - Qiita
  • 2018年のJavaScriptのコードフォーマッター事情 - Qiita

    2020/01/23追記: これはすでに古い情報です。ESLintとPrettierは同時に使わないのが今の推奨設定です。最新の情報は以下のところにあります。 https://future-architect.github.io/typescript-guide/baseenv.html 以下は過去の情報です PySpa統合思念体です。 go fmt便利ですよね。設定なしで言語が定めるルールで一発でやってくれるので良いですね。で、JavaScriptでは歴史的経緯もあって、フォーマットの流派はいろいろあります。 インデントはスペース2/4、ハードタブ 文字列にはシングルクオート使う派(英語キーボードだとシフトキー押さなくていい) 末尾のセミコロンは必須・省略 そのためカスタマイズ可能なフォーマッターが必要となります。カスタマイズの柔軟性や歴史的経緯や新しい文法への対応などで、いくつかのツー

    2018年のJavaScriptのコードフォーマッター事情 - Qiita
  • Goのリバースプロキシーでレスポンスを書き換える - Qiita

    フューチャーアーキテクトアドベントカレンダーの5日目の サーバーサイドレンダリングの代替としてPrerenderを試してみたの最後で、「Go実装について 長くなったので説明は省略します。だれかがGoアドベントカレンダーを落としたら書くかも?」と書いていたら、早速落とす人がいたらしいので、ハイジャックします。 リバースプロキシーはnet/http/httputilパッケージの ReverseProxyを使えば簡単につくれますよ、という説明はよく見かけるのですが、レスポンスを書き換える方法はまとまった情報がなかったので紹介します。 リクエストを書き換える go言語でリバースプロキシというブログのエントリーにある通りです。 向き先を書き換える、Directorというフック関数を設定してあげることで、向き先を変えられます。なお、このエントリーにあるように、この関数の中でrequestを書き換えるこ

    Goのリバースプロキシーでレスポンスを書き換える - Qiita
  • 最小のNode.jsのDockerイメージを目指すスレ - Qiita

    フューチャーアーキテクトアドベントカレンダーに投稿したサーバーサイドレンダリングの代替としてPrerenderを試してみたに引き続き、JS系?ウェブ系?なエントリーです。 ECSとかEKSとか出てきて、コンテナを使うと、一つの物理ホストで、複数のコンテナをさばいて効率を上げる、というのが簡単にできるようになってきました。そのため、Node.jsのアプリもDocker化して配りたいですよね? 次のスライドを見ると、サイズが小さいほうが良いとされています。中には静的リンクが云々みたいなトリッキーな技もありますが、そこまでがんばらない&黒魔術にならない程度でがんばる方向でサイズを小さくしてみたいと思います。 お前のDockerイメージはまだ重い💢💢💢 by stormcat24 STEP1: Alpine + 標準ライブラリのみ 小さいというAlpine Linuxを使ってみます。クールな

    最小のNode.jsのDockerイメージを目指すスレ - Qiita
  • Dockerで最小のGoのイメージを作成する(cgo編) - Qiita

    「最小のNode.jsのDockerイメージを目指すスレ」、「JavaでもDockerでマルチステージビルド」というエントリーでは、Node.jsとJavaを使ったアプリケーションのイメージをなるべく小さくするトライアルをしました。 今度はGoでやってみます。ただし、Pure Goで最小というのはすでに方法があって、scratchという何も含まれないイメージを元に、静的リンクしたバイナリを配置するという方法です。 Building Minimal Docker Containers for Go Applications Goを使う場合に、一部cgoで使われたパッケージを利用したいこともあるでしょうし、雑にコマンドラインを利用することもあるだろう、ということで、今回も、できることを減らさずに(やりたいことにしたがって細かく作戦を微調整する必要がない)、なるべく小さく、という方針でいきたいと

    Dockerで最小のGoのイメージを作成する(cgo編) - Qiita
  • GraphQLは90%のウェブサービス開発者にはまだ時期尚早ではないか - Qiita

    PySpa統合思念体です。チャットで話をしたことのまとめです。何人かで雑に話をしたことのまとめで、特定の誰かの発言というわけではなく、一種の怪文書です。 さて、GraphQLが世間を賑わせ始めています。Facebookが開発し、GitHubも機能提供をし始めました。GraphQLはRESTの未来か?みたいな論調もありますが、新しいものが出てくると既存のものをサンドバックにして「まだそんな古いの使ってやがるのかよwwwww」みたいな煽りをするのはもはやウェブ界隈の風物詩になっていますが、そういう信者発言をして「ああ、あいつまた踊らされてるな」「あいつ技術を見る目がないな」みたいに思われないように、少し冷静にGraphQLの立ち位置や、今後予想される流れについて考えてみます。 LSUDsとSSKDs WebAPI The Good Partsでも紹介されていた概念として、Netflix社のAP

    GraphQLは90%のウェブサービス開発者にはまだ時期尚早ではないか - Qiita
  • printデバッグについて - Qiita

    初心者が多用するデバッグ法というと、printデバッグです。誰に教わることもなく、自然と自己発見して使い続けるケースが多い気がしています。 プログラマーの三大美徳には怠惰という文言があります。ただ、この怠惰というのは繰り返し作業をやめるために、アクティブな行動を伴うので、別なポジティブなラベリングがされるべきだし、個人的にはちょっと違和感があります。低きに流れて部分最適化されてしまうprintデバッグこそ愛すべき怠惰な気がしています。 UI/UXというと、すごい意識高い感じだけど、じつは意識の低さが大事だと思っていて、低きに流れた先が最短ルートで目的というのが大事なんじゃないかと。何かを探すときはまずスタートボタン(Windows95)。困ったらホームボタン(iOS)。OSごとのUIガイドラインに従うのも、そのユーザーにとってすでに常識となっている使い方に対応することで、ユーザーに新しい学

    printデバッグについて - Qiita
  • JavaScriptはなぜトレンドが毎年変わると思われていたのか - Qiita

    JavaScriptはなぜトレンドが毎年変わると思われていたのか JavaScriptのエンジニャーは口を開くたびに出てくるツール名が違う、いつも環境設定をしている、みたいな話をよく聞きます。実際、それを揶揄するようなエントリーが人気だったりします。 とはいえ、JavaScriptを実際に使い込んでいる人は別にそんなに大きな変化だと思っていない節があって、台風は外周部ほど風速が速い、みたいな印象を感じます。 カンブリア紀のJavaScript ウェブサイトをパカパカ動かすための言語でした。DHTMLです。FireBugが出る前のJavaScriptを開発していた人類は、念力デバッグを駆使していました。あるいはalert()。 三畳紀のJavaScript prototype.js、jQuery、Closure Compiler、YUI、mochikit、Ext.jsなどの時代。JavaSc

    JavaScriptはなぜトレンドが毎年変わると思われていたのか - Qiita
  • サーバーサイドレンダリング不要論 - Qiita

    サーバーサイドレンダリング、Isomorphic、Universal JavaScriptなどの言葉をよく見かけます。なるほどね、良さそうだね、外部公開するサービスを書くことがあったら挑戦してみたいね、Mithrilにもisomorphic-mithrilってのをがんばっている人がいるし、みたいなことを漠然と思っていたのですが、最近ASCII.jpのシステムコールプログラミングの連載を書いていて、あらためてHTTPの仕様を見返してみて、逆にサーバーサイドレンダリングをしない方がいいのではないか、と思い始めました。 追記(23:30): サーバーサイドレンダリングと書いていますがUniversal JavaScriptみたいな凝ったビューの更新の意味です。 サーバーサイドレンダリングの欠点 サーバーサイドレンダリングのメリットとしてあげられるのは次の2点です。 検索エンジンのクローラー向け

    サーバーサイドレンダリング不要論 - Qiita
  • pyenvが必要かどうかフローチャート - Qiita

    pyspaの統合思念体の渋川です。 「pyenv使いましょう!」系の記事、全部ゴミ — Yoshifumi YAMAGUCHI (@ymotongpoo) September 29, 2016 これはpyenvがダメではなくて、pyenvをとりあえずインストールしておきましょう記事がダメという意味だそうです。すでにとんぷーが5年前にこの問題について書いています。これを読んで分かる人には不要です。 この記事では「便利」と「必要」は分けて考えています。後者にフォーカスしています。 前提知識 Environment Isolation Tool(環境分離ツール)というカテゴリの開発補助ツールがあります。pip install Sphinxとか書いたら、ライブラリはグローバル空間に入っちゃいます。複数バージョン入れられません。そんなときに使うのが、この環境分離ツールです。最近はいろいろな言語がこれ

    pyenvが必要かどうかフローチャート - Qiita