タグ

ブックマーク / qiita.com (1,248)

  • 成果を出すプログラマーが習得している「コードを書かない技術」 - Qiita

    はじめに 私がプログラマーとして働き始めて1年半がたちました。幸いなことに環境に恵まれ、私の身の回りには成果を出し続ける優秀なプログラマーがたくさんいます。 1年半彼らの仕事を観察して気づいたことは、成果を出すプログラマーは共通して 「コードを書かない努力をしている」 ということでした。 この記事では彼らが業務で行なっている、 「コードを書かないための思考、習慣」 についてまとめていきたいと思います。 前提 多くの人は「プログラマーはコードを書くことが仕事」だと考えています。この考えに基づくと、プログラマーが「コードを書かない努力をする」ということが、ひどくおかしなことに思えてしまうかもしれません。 そこでまず前提として3つの誤解を解くところから始めましょう。 [誤解1] プログラマー仕事は「コードを書くこと」である 私たちプログラマーの多くは会社から給料をもらいながらコードを書いていま

    成果を出すプログラマーが習得している「コードを書かない技術」 - Qiita
    syuu256
    syuu256 2022/10/13
  • AWSで2022に打破されたアンチパターン - Qiita

    TLDR AWS2022年の1月から9月までのアップデートが多数ありました。私(と、何人かのサポーター)が考えた、この期間内の打破されたアンチパターンを紹介します。32項目ありました! アンチパターンって何よ? 「AWSでこうしたい」という思いからAWSを使っていく方は多いはずです。 そのなかで、数多くのAWS使いこなしの工夫が生まれ、成功例が生まれていきました。AWSのサービスとして提供されていないことを工夫でなんとかした、そんな成功例たち。それが「秘伝のタレ」となり、「さわってはいけないもの」、あるいは「ロストテクノロジー」として、封をしたパターンとなっていないでしょうか? 動作やプロセス、構造について、当初は妥当であったのに、最終的に悪い結果が繰り返されるパターンであり、リファクタリングするための方法が存在するパターンこそがアンチパターンです。サービスアップデートされれば、いままで

    AWSで2022に打破されたアンチパターン - Qiita
    syuu256
    syuu256 2022/10/09
  • Deno のめっちゃ難しいバグを修正した - Qiita

    2022年4月、Deno に以下のバグが報告されました。 fetch API を使って 300KB ぐらいあるファイルをアップロードすると、一定確率でアップロードされたファイルが壊れるというバグの報告です。 報告者によれば、1.20.6 まではバグは発生しておらず、1.21.0 から発生するようになったという事です。1.20.6 の次のリリースが 1.21.0 なので、パッチバージョン1個分まで、バグの発生時期が特定されている状態です。 fetch 周りは自分はほぼ実装していないので「担当範囲ではない」感覚だったので、普通にスルーしていました。 自分に限らず、Deno Land コアチームの誰もこの issue にピンと来る人が居なかったようで、stale ボット (数ヶ月進捗の無い issue を自動的にクローズしようとするボット) に2回もクローズされかけていました。Deno の st

    Deno のめっちゃ難しいバグを修正した - Qiita
    syuu256
    syuu256 2022/10/04
  • DynamoDBの難しさについて - Qiita

    はじめに DynamoDBは上手く使えば非常に強力なDBMSですがRDBとの違いは大きく、「RDBの代わりにDynamoDBを使おう!」と深く考えずに提案/採用することが難しいことから、その理由についてみていきます。 DynaomoDBの難しさ DynamoDBの利点と表裏一体である、DynaomDBの主要な難しさについて順番に見ていきます。 1. 提供されているクエリモデルでできることが非常に限定されている DynamoDBは次の公式サイトに記載がある通り、どんな規模でも数msの一定のパフォーマンスを発揮でき、無尽蔵にスケールできるという特徴があります。 Fast, flexible NoSQL database service for single-digit millisecond performance at any scale この特性を上手く活用すると次の実例のように高可用性、

    DynamoDBの難しさについて - Qiita
    syuu256
    syuu256 2022/10/04
  • 初めてECS+Digdag+Embulkでデータ分析基盤を作った話 - Qiita

    こんにちは、theLetterの荻田です。 データ分析基盤を作る機会があり、拡張のしやすさ・現状のデータ量や仕様に合うか・予算問題などを考えた結果どう判断したのかという過程と実装を紹介します。 今後運用する上で出てきた改善点や課題などは半年後くらいに振り返りの記事を書こうと思います。 気になることがあれば気軽にDM(@kai_ogita)してください 一緒に技術選定から実装までゴリゴリやりたい人募集中です! theLetter採用ページ About me サーバーサイドエンジニアの人 TreasureDataやBigqueryは当に少し触ったことある ETLやデータ分析基盤などの知識は0 GCPよりAWSに触れてきた About theLetter theLetter はニュースレターメディアを誰もがつくれるプラットフォームで、現在はリリース数ヶ月で読者数15 万人を突破しており、初期フ

    初めてECS+Digdag+Embulkでデータ分析基盤を作った話 - Qiita
    syuu256
    syuu256 2022/09/29
  • Zig の文書読んで所感を記す - Qiita

    これは何? Zig を学ぼうと 公式文書 (0.91時点) を読んでいるんだけど、読みながら思ったことを記していく。 続編は Zig の文書読んで所感を記す #2 へ。 その前に Zig への言及が最近多いなぁ、でもシンプルな言語だって言うしまあどうでもいいかなぁ、ぐらいの気持ちでいたんだけど、ZigはCMakeの代替となるか を読んで、俄然興味が湧いてきて、じゃあ読んでみるか、と思った。 数値 i32 とか u16 のような名前で型が提供されている。 整数は 128bit まである。そればかりか、 3bit とか 53bit のような中途半端な幅の整数も使える模様。面白い。 さらに。何に使うのかわかってないけど、 i0 u0 のようなゼロビットの整数もある。 ちなみに0ビット整数には 0 が代入できる。 u1 は、 0 または 1。 i1 は、 0 または -1 が代入可能。 浮動小数点

    Zig の文書読んで所感を記す - Qiita
    syuu256
    syuu256 2022/08/23
  • VSCodeでPython書いてる人はとりあえずこれやっとけ〜 - Qiita

    はじめに Pythonはコードが汚くなりがち(個人的にそう思う) そんなPythonくんを快適に書くための設定を紹介します。 拡張機能編 ここでは Pythonを書きやすくするため の拡張機能を紹介していきます。 1. Error Lens before 「コード書いたけど、なんか波線出てるよ💦」 記述に問題があった場合、デフォルトでは波線が表示されるだけ。。。 after Error Lensくんを入れることによって 波線だけでなくエディタに直接表示される。 はい、有能〜 2. indent-rainbow before Pythonくんは インデントでスコープを認識している。 for の f から下に線が伸びてるけど、ちょっと見にくいなぁ after 色が付いてちょっと見やすくなった! 3. Trailing Space before 一見、普通に見えるコード after 末尾にある

    VSCodeでPython書いてる人はとりあえずこれやっとけ〜 - Qiita
    syuu256
    syuu256 2022/08/04
  • オブジェクト指向プログラミングは終わった カプセル化が悪い(感想戦) - Qiita

    が(良くも悪くも)注目頂き、その観測で思ったことのメモです。1年後の自分用です! もっかい言いたいこと再考のポエムです。 概要 関数型には意図的に触れたくなかった 継承や再利用性への懐疑の共通認識 抽象化戦略開発戦略で補う話 タイトルは釣り 抽象化という言葉のふわっと感 カプセル化が問題 関数型言語には意図的に触れたくなかった ポリモーフィズムのくだりで、関数型のご指摘が多かったのですが、あえて直接は触れたくありませんでした。これは、オブジェクト指向 vs 関数型にしたくなかったからです。(結果、Rust/Goに被弾させました) なぜかと言えば、オブジェクト指向を(結果として)衰退させたのは、あくまでも 開発手法の変化 や設計論の精錬が主軸だと認識しています。 不確実性に適応する上で、継承やカプセル化による状態隠匿という戦略が、良い筋に動かず、オブジェクト指向なりに変化を遂げた結果だと考え

    オブジェクト指向プログラミングは終わった カプセル化が悪い(感想戦) - Qiita
    syuu256
    syuu256 2022/08/03
  • 【ドメイン駆動設計】なぜ値オブジェクトそのものを比較できるようにしなければならないのか? - Qiita

    値オブジェクトは以下の3つの要素を持ったオブジェクトだとされている。 1)不変である(一度インスタンスが作られたら、それが保有する属性の値は変化してはいけない) 2)交換が可能である(再代入=交換によってのみ値を変更することができる) 3)等価性によって比較される このうち、3)は絶対に必要なんだろうか? 例えば、Date型にかなり近い、YearMonth(年と月をもったオブジェクト)を定義してみよう。 class YearMonth attr_reader :date def initialize(year, month) @date = Date.new(year, month, 1) end end 一応値オブジェクトとして定義しているものの、「日付が1日のDate型オブジェクト」」としても外部から認識できる。なら、YearMonthそのものを比較できなくても、保有しているDate型

    【ドメイン駆動設計】なぜ値オブジェクトそのものを比較できるようにしなければならないのか? - Qiita
    syuu256
    syuu256 2022/08/01
  • オブジェクト指向プログラミングは終わった - Qiita

    追記: 振り返りを書いてみました~ -- ここから元記事 別題: 抽象化って言葉もう。。 社内の記事にて、オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES) | アラン・シャロウェイ, ジェームズ・R・トロット, 村上 雅章 | | 通販 | Amazonを紹介してもらいました。 取り上げられた、共通性/可変性分析の解説を見て、はっと思うことがありポエムを仕立てました。 共通性/可変性分析 共通性/可変性分析については、書籍を読むかググって頂けると良いですが、社内記事が良かったので引用させて頂きます。 問題領域にある概念を見つける(共通性の分析) その流動的要素を洗い出す(可変性の分析) 流動的要素を見ながら、その概念が持つ責務を果たすための抽象的側面(≒インタフェース)を導く 各流動的要素の実装上の観点から、インタフェースが適切かどうかを見極め、補正する オ

    オブジェクト指向プログラミングは終わった - Qiita
    syuu256
    syuu256 2022/07/31
  • 【2022年版ベストプラクティス】AWS IAMまとめ - Qiita

    はじめに AWSのアクセス制御サービスであるIAMについて、2022年7月時点での機能および使用法を、初学者でも理解しやすいことを心掛けてまとめました。 IAMをよく分からないまま適当に設定するとセキュリティ的にまずいので、これを機に設定を見直して頂き、セキュリティレベル向上に貢献できれば幸いです。 特に、後述するIAM設定手順は、AWSに登録して最初に実施すべき設定に相当するため、セキュリティに興味がなくとも一度は実施することをお勧めします。 また公式のベストプラクティスは丁寧にまとめたつもりなので、初学者以外でもAWSセキュリティ確保に興味がある方は、ぜひご一読頂けると嬉しいです。 IAMとは 「Identity and Access Management」の略です。 公式ドキュメントによると、IAMは「誰」が「どのAWSのサービスやリソース」に「どのような条件」でアクセスできるかを

    【2022年版ベストプラクティス】AWS IAMまとめ - Qiita
    syuu256
    syuu256 2022/07/26
  • サブスクリプション型のビジネスなら見ておくべき5つの超重要チャート - Qiita

    サブスクリプション型のビジネス、またはソフトウェアの世界ではSaaSと言われたりする、顧客が製品やサービスを継続的に利用するために購読するタイプのビジネスは一般的な売り切り型のビジネスとは収益構造が異なるため、ビジネスを成長させるために見るべき指標やチャートも違ってきます。 よくあるのは、この違いを意識せずに「売り切り型」のビジネスでよく使われる指標やチャートをモニターしていたがために、ビジネスの成長のきっかけをつかめなかったり、成長していると思っていたビジネスが急に傾き始めたり、成長の見通しを社内で共有、または外部の投資家にうまく説明できなかったり、という問題です。 そこで、こちらの記事ではサブスクリプション型のビジネスを成長させるために欠かせない5つのチャートを使った簡単な分析手法を紹介させていただきます。 1. コホート分析(生存分析) コホート分析(生存分析) は顧客のチャーンやリ

    サブスクリプション型のビジネスなら見ておくべき5つの超重要チャート - Qiita
    syuu256
    syuu256 2022/07/19
  • 名著「UNIXという考え方 - UNIX哲学」は本当に名著なのか? 〜 著者のガンカーズは何者なのかとことん調べてみた - Qiita

    補足 1975: トンプソンはベル研を一時休職し、母校のカリフォルニア大学バークレー校に Version 6 Unix をインストールする作業を手伝う。これは後に BSD Unix として配布される。 1984-1998: ガンカーズが DEC でプリンシパル・ソフトウェア・エンジニアを務めた時期 ガンカーズは DEC の Unix Engineering Group (UEG) に所属 いつから DEC に勤めていたのかは不明 P63 より「小さな会社で Version 7 Unix を使っていた」ので 1979 年よりも後 V7M の開発には関わってなさそう おそらく 1980-1984 の間に DEC に入社したと思われる ガンカーズが「UNIX の考え方」についてのはないだろうか?と考えたのは 1991 年 1988: POSIX.1 標準化(POSIX.2 は 1992 年)

    名著「UNIXという考え方 - UNIX哲学」は本当に名著なのか? 〜 著者のガンカーズは何者なのかとことん調べてみた - Qiita
    syuu256
    syuu256 2022/07/12
  • 【懺悔】稼働中の本番DBで殆どのテーブルをtruncateしてしまった話 - Qiita

    これは8年ほど前のある日のことです。 番環境のテーブルを淡々とtruncateし続けたことがあります。 リリース前などではなく、稼働中のサービスでした。 思い出せる限り、私のエンジニア歴において最大の「やらかし」です。 「そんなミスありえないだろ…」「どんだけ迂闊なんだよ」という感想を持たれる方もいらっしゃるかと思います。 むしろ、それが正常だと思います。しかし、当時の私はやってしまった。 ただ、それでエンジニアをやめるようなこともなく、現在では人を指導する機会も増えました。 どうしたらそんな事が起きるのか? その後、どのような対応が行われたのか? 教訓はなにか? この機に記させていただきたいと思います。 量産現場の社二病社員 当時働いていた職場では、「同じような機能を持ったスマートフォンアプリ」を量産する部署がありました。 私は、そこに配属されました。 当時、新卒2年目。社二病真っ只中

    【懺悔】稼働中の本番DBで殆どのテーブルをtruncateしてしまった話 - Qiita
    syuu256
    syuu256 2022/07/06
  • WHERE 条件のフィールドを UPDATE するのって,明示的にロックしてなくても安全?全パターン調べてみました! - Qiita

    WHERE 条件のフィールドを UPDATE するのって,明示的にロックしてなくても安全?全パターン調べてみました!MySQLSQLPostgreSQLDatabaseQiitaEngineerFesta2022 TL; DR MySQL/Postgres とも, MVCC アーキテクチャの恩恵で, SELECT と UPDATE は基的には競合しない。 単一レコードのシンプルな UPDATE でも排他ロックされ,排他ロック中のレコードへの UPDATE での変更操作は トランザクション分離レベルによらず ブロックされる。UPDATE 文に含まれる WHERE 句での検索もブロックされ,これはブロックされない SELECT による検索とは別扱いになる。 但し UPDATE 文の WHERE 句上で,更新対象をサブクエリの SELECT から自己参照している場合は例外。トランザクション分離

    WHERE 条件のフィールドを UPDATE するのって,明示的にロックしてなくても安全?全パターン調べてみました! - Qiita
    syuu256
    syuu256 2022/07/04
  • リリース手法多すぎワロタァ B/G、カナリア、機能フラグ、ダークローンチ、A/Bテスト、、など - Qiita

    この記事でCloudWatch Evidentlyについて調べていると、「機能フラグ」や「A/Bテスト」などインフラエンジニアには若干聞き慣れないリリース用語が出てきました。 アジャイル開発やCI/CDの台頭に伴い多数出現したこれらのリリース戦略用語をまとめて整理してみることにします。 インフラエンジニアやSREと呼ばれるロールの方々も、リリース戦略を知っておくとCI/CD環境の構築やIaC、はたまたミドルウェアのバージョンアップなどで役立つと思います。 以下ウェブサイトを参考に、各用語を「デプロイ戦略」と「テスト戦略」の大きく2つに分けて紹介します。 デプロイ戦略 従来型のデプロイ(インプレースデプロイ) システム番環境が一種類のみ存在し、新バージョンの資材デプロイによって旧バージョンの資材を上書いてしまうパターンです。 環境の設計や管理、維持コストをシンプルに抑えられるメリットがあり

    リリース手法多すぎワロタァ B/G、カナリア、機能フラグ、ダークローンチ、A/Bテスト、、など - Qiita
    syuu256
    syuu256 2022/07/01
  • GoogleのDesign Docsから学ぶソフトウェア設計 - Qiita

    概要 Design Documentと聞くと何を想像しますか? 一般的にDesign Documentが指すのは設計書であることが多いのではないでしょうか。 設計書、簡単に説明するのであればソフトウェアを「どうやって作るの?」を説明したドキュメントです。 Googleではソフトウェアエンジニアリング文化における重要な要素として、今回お話ししていくDesign Docsと呼ばれるものがあります。 Design Docsとは? Design Docsとは、開発者がコーディングに着手する前にソフトウェアシステムまたはアプリケーションの開発する人が作成するドキュメントです。 => ソフトウェア設計における仕様書や設計書とは別物と捉えた方がよいです。 仕様書、設計書は作成した上でのDesign Docsの作成となるようです。 このドキュメントには、高レベルの実装戦略と主な設計の決定事項がまとめられて

    GoogleのDesign Docsから学ぶソフトウェア設計 - Qiita
    syuu256
    syuu256 2022/06/30
  • あいまいを避けて勘違いの起きない命名をするための体系的分類(を目指して) ―― 英文法による一般化と明確化 - Qiita

    はじめに:この記事を書いた動機 これらの素晴らしい先行記事を見て、「言語学を用いれば、共通点を見つけ出して一般化・大項目化したり、取り違えやすいエッジケースを明確化できるんじゃないか?」と思ったことが、この記事を書き始めたきっかけになります。 1章は3つの主要なパターンとその詳細・例外、2章はそれらに関する文法的な解説になっています。 構造化・体系化が必要な理由 太郎くんと花子さんが英作文の問題を解いています。 次の日語を英文に訳せ。 (1) 彼女は楽しい人だ。彼女といると退屈することがない。彼女はいつも新しいことに挑戦して…… 太郎くん(『楽しい』って英語で何やったっけ……) 狩井先生@ 1年6月「exciting は楽しいって意味やで~」 ~~ 月日が流れる ~~ 柱鈴先生@ 2年4月「excited は楽しいって意味やで~」 太郎くん(……って教わったけど、exciting か e

    あいまいを避けて勘違いの起きない命名をするための体系的分類(を目指して) ―― 英文法による一般化と明確化 - Qiita
    syuu256
    syuu256 2022/06/26
  • 名著「入門UNIXシェルプログラミング」の超詳細なレビューをしてみた(古い内容の訂正) - Qiita

    はじめに そりゃまあ 30 年も経てば古くなりますよ。「入門UNIXシェルプログラミング」は今もシェルスクリプトに関するオススメのとして名前が挙がる名著です。しかしこのは古いです。POSIX でシェルが標準化される以前ので、内容から判断するとおそらく 1990 年ぐらいの常識に基づいて書かれています。 古いから参考にならないと言うつもりはありません。しかしどれだけ優れたでも時間の流れには勝てません。良書であると思っているからこそ、古くなってしまった内容は訂正する必要があると考えています。なおシェルスクリプトに関する古いはこれだけではありません。オライリーから出版されているも古いばかりです。いつ頃に(原書が)書かれたなのかを確認した方が良いでしょう。 ということでレビューというていで、古くなってしまった内容の訂正を行いたいと思います。新しく「入門UNIXシェルプログラミング

    名著「入門UNIXシェルプログラミング」の超詳細なレビューをしてみた(古い内容の訂正) - Qiita
    syuu256
    syuu256 2022/06/20
  • ここがつらい! Slack API - Qiita

    半分ネタ記事です。あんまり真面目に書きません。 項目数が多いので,気力でなんとか書きます。分類は諦めます。 他にもある!っていうのがあったらコメント欄で教えて下さい。気が向いたら追記します。 公式の TypeScript 型定義がもはや型定義を諦めている 辛い度: ★★★★★ 辛い中でもこれはかなり上位に来るやつ。 こちらに OpenAPI 形式で仕様が定義されていて, https://github.com/slackapi/node-slack-sdk/tree/main/packages/web-api/types ここに仕様に基づいて TypeScript の型定義ファイルが吐かれるようになっています。 Git 管理されていないので,実際のリリースを見てみましょう。 https://unpkg.com/@slack/web-api@6.7.2/dist/response/Reacti

    ここがつらい! Slack API - Qiita
    syuu256
    syuu256 2022/06/20