並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 1397件

新着順 人気順

条件分岐の検索結果41 - 80 件 / 1397件

  • レベルアップしたい人必見 Qiita記事43選 - Qiita

    はじめに 本記事ではレベルアップしたいエンジニアが読んでおくべきQiita記事を紹介します。厳選に厳選を重ねた43記事です。全ての記事を読んでおく必要はありませんが、ちょっとでも「分からないな」「興味あるな」など思ったタイトルがあれば読んでみてください。 次の4種類に分類して紹介しています。参考にしてください。 フロントエンド バックエンド インフラ・Linux周りの知識 その他 それでは、早速紹介していきます! 弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。 また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。 フロントエンド まず最初はフロントエンドエンジニアに読んでおくべきとおすすめできるQiita記事を11個選びました!フロントエンドエンジニアとしての基礎が身に付く

      レベルアップしたい人必見 Qiita記事43選 - Qiita
    • UI改善のためにエンジニアに仕様を構造化してもらったら再設計がめちゃくちゃ捗った話|鈴木 健一 / PLAID & Ex.STANDARD

      この記事はPLAID Advent Calendar 9日目の記事ですUI改善の前提理解、うまくできていますか?皆さんはこれまで着手してこなかった既存画面のデザイン改善をする時、どのように進めているでしょうか。 自分がプレイドで所属しているreBAISUというチームでは、タタキとして定義したスタイルガイドを旧来の画面に適用しながらUI改善する取り組みをしています。 取り組み方として、改善対象となる画面の仕様を理解しながら課題を見つけ、解決策を検討していく流れになるのですが、この仕様理解が難しいと感じていまして。 なんとか前提理解を促せる方法はないものかと検討した結果、対象画面の構成要素をひとつずつ紐解いていく方法で理解していく「デザインの逆行分析」という方法をとっていました。 デザインの逆行分析とは「リバースエンジニアリング」とも呼ばれる手法で、その考えをデザインでも応用しようというもので

        UI改善のためにエンジニアに仕様を構造化してもらったら再設計がめちゃくちゃ捗った話|鈴木 健一 / PLAID & Ex.STANDARD
      • 【永久保存版】シェルスクリプト完全攻略ガイド - Qiita

        弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。 また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。 シェルスクリプトの世界へようこそ! シェルスクリプトって何? シェルスクリプトは普段 Bash などのシェルで実行しているコマンドを並べて、まとめて実行できるようにしたものです。ファイルのバックアップ、ログファイルの解析、システムのセットアップなど、ターミナルで行っていた一連の作業をまとめてシェルスクリプトに記述することで、シェルスクリプトを実行するだけで自動的に一連の作業を終わらせることができるようになります。また、シェルスクリプトはファイルに保存することになるため、再利用するのも簡単になります。 シェルスクリプトで使うコマンドの多くは UNIX コマンドになると思います

          【永久保存版】シェルスクリプト完全攻略ガイド - Qiita
        • 「NoCode」という幻想|gami | エンジニア

          どうも、エンジニアのgamiです。 数日前に、NoCodeツールのAdaloを使って開発された大学生向けSNS「Union」が資金調達を発表しました。 NoCodeで資金調達まで走ってその後作り直すというのは、まさにNoCodeの正しい使い方という感じする。 "UnionはNocodeツールのAdaloを使用して作成されています。しかし、Nocodeで作成されたアプリは依然として速度、操作性の観点からUI/UXが劣るため今後はFlutterを用い..."https://t.co/kQvk7iEvN6 — gami@デジタル教育系YouTuber兼エンジニア (@jumpei_ikegami) April 3, 2021 このニュースには、NoCodeの素晴らしさと限界が現れていると思いました。 「NoCode」という言葉を真に受けると、「もうプログラムを書いたり、高いお金を払ってエンジニア

            「NoCode」という幻想|gami | エンジニア
          • 『うちの子はコツコツ作業が得意なのでプログラミング向いてるかも』これは真逆では?という話

            とが @togazo よく親御さんらから「ウチの子はコツコツした作業が得意だからプログラミングに向いてるかも」という意見を聞くが、この頃思うに「コツコツした作業を面倒と思わない子」はプラモデルの組み立てなどの細かい作業に対する耐性は高そうだが「ラクをするために頭を使ってコードを書く」のは微妙な気がする 2022-06-10 13:25:37 とが @togazo コツコツした作業が得意過ぎちゃうと、明らかに簡略化できそうなのif-elseのelse ifが80以上連続しても「条件分岐が長くて大変だったなあ😊✨」と感想を延べこそすれ、深く疑問に思わない展開がさあ…(実話 2022-06-10 13:28:23

              『うちの子はコツコツ作業が得意なのでプログラミング向いてるかも』これは真逆では?という話
            • 山手線を徒歩で一周する人のための記録アプリ「YamaNotes」をリリースしました - すずかのプログラミング勉強記

              はじめに 山手線を徒歩で一周する人のための記録アプリ「YamaNotes」をリリースしました。 この記事では「YamaNotes」の使い方や、開発過程で苦労したことなどをまとめます。 6/14追記:東京の気温が高くなることが予想されています。熱中症予防のため、涼しくなってからの挑戦をおすすめします。 サービスURL www.yamanotes.com リポジトリ github.com はじめに 自己紹介 アプリの概要 山手線徒歩一周チャレンジとは? 使い方 ログインする 初期設定をする 進捗を確認する 到着する 履歴を確認する 開発に至る経緯 技術スタック 技術選定の理由 短期間で必要な機能を作るため、Rails7とHotwireで実装 コストを抑えて作るため、APIやデプロイ先を調査 地図の表示と描画にLeaflet + OpenStreetMapを使用 Render.com + Sup

                山手線を徒歩で一周する人のための記録アプリ「YamaNotes」をリリースしました - すずかのプログラミング勉強記
              • Rustでファミコンとスーパーファミコンのエミュレーターを書いた

                ゲームボーイエミュレーター、ゲームボーイアドバンスエミュレーターに続いて、Rustでファミコンエミュレーター"Sabicom"とスーパーファミコンエミュレーター"Super Sabicom"を書きました。 名前にRustっぽさを出してみました。 前回作ったマルチエミュレーターMERUのコアとして実装したので、ステートセーブや巻き戻しなどの機能も使えます。MERUの対応コアはこれで4つになりました。 こちらからWindowsとLinuxのプリコンパイルバイナリがダウンロードできるようになっています。 他のプラットフォームおよびソースコードからコンパイルする場合は ファミコンとスーパーファミコンどちらも一通り本体の機能は実装してあるつもりです。スーパーファミコンは割と細かいところまでちゃんと動くようにしてあるはずなので、動かなかったり表示がおかしかったりするソフトがあればバグですので、ぜひご報

                  Rustでファミコンとスーパーファミコンのエミュレーターを書いた
                • 6502 アセンブラ プログラミング入門 / 新山 祐介

                  概要: この記事では 8ビット CPU 6502 を 使ったアセンブラプログラミングを紹介する。 「アセンブラプログラミング」とは、プログラミング言語を使わず、 CPU のネイティブ命令列を直接書くプログラミング方法である。 6502 はいまから約50年前に開発され、 ファミコンや Apple II など多くのハードウェアで利用された。 しかし、その原理は今日のコンピュータとほとんど変わっていない。 ここでは 6502 のプログラミングを通して、コンピュータの本質を学ぶ。 6502 プログラミング入門 コンピュータの原理 レジスタとは 16進数とは 6502エミュレータを使った演習 メモリに値を格納する メモリの値を増加させながらループする アセンブラを使ったプログラミング 最初のプログラム (改良版) アセンブラを使ったジャンプ命令 差分アドレッシング 条件分岐 条件分岐 その2 16ビ

                  • フルスクラッチから作って理解するQEMU (Rust編) - FPGA開発日記

                    モチベーション なぜRustを選んだか? 私はQEMUは「アーキテクチャエミュレーション界のLLVM」だと思っている QEMUが高速な理由:TCG Binary Translation ゲスト命令(RISC-V) → TCG → ホスト命令(x86)の処理をRustで作ろう RISC-Vの命令をフェッチしてデコードする RISC-Vの命令をTCGに変換する TCGをx86に変換する 実装結果 Binary Translation実行を高速化するための様々なテクニック BasicBlock分まで複数命令をまとめて変換 TCG Block Chainingの実装 評価結果 TB Lookup and Jumpの実装 評価結果 まだ完成していないところ 一部の最適化はまだ未実装となっている ゲストアーキテクチャがx86のみとなっている。TCGによる複数プラットフォーム対応として、まずは環境のそろ

                      フルスクラッチから作って理解するQEMU (Rust編) - FPGA開発日記
                    • 6歳娘「パパ、型による条件分岐はできないの?」 - Qiita

                      とある休日 娘「ねぇ、パパ!」 娘「switchやろ〜!」 ワイ「おお、ええで!娘ちゃん!」 ワイ「Switchやろう!」 ワイ「ほな、テレビをつけて・・・」 娘「テレビ?」 娘「何を言っているの、パパ?」 娘「TypeScriptのswitch文のことだよ?」 ワイ「ファッ!?」 switch文で何をしたいのか 娘「今ね、ショッピングサイトを構築してるところなの」 ワイ「ほうほう」 娘「それでね、手広く儲けようと思って」 ワイ「おお、ええやんか」 娘「個人ユーザーだけじゃなく、法人ユーザーも登録できるようにしようと思うの」 ワイ「なるほどな」 娘「言語はTypeScriptを使っているんだけど」 娘「ちょっと聞きたいことがあるの」 ワイ「おう、なんでも聞いてや」 あいさつ関数を作っている 娘「ショッピングサイトにログインしたときに・・・」 個人の場合 → 「無職 やめ太郎さん、こんにちは

                        6歳娘「パパ、型による条件分岐はできないの?」 - Qiita
                      • Notionを便利にするサービス16選 - Notionがあなたのチームを強くする(13)

                        この連載では、Notionであらゆるものを作れるとご紹介してきました。Notion単体でも非常に強力なツールなのですが、実は他のツールやサービスと組み合わせることによってさらに実現できる世界が広がります。 今回は、Notionを便利にするサービスをご紹介します。 1. リッチなWebサイトを作れる「Wraptas」 リッチなWebサイトを作れる「Wraptas」 Wraptas https://wraptas.com/ Notionの標準機能としてもWebに公開することはできますが、Wraptasを利用するとさらにカスタマイズできるようになります。 独自ドメインを利用できる JavaScript, CSSを設定できる SEO向けの設定ができる 例えばBLAM社の採用サイトやSHIBUYA SLOW STREAMのサービスサイトはWraptasによって作られています。一見するとNotionで

                          Notionを便利にするサービス16選 - Notionがあなたのチームを強くする(13)
                        • コンテナクエリ @container が全ブラウザ対応。新時代のレスポンシブ対応を完全理解する

                          本日(2023/2/14)、ついに Firefox でコンテナクエリ(container query)に対応しました。Chrome・Edge・Safari はすでに現行ブラウザで対応済みのため、全ブラウザにてコンテナクエリが使えることになります💐 従来、レスポンシブ対応でレイアウトを変えるには @media を使ってウインドウサイズを基準にするかありませんでした。コンテナクエリ @containerを使うと任意の要素を基準にできるので、「A要素の横幅が 500px 以下のとき、子要素のレイアウトを変える」などが手軽に実現できます。 とくにコンポーネントベース開発が主流の現在においては、コンテナクエリをマスターすることで、より柔軟でラクなレスポンシブ対応が可能になります。 本記事では、コンテナクエリの基本、メリット、デモまでをできるだけ詳しく解説し、コンテナクエリを理解することを目標としま

                            コンテナクエリ @container が全ブラウザ対応。新時代のレスポンシブ対応を完全理解する
                          • リリース手法多すぎワロタァ B/G、カナリア、機能フラグ、ダークローンチ、A/Bテスト、、など - Qiita

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

                              リリース手法多すぎワロタァ B/G、カナリア、機能フラグ、ダークローンチ、A/Bテスト、、など - Qiita
                            • Pythonで作るサーバーレス環境 AWSのスペシャリストが教えるLambdaの基本

                              「みんなのPython勉強会」は、Pythonを中心として、プログラミングを仕事、研究、趣味など、さまざまなシーンで生かす方法を一緒に学ぶ勉強会です。56回の今回は、サーバーサイドエンジニアをテーマに学びます。 AWSソリューションアーキテクトの西谷圭介氏が、前半ではサーバーレスについて説明しましたが、後半はいよいよその実行環境であるAWS Lambdaの基本について解説します。関連資料はこちら。 イベントドリブン 西谷圭介氏:Lambdaには、イベントドリブンという言葉があります。イベントドリブンをちょっと簡単に説明したいと思うんですが、Lambdaとかサーバーレスアプリケーションにおける非常に重要なキーワードなんですね。先ほどのサーバーレスのスタックに置き換えたときにLambdaというものがようやく出てきたんですが、このイベントドリブンをキーワードにしたサービスと言えます。 イベントド

                                Pythonで作るサーバーレス環境 AWSのスペシャリストが教えるLambdaの基本
                              • ライブラリを気軽に導入しないこと|Katashin

                                本をよく読むエンジニアであれば、ライブラリの導入には慎重になるべきだということは共通の認識になっていると思う。しかし、どういったライブラリを導入すべきかという選定基準は自分の中ではまだ言語化できてないことに最近気がついた。絶対的な基準を設けるのではなく、ある程度柔軟に考えるべきだと思うが、自分がどう考えて選定するかを考えてみる。 品質 テストが書かれているか 自分のプロダクトでテストを書いているのであれば、ライブラリにもテストを求めるべき 長い間継続してメンテナンスされている(いた)か 急に出てきてセンセーショナルな売り文句で注目を浴びるライブラリは怪しむべき コードの品質は悪くないか 導入する前にライブラリのコードは読むべき 効果 その後の実装効率をどれだけ上げるか 導入しない場合と大して変わらないのであれば不要 自分でそれを書いた場合と比べてどうか 短時間で同じようなものを書けるのであ

                                  ライブラリを気軽に導入しないこと|Katashin
                                • 次世代の監視技術 - Telemetry技術のご紹介 - NTT Communications Engineers' Blog

                                  こんにちは、イノベーションセンターの三島です。 本記事では、次世代の監視技術として期待されるTelemetry技術についてご紹介します。 この記事について 本記事では下記の3点を共有します。 従来の監視技術が抱える課題とTelemetryの可能性 Telemetryの技術概要と、各社の実装状況 NTT Comのネットワーク上で検証し得られた知見と、期待されるユースケース 従来の監視技術が抱える課題 ネットワーク運用においては、障害検知やパフォーマンス分析のため監視技術が重要となります。 従来のネットワークでは、SNMP(Simple Network Management Protocol)と呼ばれる技術が広く利用されています。 SNMPの仕組みを図1に示します。SNMPはUDPベースなネットワーク監視技術です。データモデルはMIB(Management Information Base)と

                                    次世代の監視技術 - Telemetry技術のご紹介 - NTT Communications Engineers' Blog
                                  • すぐに役に立つものはすぐに陳腐化してしまうから方法ではなく設計の本を読む - API Design Patterns の読書感想文 - じゃあ、おうちで学べる

                                    あなたがさっきまで読んでいた技術的に役立つ記事は、10年後も使えるでしょうか?ほとんどの場合でいいえ はじめに 短期的に効果的な手法や知識は、ソフトウェア開発の分野において、急速に価値を失う傾向があります。この現象は、私たちが何を重点的に学ぶべきかを示唆しています。最も重要なのは、第一に基本的な原理・原則、そして第二に方法論です。特定の状況にのみ適用可能な知識や即座に結果を出すテクニックは、長期的には有用性を失う可能性が高いです。これは、技術や手法が時間とともに進化し、変化していくためです。 learning.oreilly.com 「API Design Patterns」は、このような考え方を体現した書籍です。しかも480 ページもあります。本書は単なる手法の列挙ではなく、Web APIデザインの根幹をなす原則と哲学を探求しています。著者のJJ Geewax氏は、APIを「コンピュータ

                                      すぐに役に立つものはすぐに陳腐化してしまうから方法ではなく設計の本を読む - API Design Patterns の読書感想文 - じゃあ、おうちで学べる
                                    • プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで

                                      2022年4月22日紙版発売 2022年4月19日電子版発売 鈴木僚太 著 B5変形判/424ページ 定価3,278円(本体2,980円+税10%) ISBN 978-4-297-12747-3 Gihyo Direct Amazon 楽天ブックス 丸善ジュンク堂書店 ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo honto 本書のサポートページサンプルファイルのダウンロードや正誤表など この本の概要 TypeScriptは,JavaScriptに静的型付けの機能を加えたオープンソースのプログラミング言語です。本書では,根幹となるJavaScriptの仕様・機能とともに,TypeScript独自の仕様・機能を解説します。TypeScriptの基礎知識はこれ一冊だけで学べます。 静的型付き言語は世にいくつも

                                        プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで
                                      • Software Design連載 2021年8月号 Python製のレガシー&大規模システムをどうリファクタリングするか - MonotaRO Tech Blog

                                        Software Design連載開始 ※ (2021/09/02 08:55) 「Pythonを用いて開発を始めたのが2003年」を「Pythonを用いて開発を始めたのが2002年」に修正 こんにちは。金谷です。 このたび、モノタロウにおけるPython大規模開発に関する取り組みを、技術評論社様で発刊されている Software Design に連載させていただくことになりました。 モノタロウがPythonを用いて開発を始めたのが2002年。2021年の現在もPythonを用いた開発が続けられています。 事業の成長に伴い、関連するシステムやエンジニアの数も増え続けていくなかで、いかに安定的に価値を提供し続けられるのか。 モノタロウにおける取り組みを、開発や運用周りを通してご紹介していきます。 本記事の初出は、 Software Design2021年8月号「Pythonモダン化計画(第1

                                          Software Design連載 2021年8月号 Python製のレガシー&大規模システムをどうリファクタリングするか - MonotaRO Tech Blog
                                        • htmxとは何なのか? その背景にある思想について - Qiita

                                          先日、Qiitaに投稿された一つの記事が注目を集めました。 元記事では、htmxというJavaScriptライブラリが英語圏で認知を獲得しているとして、インストールの仕方から使い方について公式のドキュメントの全体にわたって簡単に説明が行われています。 さまざまなプラットフォームでこの記事に対する反応を観察してみると、どちらかというと懐疑的な見方のほうが優勢のように見受けられます。ただ、多くのコメントは誤解に基づいているように見受けられました。「JSが要らない」といった元記事のミスリードによるところも大きそうですが1、なぜhtmxが大きく支持を得つつあるのかを理解するには、背景情報を含めて理解することが必要です。 htmxは、最近の複雑化するフロントエンド技術に対する単なる逆張りではありません。これまで30年ほどのあいだウェブ上のシステムを支え続けた「ハイパーメディア」の持つ強力さに今一度目

                                            htmxとは何なのか? その背景にある思想について - Qiita
                                          • 大ヒットゲーム『Balatro』のコードが“力業”だとして共感呼ぶ。コードが汚くても、ゲームが完成してちゃんと動けばそれでいい - AUTOMATON

                                            ゲームを制作する際に必要となるプログラム。そのコードの記述にあたっては「コーディングルール」などとして、構造の把握のしやすさなどが求められることがある。一方で今回、あるユーザーが『Balatro』のコードの一部を公開。コードにif文が多用されている点などから注目されているものの、「見づらかったり、複雑なコードでもほぼ問題なくゲームを完成させられる」事例として共感も呼んでいるようだ。 コードのわかりやすさ ゲームの制作にあたっては、基本的にはプログラミング言語を用いてソースコードを書くといった、プログラムの記述が必要となる。プログラミング言語としては、「C++」「C#」のほか「Java」「Ruby」など、さまざまな種類の言語が存在している。 またゲーム開発に限らず、複雑なプログラムを作成する際には、効率性や可読性が重視される傾向にある。つまり、ゲーム機やPCにおけるメモリやCPUなどといった

                                              大ヒットゲーム『Balatro』のコードが“力業”だとして共感呼ぶ。コードが汚くても、ゲームが完成してちゃんと動けばそれでいい - AUTOMATON
                                            • CSSは確実に進化している! 変数、条件分岐、ループ、論理演算など、ロジックに記述するCSSの実装テクニック

                                              一昔前のCSSと比較すると、ここ数年でCSSはかなり進化しました。calc()で数式が扱えるようになり、変数、条件分岐、ループ、論理演算なども使用できます。CSSでロジックをどう記述するのか、ブログラミング言語的な実装を紹介します。 Writing Logic in CSS by Daniel Schulz TwitterでCSSがプログラミング言語なのかと話題になっていました。その前から本記事の翻訳に取り組んでいたのですが、非常に興味深い記事でした。CSSは宣言型プログラミング言語ですが、JavaScriptのような命令型の要素も増えてきて、一昔前からかなり進化しています。 下記は各ポイントを意訳したものです。 ※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。 はじめに CSSの制御構造 CSSの実装テクニック 終わりに はじめに CSSは、スタイルのシステムに特化

                                                CSSは確実に進化している! 変数、条件分岐、ループ、論理演算など、ロジックに記述するCSSの実装テクニック
                                              • 大学でRustを教えた話 - 未完成な論を綴るブログ

                                                このブログ記事は、Advent Calender 2020, Rust 3、23日目の記事となります。自分は現在大学で教員をしていまして、セキュリティ系の研究室に所属しています。現在はセキュリティの講義を担当しており、そこでRust言語を教えているため、その内容を紹介しようと思います。 はじめに 皆さんご存知のようにソフトウェアの脆弱性は今でも大きな問題となっていますが、それを完全ではないにしろ根本から解決するための技術的手法として型システムが注目されています。型システムの考え自体は古くからありますが、最近ではRust言語が登場し、OSなどいわゆる低レイヤーなソフトウェアも型システムの恩恵を預かることができるようになってきました。SMTソルバや定理証明などと言った難しい(かつ面白い)手法でC言語やC++言語で書かれたソフトウェアを解析する方法もありますが、セキュアソフトウェアを語る上では、

                                                  大学でRustを教えた話 - 未完成な論を綴るブログ
                                                • LeetCode 150問を解いて起きた意外な変化

                                                  はじめに 年末に Twitter でこのツイートを見かけました。 もともとアルゴリズムの勉強に興味があり、一年ほど前に数ヶ月だけ AtCoder をやっていましたが、途中で挫折してしまった自分にとって、NeetCodeの勉強ロードマップは非常に魅力的に感じました。(転職意欲があったわけではないです) NeetCode のロードマップ そこで、このロードマップに従って LeetCode の問題を 150 問解くことを決意し、結果的におよそ1ヶ月半で全ての問題を解き切ることができました。 この過程で、様々なことを学ぶことができました。中には自分が予想していなかった学びも多くありましたので、同じくアルゴリズムに興味のあるエンジニアの方に役立てていただけるよう、記録として残しておきます。 ハードスキル 📗 データ構造への理解 頻出するデータ構造について、それぞれの長所/短所を理解し、主要な処理の

                                                    LeetCode 150問を解いて起きた意外な変化
                                                  • テストコードの改革を進めている話 | メルカリエンジニアリング

                                                    はじめに この記事は、Merpay Tech Openness Month 2023 15日目の記事です。 こんにちは。メルペイ加盟店精算チームのバックエンドエンジニア@r_yamaokaです。 今日は現在自分がリードして取り組んでいるテストコードの改善について紹介したいと思います。 抱えている課題 私が所属している加盟店精算チームのマイクロサービスは加盟店さま向けサービスとして欠かせないものであり、メルペイ最初期から存在するサービスです。他のマイクロサービスにあまり無い特徴として多数のバッチ処理を行っている点が挙げられます。 お客さま(メルペイユーザー)がお店で行った決済は、一定の頻度で集計し決済手数料を差し引いた上で加盟店さまの銀行口座へ振り込むことになります。 最終的な振込金額を算出するまでの流れとしては 個々の決済金額のリコンサイル(会計マイクロサービスとの金額照合) 日次集計 締

                                                      テストコードの改革を進めている話 | メルカリエンジニアリング
                                                    • Linuxを生み出したリーナス・トーバルズが考える「優れたコード」とは何か?

                                                      プログラミングをする上で、コメントをきちんと残したり、わかりやすい変数名をつけたりして「読みやすいコード」を目指す作業は重要です。しかし、「読みやすいコード」と「優れたコード」の間には、時として構造上の大きな違いがあるのも事実。そんな「優れたコード」に対するLinuxの開発者リーナス・トーバルズ氏の考え方について、エンジニアのmkirchner氏が説明しています。 mkirchner/linked-list-good-taste: Linus Torvalds' linked list argument for good taste, explained https://github.com/mkirchner/linked-list-good-taste Linus Torvalds: The mind behind Linux | TED Talk https://www.ted.co

                                                        Linuxを生み出したリーナス・トーバルズが考える「優れたコード」とは何か?
                                                      • バックエンド開発の基本を理解するために必要な10の知識 2022年版

                                                        はじめに バックエンドエンジニアは、プログラミングの中で特にイメージがわきにくい分野である。簡単に言えば、バックエンドエンジニアはユーザから見えない部分にあるシステムである。(例えば、ユーザ認証やデータベース設計・操作・運用などが例として挙げられる) 例えば、ECサイトを運用する際に、ユーザから見えるUIだけを作っても作動しない。バックエンドになるシステムの構築も必要なのだ。 今回はバックエンド開発を理解する上で必要な10の知識を徹底解説する。その中で、個人の見解に過ぎないが初心者にオススメのバックエンドのフレームワークを3選紹介する。あくまで一個人の見解に過ぎないが、今回の記事を通してバックエンドの学習方法またはその魅力を十分に理解していただければ非常に幸いである。 本題に入る前に、本記事における「バックエンド」はあくまで認証やデータベースなどシステムやソフトウェアの裏側で動作しているも

                                                          バックエンド開発の基本を理解するために必要な10の知識 2022年版
                                                        • リファクタリングチームに入ってから学んだ理解しやすいコードを書くための基本的なこと - クラウドワークス エンジニアブログ

                                                          こんにちは! 去年の4月に新卒入社してからお酒ばかり飲んでいるエンジニアのd4teです。 4月から11月まではUX改善チームにてお仕事検索画面のフロントエンド開発を担当しておりましたが、11月からはリファクタリングチームにてcrowdworks.jpのリファクタリングをしています。 現在のcrowdworks.jpの状況 過去の記事にもあるように、crowdworks.jpはサービスインから約8年が経過し、30万行を超えるモノリシックなRailsアプリケーションになってきていて、コード行数の増加量やファイル変更数の推移は年々鈍化してきています。 内部には開発生産性を低下させる技術的負債が溜まってきており、技術的な投資がしづらくなってきているという課題があります。 自分が所属しているチームは、外部から見た動作を変えずに内部のコードを整理するリファクタリングで技術的負債を解消し、開発生産性の向

                                                            リファクタリングチームに入ってから学んだ理解しやすいコードを書くための基本的なこと - クラウドワークス エンジニアブログ
                                                          • n8n.io 入門 : IFTTT のようなワークフローを構築しよう - kakakakakku blog

                                                            「n8n.io」を使うと GitHub / Slack / Google Sheets など多くのサービス(ドキュメントを見ると 240 以上もインテグレーションできる!)を組み合わせて自由に「ワークフロー」を構築できる.関連サービスで言えば IFTTT のような感じ!例えば IFTTT Pro に課金せずにセルフホスティングできたりする.今回は「n8n.io 入門」を目的として Mac で Docker を使って「n8n.io」を試す.現状だと Docker と npm (npx) で試せる.なお,SaaS として使える「n8n.cloud」もある(最近まで coming soon になっていた). n8n.io n8n.io 入門 : 完成形 今回は「GitHub リポジトリに対する Star⭐/ Unstar⭐をトリガーに Slack 通知とコマンド実行に条件分岐をするワークフロー」

                                                              n8n.io 入門 : IFTTT のようなワークフローを構築しよう - kakakakakku blog
                                                            • また make の話してる(2020年9月14日) - なにもわからない

                                                              私の大好きな Makefile の話が盛り上がっていたのでまとめました。 「やめてね。」って方はお声がけください。 同じ会社にいるけど、真逆の感想を持っている。Makefile読まないと副作用が分からないし、Rakefile/package.jsonだけで済むのに無駄に1つレイヤ増えていて、Makefileできたときからいる人は楽だけど、途中から入った人にとっては学習コストが高い。 https://t.co/EXtmI3xl72— 神速 (@sinsoku_listy) 2020年9月13日 golangでMakefileを使うのは分かる。 ただ、RubyやNode.jsのリポジトリなら $ git clone xxx $ cd xxx $ bundle install && rake もしくは npm install && npm test で環境構築ができることを期待する。— 神速 (

                                                                また make の話してる(2020年9月14日) - なにもわからない
                                                              • プログラミングの原則:enumの比較はすべてバグ - Uzabase for Engineers

                                                                こんにちは、ソーシャル経済メディア「NewsPicks」のむとうです。 この記事は NewsPicks アドベントカレンダー 2023 の3日目の記事です。 昨日は@J_Nakagawa(隼佑 中川)さんによる『LambdaレスポンスストリーミングとAWS-SDKを使ってSlackに進捗バーを表示させる』でした! 世の中には再現が難しく一見してバグがありそうに思えないコードもありますが、一方でプロダクションコードの中にはひと目見てバグが有りそうなコードもまた多いものです。いくつかの特定のパターンをとる文字列(環境名など)やenum(以下どちらもenumと表現します)に関する条件分岐もその一つです。プルリクを見てこのようなパターンがあれば、バグの疑いが強くなります。周囲を見渡すと、大抵すでにバグっているか潜在バグを含むコードが見つかります。すべてバグというのは言い過ぎにせよ、わかりやすさと変

                                                                  プログラミングの原則:enumの比較はすべてバグ - Uzabase for Engineers
                                                                • SQL Training 2021

                                                                  Transcript SQL 株式会社 AI Shift 三宅 悠太 1. データベース 2. SQL I 3.トランザクション 4. データベース設計 5. インデックス 6. 実行計画 7. SQL II データベース データベースとは “A database is an organized collection of inter-related data that models some aspect of the real-world “ (CMU) データベースとは、実世界のある側面をモデル化した、秩序 だった、相互に関連したデータの集まり DBMS • データベース管理システム(DBMS)は、データベースを管理するソフトウェア ◦ 例:MySQL, Oracle Database, SQLite, MongoDB • DBMSの目的は、アプリケーションが簡単にデータベースにデー

                                                                    SQL Training 2021
                                                                  • 決済チームがテストコードを書く際に気を付けていること - UPSIDER Techblog

                                                                    こんにちは。決済チームでエンジニアとして働いている芦川です。 UPSIDER Tech blog 第2弾として「決済チームがテストコードを書く際に気をつけていること」を紹介しようと思います。 TL;DR 100%のテストカバレッジを目指す テストはブラックボックスを優先して記述、どうしても到達できない場合はホワイトボックス 最初のテストケースは、テスト対象が動作する最も一般的なケースであるべき 私たちは日々大量のコードを書いており、そのシチュエーションは多岐にわたります。 そういった環境において、動作確認からのコード改修のコストを考えた場合、自動テストの有無によって生産性に大きく差が出ることは容易に想像ができます。また、既存のサービスに改修を加えるために、そのサービスの概要を把握したい場合、良いテストコードはドキュメントとして役立ちます。 以前、私はテストコードを一切書かないプロダクトの開

                                                                      決済チームがテストコードを書く際に気を付けていること - UPSIDER Techblog
                                                                    • 機械学習の全体像をまとめてみた

                                                                      教師あり学習 概要 入力値から何かしらの予測をしたい場合を考えます. 予測する対象の正解データが事前に得られる場合、 入力値から正解データを出力するモデルを学習する手法を教師あり学習と言います. 主なタスク 何を入力して、何を出力するかでタスクが分類されます. 代表的なものに以下が挙げられます 時系列予測: 現在以前の時系列データ ⇒ 未来の時系列データ 画像分類: 画像 ⇒ ラベル 物体検出: 画像 ⇒ 物の位置と種類 セグメンテーション: 画像をピクセル単位で分割 文章分類: 文章 ⇒ ラベル 機械翻訳: ある言語の文章 ⇒ 別の言語の文章 時系列予測 現在以前のデータから将来のデータを予測します. 実用例 株価予測 災害予測 自動車の事故防止システム 主要なアルゴリズム 自己回帰モデル(AR・MA・ARMA・ARIMA) 時系列間の関係を数学的に定量化、モデル化する. 周期性のあるデ

                                                                        機械学習の全体像をまとめてみた
                                                                      • 史上最強のデータベース、SurrealDB - Qiita

                                                                        SurrealDBというRust製データベースを知ったので紹介します。このデータベースはすごいです。リレーショナル、ドキュメント、グラフ、あらゆる種類のデータ構造を扱うことができ、かつインメモリ、単一ノード、分散環境、全てで動かすことができます。さらにHTTPやWebSocketによるアクセスと柔軟なユーザ認証、認可機能とがDB本体に内包されており、ブラウザから直に接続するWebDBとしても使えます。とにかくなんでもできる夢のデータベースといった感じです。 特徴 機能を挙げていたら多くなりすぎたので、特に面白い部分を挙げます。 配列やオブジェクトをネストした複雑なデータ構造を持てるのに、レコードリンクという機能によりリレーションに対応していてしかもSQLやMongoDBより簡潔にクエリが書ける。 スキーマレスで各レコードには任意のフィールドを持てるが、必要ならスキーマを定義することもできる

                                                                          史上最強のデータベース、SurrealDB - Qiita
                                                                        • 書評『良いコード/悪いコードで学ぶ設計入門』 - uhyo/blog

                                                                          皆さんこんにちは。今回は、2022年4月30発売の『良いコード/悪いコードで学ぶ設計入門』を読み終わったので、書評という形で感想と紹介を述べたいと思います。筆者はもともと技術書を読まず「ネットでいいやん」派だったのですが、このたびTypeScript入門書を出版したこともあり、それを過去の話として葬り去るべく技術書を読んでいくことにしました。せっかくなので、読んだ技術書の感想等を紹介します。 おことわり: この記事では、「筆者」とはこの書評を書いた人を指し、『良いコード/悪いコードで学ぶ設計入門』を書いた人のことは「著者」と呼びます。また、この記事の内容はすべて筆者の個人的な見解であり、本の内容や本を読んで得られる知識について何らかの保証をするものではありません。 筆者について筆者はフロントエンドエンジニアで、TypeScriptとReactを専門としています。業務では何だかんだで設計の番

                                                                            書評『良いコード/悪いコードで学ぶ設計入門』 - uhyo/blog
                                                                          • こわくないTypeScript〜Mapped TypeもConditional Typeも使いこなせ〜 - uhyo/blog

                                                                            TypeScriptの型システムは、ユニオン型を始めとする様々な機能を持っているのが特徴的です。 その中でも、mapped typesとconditional typesは高度な機能として知られています。 ところが、その機能の膨大さゆえ、全てを使いこなす必要はない、TypeScriptの複雑な機能を無闇に使うべきではないという言説はたびたび現れます。 そのときに槍玉に上がりやすいのがmapped typesとconditional typesなのです。 筆者は、これらの機能は使えるだけ使い倒すべきであるという考えを持っています。 主張の根幹には、高度な型を使えばより正確にインターフェースを記述することができること、そして正確なインターフェースは使いやすさや正確な型推論結果に貢献することがあります。 正確なインターフェースや型推論結果は、コードの理解速度や開発効率を促進します。 これらは型シ

                                                                              こわくないTypeScript〜Mapped TypeもConditional Typeも使いこなせ〜 - uhyo/blog
                                                                            • ローコード開発ツール「AWS Step Functions」が大幅拡充、200以上のAWSサービスを組み合わせたクラウドアプリ開発が容易に

                                                                              ローコード開発ツール「AWS Step Functions」が大幅拡充、200以上のAWSサービスを組み合わせたクラウドアプリ開発が容易に Amazon Web Services(AWS)は、同社のクラウドサービスとして提供しているローコード開発ツール「AWS Step Functions」で、200以上のAWSのサービスを新たにサポートしたことを発表しました。 ICYMI: AWS Step Functions expanded the number of supported AWS services from 17 to over 200, and AWS API Actions from 46 to over 9,000! https://t.co/Azq1LlAt3u — AWS Developers (@awsdevelopers) October 11, 2021 これまではA

                                                                                ローコード開発ツール「AWS Step Functions」が大幅拡充、200以上のAWSサービスを組み合わせたクラウドアプリ開発が容易に
                                                                              • Go言語プログラミングエッセンス

                                                                                この本の概要 Go言語ユーザーとして,「もう一段レベルアップしたい」「開発に使いたい」と思っている方に向けた,Go言語の解説本です。関数やパッケージの使い方,並行処理,テストといった基本的なトピックにおいて,「こう書くと綺麗になる」「こう書くとパフォーマンスが上がる」といったエッセンスを紹介します。後半ではCLIアプリ/Webアプリの開発手順や,現場で使われている便利なパッケージなど,著者が業務やOSSの開発で培った技術をふんだんに紹介します。 こんな方におすすめ Go言語の入門を終え,さらに深く学びたい人 第1章 プログラミング言語Goとは 1.1 Goの簡単な歴史 1.2 Goの立ち位置 1.3 Goが利用される場面 標準でUTF-8をサポート マルチプラットフォーム 並行処理の扱いやすさ ストリーム指向 シングルバイナリ 1.4 教育用途としてのGo 1.5 なぜGoが使われるのか

                                                                                  Go言語プログラミングエッセンス
                                                                                • 【2020年】CTF Web問題の攻撃手法まとめ - こんとろーるしーこんとろーるぶい

                                                                                  はじめに 対象イベント 読み方、使い方 Remote Code Execution(RCE) 親ディレクトリ指定によるopen_basedirのバイパス PHP-FPMのTCPソケット接続によるopen_basedirとdisable_functionsのバイパス JavaのRuntime.execでシェルを実行 Cross-Site Scripting(XSS) nginx環境でHTTPステータスコードが操作できる場合にCSPヘッダーを無効化 GoogleのClosureLibraryサニタイザーのXSS脆弱性 WebのProxy機能を介したService Workerの登録 括弧を使わないXSS /記号を使用せずに遷移先URLを指定 SOME(Same Origin Method Execution)を利用してdocument.writeを順次実行 SQL Injection MySQ

                                                                                    【2020年】CTF Web問題の攻撃手法まとめ - こんとろーるしーこんとろーるぶい