タグ

ブックマーク / future-architect.github.io (28)

  • 2024年版のDockerfileの考え方&書き方 | フューチャー技術ブログ

    最近はお客さんとの勉強会でDockerのドキュメントをつまみいして読むというのをやっていますが、改めて最新版を読んでみて、いろいろ思考が整理されました。2020年の20.10のマルチステージビルドの導入で大きく変わったのですが、それ以前の資料もweb上には多数あり「マルチステージビルドがよくわからない」という人も見かけるので過去の情報のアンラーニングに使っていただけるように改めて整理していきます。 仕事Pythonコンテナをデプロイする人向けのDockerfile (1): オールマイティ編で触れた内容もありますが改めてそちらに含む内容も含めて書き直しています。 エントリーの執筆には@tk0miya氏から多大なフィードバックをいただきました。ありがとうございます。 基的なメンタルモデル現代的な使い方を見ていくために「Dockerを使ってビルドする」というのはどのようなものか考えを整

    2024年版のDockerfileの考え方&書き方 | フューチャー技術ブログ
  • 龍が如く7のすごいテストをなぜ我々は採用できないのか | フューチャー技術ブログ

    僕自身は龍が如くシリーズは、クロヒョウ2、極1、極2、0、3、4、5、6、0とやって、7はRPGだし主人公違うしなぁと思って、買うだけ買って後でやろうと積んでいたところ、CEDECのすごいテストの話を聞いて、(オリジナル版を積んでいたのに)インターナショナル版を買って始めてしまうぐらいインパクトがあり(そして積んでたのを後悔したぐらいよかった)ました。それ以降、維新極、7外伝、8は発売日に買ってプレイしてます。 こちらにその講演の詳細なレポートがこちらにあります。 https://www.famitsu.com/news/202009/11205564.html その8の発売前に龍が如くスタジオの技術責任者の方がXのアカウントを開設して、C++のコードを投稿されていたのですが、それに対してエンプラ開発目線で意見しているようなツイートを見かけて、「いや、システムの特性全然違うから」と思い筆を

    龍が如く7のすごいテストをなぜ我々は採用できないのか | フューチャー技術ブログ
  • Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ

    はじめにTIG真野です。育休明けです。 フューチャー社内のタスクランナーはmakeやTaskなど複数の流派があり、チームによって使い分けられています。個人的にはmakeで良いんじゃないかと思っていますが、Taskも良いですよね。 makeは細かい記法をいつも忘れる+調べるとC言語向けの情報が出てきて脳内変換に手間を感じたため、makeを用いてWebバックエンドアプリをGoで開発するということをテーマに、役立ちそうな情報をまとめます。 なお、今記事におけるmakeは、GNU Makeを指します。バージョンは以下で動かしています。 MakefileのためのEditorConfigMakefileのインデントはハードタブである必要があります。誤りを防ぐためにもEditorConfigを設定しておくと良いでしょう。 makeは通常、Makefileという名称をデフォルトで認識しますが、同一フォルダ

    Makefile覚書: Goアプリ開発に役立ちそうな基礎知識 | フューチャー技術ブログ
  • 管理画面等でNext.jsをBetter Reactとして使う | フューチャー技術ブログ

    最近、Next.jsが複雑になりすぎて、単なるウェブ画面を作る用途にはNext.jsは重すぎるので別のものが良いとか、Vercel統合のための機能が多いんでしょ、みたいな感想を見かけることが増えた気がします。特に管理画面とか社内システムとかですね。B2Cでも設定画面系とかは当てはまるかもしれません。 ホンダ時代に、タイプRを買っても実際にサーキットとかに走らせに行く人は1/10ぐらい、という話を聞いた気がしますが、必ずしも、そのすべてのパフォーマンスを引き出さないのはダメとかなくて、単にかっこいいからとか、一部のメリットでも自分にあえば良いのです。 Next.jsも、たくさん機能がありますが、ミニマムな使い方もできます。 ほぼNext.jsの機能をオフにした使い方たぶんNext.jsを最低限で使うライン・メリットはここかな、と思います。 基的に全部CSR(Client Side Rend

  • 本当は怖い、逆コンウェイ戦略 | フューチャー技術ブログ

    アーキテクチャの議論でよく出てくるのが、コンウェイの法則と、逆コンウェイ戦略です。これについては、うっかりIT用語をバズらせてしまう達人のマーチン・ファウラーのブログにも詳しい説明があります。角さん、いつも翻訳ありがとうございます。 「逆コンウェイの法則」が持ち出された議論が苦手なんどけど、なんでなのかな。コンウェイの法則はよく理解できるんだがー。 — Kazunori Otani (@katzchang) February 28, 2023 この@katzchangさんのツイートもそうですが、逆コンウェイ戦略に関しては僕も少しモヤモヤするところが個人的にあり、そのあたりを周りの人(@katzchangさんや@tokoroten、@__garsue__氏)と議論したらいろいろ自分が思っていなかった知見も得られたりしたので、まとめてみます。 コミュニケーションがかえって増える問題コンウェイの

    本当は怖い、逆コンウェイ戦略 | フューチャー技術ブログ
  • Casbinで始めるアクセス制御 | フューチャー技術ブログ

    はじめにTIG真野です。認証認可連載の2目です。 認証認可がテーマの中で、アクセス制御と聞くとちょっと外れているかもと思いましたが、Casbinについて紹介します。 トップページにも An authorization library that supports access control models like ACL... とあり、アクセス制御を支援する認可ライブラリだよって書いているので、OKと判断しました。 CasbinについてACL、RBAC、ABACなどの様々なモデルでアクセス制御を行えるライブラリです。 私が最初に存在を知ったのは、avelino/awesome-go に載っていたことからだったので、てっきりGo言語のみのライブラリかと思っていました。 実際はドキュメントを見ると、複数の言語をサポートしています。Go以外にも、Java, Node.js, PHP, Pyth

    Casbinで始めるアクセス制御 | フューチャー技術ブログ
    yuiseki
    yuiseki 2023/01/01
  • Open API Specification 3.1と気になる仕様策定 | フューチャー技術ブログ

    はじめにTIG DXユニット真野です。サービス間通信とIDL(インタフェース記述言語)連載の1目です。 Open APIgo-swaggerを用いたWebアプリケーション開発Tips19選という記事を過去に書いたこともあり、バージョン2(Swagger)をよく使っていましたしまだ継続してそれらを用いた開発もしています。2022.6.21時点では3.1.0が最新です。これまでリリースノートすらウォッチしていなかったので気になったことを調べてまとめました。 Open API SpecificationとはOpen API Specification(公式でもOASと略されます)は、HTTP APIのIDL(インターフェース記述言語)です。HTTP APIということで、いわゆるRESTishなAPIも含みます。エンドポイント(URLのパス)、パラメーター(リクエスト、レスポンスのヘッダ・ボデ

  • 郵便番号・住所・緯度経度の体系について | フューチャー技術ブログ

    はじめにこんにちは。TIG DXユニット所属の今泉です。地図・GIS・位置特定連載の1目です。 郵便番号・住所・緯度経度について調べる機会があり、自分なりに整理したものを記事にしてみます。 記事ではシステム開発において、仕様レベルでの間違いを防ぐため「知っておいた方がいいだろうな」と思った内容をピックアップして紹介します。 郵便番号郵便番号は郵便物配送の分類に使用される番号で、日では数字のみの7桁で表現されます。現在の郵便番号は1998年にそれまで5桁または3桁であった郵便番号を7桁に統一することで、町域までの指定ができるようになっています。 インターネットが普及した現在ではUX向上のため、郵便番号検索による住所補完などでも使用される機会が多いかと思います。記事では詳しく取り上げませんが、郵便番号の一覧は「KEN_ALL.CSV」として公開されています。お世話になった方もいるのでは

    郵便番号・住所・緯度経度の体系について | フューチャー技術ブログ
  • チームで推奨するVSCode拡張機能を共有するtips | フューチャー技術ブログ

    こんにちは。 TIG DXユニットの市川です。 プロジェクトにアサインされて、まずやらなければならないのは環境構築だと思います。 私が新人としてプロジェクトに参画した頃は、リポジトリのクローンからローカルサーバーを起動させるまでの手順は詳細に記載されていたものの、開発で使用するエディタの説明は特になく、VSCodeに各々が好きな拡張機能をインストールしている状態でした。当時開発経験が浅かった私は開発中に必要となる拡張機能を都度入れていたり、作業を効率化できる拡張機能を入れられておらず、非常に困っていました。 そういった背景もあり、私のプロジェクトではプロジェクトで必要となる・開発を効率的に行うことができる拡張機能を選定し、それらをVSCodeに一括でインストールする環境を整えたことで、プロジェクトに参画をした新人やキャリア入社の方、インターンの方がスムーズにエディタの設定を行うことができま

    チームで推奨するVSCode拡張機能を共有するtips | フューチャー技術ブログ
    yuiseki
    yuiseki 2022/10/22
  • AGPLを理解する: もっとも誤解されたライセンス | フューチャー技術ブログ

    このエントリーはSayanさんによるUnderstanding the AGPL: The Most Misunderstood Licenseの日語訳になります。 オープンソースの出現は、ソフトウェア産業全体を一変させました。しかし、オープンソースのコードを使って誰が何をできるかを管理することは課題でしたし、今も解決していません。オープンソースライセンスはそこに救いの手を差し伸べました。しかし、常に次のことを忘れないでください:石のない土地はなく、骨のない肉はありません。OSI(オープンソースイニシアチブ: オープンソースを促進することを目的とする組織)が承認したライセンスは80以上あり、その数はさらに増加しています。それぞれのライセンスには利点と欠点があるため、オープンソースの開発者は自分のプロジェクトにあったライセンスを選ぶのは簡単ではありません。Affero General Pu

    AGPLを理解する: もっとも誤解されたライセンス | フューチャー技術ブログ
  • 東京Node学園40時限目で話をしてきました | フューチャー技術ブログ

    オンライン開催された東京Node学園40時限目で発表してきました。スライドはこちらです。 内容としてはこのブログに書いた、gRPCフロントエンド通信の第一の選択肢になる時代がやってきたかも?という記事をベースにして、gRPCとは何かとか、Connectプロトコルの存在や、今までの公式実装ととどのように開発のスタイルが変わるか、みたいな話を絵つきで説明したりしました。 あとは、streamを使って受信する部分のTypeScriptコードがどうなるかの紹介とかも追加しました。 // 単発実行 return await client.greet({name}); // ストリームからの受信 for await(const res of client.conversation({name})) { setMessage(res.message); } あるいは最近追加されたconnect-web

    東京Node学園40時限目で話をしてきました | フューチャー技術ブログ
  • Go 1.16のgo:embedとNext.jsの相性が悪い問題と戦う | フューチャー技術ブログ

    前エントリーのGo 1.16のembedとchiとSingle Page Applicationでは、Vue.jsで生成したファイルをバンドルしました。Vue.jsや、Parcel V2でビルドしたコンテンツを配信するにはこれで問題ありません。しかし、ReactNext.js)は要注意です。 フロントエンドの環境整備をどうやって行うかはいつも悩みの種ですが、そんな中、僕が3年ほど前から他の人にお勧めしていたのがNext.jsでした。ほとんどの最低限必要なツール群は整備済みで、最近のバージョンであればTypeScriptを使うのも簡単。Linter(npm exec eslint –init)とFormatter(npm install prettierと環境整備)ぐらいでコードを書き始められます。 しかし、環境構築が簡単なNext.js製のウェブアプリケーションのビルド済みのフロントエン

    Go 1.16のgo:embedとNext.jsの相性が悪い問題と戦う | フューチャー技術ブログ
  • PlantUMLのテーマ(思わぬ展開) | フューチャー技術ブログ

    秋のブログ週間連載の7目です。 はじめにPlantUMLで使えるテーマについてのご紹介です。 以前、チームで機能設計するためのPlantUML標準化の記事でも書かせていただきましたが、PlantUMLのデフォルトカラーって少しドライですよね。 色の好みは人それぞれで、あれはあれでカッコよさはありますが、複雑な図は少しでも可愛く描きたい・楽しく見たいものです。 この記事ではPlantUMLのテーマについて、いくつかのオプションを紹介していきます。「PlantUMLの色を変えてみたい!」という方は是非ご活用いただければ嬉しいです。 前提 PlantUMLでは、skinparamを利用して図のビジュアル各要素を定義しますが、「テーマ」はskinparamの集合体です この記事ではテーマの作り方や、各運用方法等については触れません この記事で紹介するオリジナルテーマはシーケンス図のために作られた

    PlantUMLのテーマ(思わぬ展開) | フューチャー技術ブログ
  • OpenAPIにおけるundefinedとnullの設計 | フューチャー技術ブログ

    はじめにOpenAPI仕様に則ってREST APIの設計をする際に、値が存在しないという状態をどのように表現するかというお話です。 undefinedとはまずはじめに、ここでundefinedと言っているのは、OpenAPIの仕様において、リクエスト/レスポンスのデータ型を定義するSchema Objectのプロパティの1つであるrequiredが指定されていない状態を指します。 OpenAPIにおけるrequiredの定義を確認してみましょう。 OpenAPIの仕様を参照すると、Schema ObjectはJSON Schemaの仕様に従うと記載されています。 The Schema Object allows the definition of input and output data types. These types can be objects, but also primit

    OpenAPIにおけるundefinedとnullの設計 | フューチャー技術ブログ
  • GoでMQTT!! ~温湿度マイスターbotの作成~(前編) | フューチャー技術ブログ

    はじめにこんにちは。TIG/DXユニット所属の宮永です。 今回はAWSサービスのうちの一つAWS IoTを使用してRaspberryPiとのMQTTによる通信を行います。 AWS IoTを使用したMQTTのチュートリアルはAWS公式からも詳細なハンズオン記事が出ています。 AWS IoT Core の設定 :: AWS IoT Core 初級 ハンズオン 記事はこちらのハンズオンを基にGo言語を使用してMQTTによる通信を行いました。(公式の記事はPythonで実装されています。) 最終的には室内の快適な温湿度を教えてくれる「温湿度マイスターbot」を作成します。 なお、記事で作成したコードは orangekame3/go-mqtt orangekame3/th-meisterBot にて公開しています。 MQTTとはMQTTはメッセージングプロトコルです。 以下 mqtt.orgより

    GoでMQTT!! ~温湿度マイスターbotの作成~(前編) | フューチャー技術ブログ
  • 仕事でPythonコンテナをデプロイする人向けのDockerfile (1): オールマイティ編 | フューチャー技術ブログ

    BusterとかStretchという名前が見慣れない方もいるかもしれませんが、これはLinuxディストリビューションとしてシェアの大きなDebianのコードネームです。 Debianバージョンが少し古いStretchの方がちょびっとサイズが小さかったりはしますが、まあ実用的にはサポートが長い方がいいですよね。slimを使ってGCCとかのコンパイラを自前でダウンロードしている記事とかもたまに見かける気がしますが、マルチステージビルドであれば、そんなにケチケチしなくていいのと、パッケージダウンロードは逐次処理なので遅く、処理系が入ったイメージのダウンロードの方が高速です。並列で処理されるし、一度イメージをダウンロードしてしまえば、なんどもビルドして試すときに効率が良いです。また、多くのケースでネイティブのライブラリも最初から入っており、ビルドでトラブルに遭遇することはかなり減るでしょう。 Py

    仕事でPythonコンテナをデプロイする人向けのDockerfile (1): オールマイティ編 | フューチャー技術ブログ
  • Cypress - 書きやすいテストの秘密と独自コマンドの実装 | フューチャー技術ブログ

    @testing-library/cypressの存在を知らずに、それっぽいものを作ろうとしたときにいろいろ調査した記録です。Cypressにはテストコードが縦と横に短くなる工夫がされており、そのメカニズムにしたがった独自コマンドを実装するにはコツが必要です。 実装は次のところにありますが、@testing-library/cypressの方がメンテされているので、こちらは実際には使わないのをお勧めします。 https://gitlab.com/osaki-lab/cypress-aria Cypressのテストが縦横に短く書けるわけCypressはWebDriver系(Selenium)やChrome DevTool Protocol系(Puppeteer)のツールとAPIの粒度が異なります。Seleniumはそもそもウェブサイトのタイトルに「Browser Automation Too

    Cypress - 書きやすいテストの秘密と独自コマンドの実装 | フューチャー技術ブログ
  • どうしてHTML5が廃止されたのか | フューチャー技術ブログ

    フロントエンド連載の5記事目です。 HTML5が2021年の1月に廃止されました。 Webエンジニアとしてバリバリ活躍されてる方やエグゼクティブテックリードのような肩書きを持つ方にとっては「何をいまさら」という話題かと思います。 しかしながら、今年も新人さん入ってきてくださったので、プログラミングを学習中にHTML5という文字列に悩まされないように、そもそもHTML5とは何かや、廃止された経緯をまとめてみます。 HTML5とはWebサイトを作るときに必ず書くことになるHTML。Webサイトのコンテンツ、つまり中身や構造を作るために使うマークアップ言語です。 そして、その最近版として10年ほど前に登場したHTML5。当時は Webニュースなどで盛んに特集が組まれていましたが、このHTML5がついこないだ、2021年1月28日に廃止されました。 広義のHTML5 / 狭義のHTML5HTML5

    どうしてHTML5が廃止されたのか | フューチャー技術ブログ
  • AWS内の通信がインターネットを経由しない今、VPC Endpointを利用する意味はあるのか? | フューチャー技術ブログ

    はじめにこんにちは。TIG村瀬です。 タイトルの通りですがAWS内の通信においてインターネットを経由しないことが最近になって公式ドキュメントに明記されたことを受け、改めてVPC Endpointの必要性について調べてみました。 Q:2 つのインスタンスがパブリック IP アドレスを使用して通信する場合、またはインスタンスが AWS のサービスのパブリックエンドポイントと通信する場合、トラフィックはインターネットを経由しますか? いいえ。パブリックアドレススペースを使用する場合、AWSホストされているインスタンスとサービス間のすべての通信は AWS のプライベートネットワークを使用します。 AWS ネットワークから発信され、AWS ネットワーク上の送信先を持つパケットは、AWS 中国リージョンとの間のトラフィックを除いて、AWS グローバルネットワークにとどまります。 https://a

    AWS内の通信がインターネットを経由しない今、VPC Endpointを利用する意味はあるのか? | フューチャー技術ブログ
  • 続・サーバーレス検索エンジン:巨大な静的ファイルを扱うケースについて考える | フューチャー技術ブログ

    大きくは外部ストレージサービス利用と、アプリケーションにバンドルしてしまう方式と2つにわかれます。バンドルはデータだけ更新ができないデメリットはありますが、お手軽です。Lambdaはレイヤーを使えば実行プログラムに対して後から追加とかできますが、容量制限が厳しめです。 オブジェクトストレージは比較的お手軽ですが、読み込みしたいライブラリがローカルのファイルシステム前提の場合は使えません。サーバーレスの方式によっては、一度ローカルのファイルシステムに書き出してから利用とかも可能ではありますが、Cloud Runでは8GB(ただし、おそらくtmpfsで書けば書くほどメモリを消費)、Lambdaでは500MBと容量に制限があります。 より巨大な学習済みデータを扱う場合はマネージドNFSサービス系のものを使うのが最終形でしょう。ファイルのサイズ制限もほぼ限界値ですし、ローカルファイルになるのでどん

    続・サーバーレス検索エンジン:巨大な静的ファイルを扱うケースについて考える | フューチャー技術ブログ