注目のストーリー
すべてのストーリー
企業や専門家の業務変革を支援する当社の環境をご紹介
最新のIT技術と専門知識を駆使し、業務変革を支援する当社。フレックス勤務とフレンドリーな仲間がいるオフィス環境で、IT技術者の技術レベルの向上とステップアップを叶えていきます。ひとりひとりが常に成長し、長く在籍してくれることで会社も成長することをモットーに、結婚や出産、介護などのライフステージの変化にも仕事を続けられるよう、いつでもどこでも働ける環境が整備されています。例えば、作業で使うものはすべてクラウド上に置くことで、会社でも家でも同じ環境で開発が行えます。台風などで会社が在宅ワークをお願いすることがありますが、PC(surface支給)さえ持ち帰えれば自宅でも業務ができる環境を整え...
DATA FABRIC事業が解決する社会課題
老朽化したITシステムを使いづけることに警鐘を鳴らす「2025年の崖」、活用する以前にかかる人とコストで進まないDX。ビッグデータ活用できる新システムを開発し、中小企業のDX推進の課題解決へ私たちが展開しているDATA Fabricシリーズ製品「Mashu」とは多くのお客様から寄せられる社内にあるデータが散在していて使いづらいという課題を解決すべく、「Mashu」はリリースされました。SaaSである「Mashu」は、利用するためのサーバーなどのコンピューティング資源を用意する必要も、導入や運用・保守などの作業も発生しないため、短期間で本格的なご利用が可能です。発売年月日:2023年8月4...
GolangでREST(その3)
前回は全体の設計方針からはじめて、RESTリソース毎に行う実装まで説明しました。実装の続きmainpackage mainimport ( "fmt" "log" "net/http" "os" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" "github.com/take0a/go-rest-sample/module/customers" "github.com/take0a/go-rest-sample/module/orders" "githu...
GolangでREST(その2)
前回は全体の設計方針とDto、Entityといったデータ構造、DaoによるSQLの実行部分まで説明しました。実装の続きServiceServiceは、Controllerが扱うDtoとDaoが扱うEntity間の対応を行います。また、Dtoを構成するEntityが複数種類ある場合は、それぞれのEntityに対応するDaoをそれぞれ呼び出します。package customersimport ( "context" "database/sql")// Service は、Contorller からの要求を Dao を使用して解決する。type Service struct { ...
GolangでREST(その1)
はじめにNestJS、FastAPIに続いて、GolangでもRESTサーバーを開発しましたという記事です。過去の記事は、以下から参照ください。設計ライブラリやフレームワークNestJSやFastAPIについては、フレームワークありきで実装してきました。Golangの場合は、まずは、できるだけ標準ライブラリでいきたかったのですが、実装してみて、パスパラメータやルーティングの構成を自力でやるのは、なかなか大変そうに感じたので、go-chiだけは使わせてもらうことにしました。また、データベースも上記のNestJS、FastAPIの際と同じPostgeSQLを使用します。構造GolangにはC...
FastAPIでREST(その3)
前回までcustomerで1 schema = 1 modelの実装ができました。仕上げproductsの追加customersと同様に実装できました。schema単位のモジュール化も問題ありませんでしたし、こちらの方が凝集度が高く、拡張も容易な気がします。同じような設計思想で開発されているところもありました。ordersの追加注文は明細がOne to Manyの関係になりますので、SQLAlchemyのドキュメントを読みながら実装していきます。from datetime import datefrom sqlalchemy import ForeignKeyfrom sqlalchem...
FastAPIでREST(その2)
FastAPIも導入すれば、とりあえず動くところまでは簡単でした。設計と実装プロジェクトの構造はどうする?NestJSはCLIでひな型の自動生成をしてくれたので、それに乗っかることにしました。スキーマ単位の構造は、スキーマ駆動でマイクロサービスな感じで、これからはこういう構造になっていくのかなぁと思いました。で、FastAPIです。公式では、どうやらレイヤ構造を推奨しているようです。多くの記事で上記に近い構造が紹介されていましたが、ここはNestJSのようにスキーマ単位の構造を採用してみようと思います。ディレクトリがスキーマ名になり、機能名がファイル名になるだけなので、縦と横をひっくり返...
FastAPIでREST(その1)
はじめに当社では、クラウドネイティブなSaaSの開発をしており、いつもはWebAPIの実装ならサーバーレスで。となるのですが、今回は、サーバーレスでないWebAPIの実現方法として、NestJSに続き、FastAPIを動かしてみましたという内容です。上記のNestJSの記事と同じお題を実装してみます。環境構築PythonFastAPIはPythonの型ヒントを活用していて、Pythonのバージョンが異なると型ヒントの書き方や範囲がかわるようです。このため、Pythonのバージョン管理ができたほうが良さそうなので、pyenv+venvで構築していきます。$ git clone https:...
NestJSでREST(その4)
前回まで一旦、動きました。👏仕上げ設定が丸見えNode.jsのプロジェクトでよくあるような.envにします。DB_HOST=hostDB_USER=userDB_PASS=pass@nestjs/configの導入と設定$ npm i --save @nestjs/configインストールできたら、app.modules.tsを変更してお見せできる状態にします。import { Module } from '@nestjs/common';import { ConfigModule, ConfigService } from '@nestjs/config';import { Type...
NestJSでREST(その3)
前回までTypeORMとPostgresの設定ができました。👏TypeORMを使って、モジュールを完成させるNestJSは、DIなので依存関係はうるさくないのですが、下からやります。(実は、ORMだけじゃなくてDIも嫌いです。)serviceデータベース呼び出しはTypeORMがやってくれる(はずな)ので、serviceは、TypeORM呼び出しをやります。@@ -1,26 +1,70 @@-import { Injectable } from '@nestjs/common';+import {+ Injectable,+ NotFoundException,+ Internal...
NestJSでREST(その2)
前回までNestJSのCLIでWebサーバー部分はできちゃいました。👏データベースと繋ぐTypeORM(とPostgres)を導入本家を含めて、mysqlが多いような気がしますが、今回は、別件でPostgesを使っていたので、Postgresでやります。$ npm install --save @nestjs/typeorm typeorm pgcustomersを実装するまず、テーブルを作ります。CREATE TABLE CUSTOMER ( CUSTOMER_ID int, NAME text, ADDRESS text, CONSTRAINT PK_CUST...
NestJSでREST(その1)
はじめに当社では、クラウドネイティブなSaaSの開発をしており、いつもはWebAPIの実装ならサーバーレスで。となるのですが、今回は、サーバーレスでないWebAPIの実現方法として、NestJSを動かしてみましたという内容です。やりたいことこんな感じのよくありそうなデータベースのテーブルをこんな感じのRESTリソースとして公開したい。とします。やったことNestJSの導入$ node --versionv16.19.1$ npm --version8.19.2$ npm i -g @nestjs/cli$ nest --version9.3.0$ nest new nestjs-samp...
GolangによるAWS Lambda開発環境
はじめに当社ではクラウドネイティブなシステムを開発しています。上記のように「使いたい時」「使いたい場所で」「使いたいだけ」上手にコンピューティングリソースを使うため、「ゼロからコールドスタートが当たり前」の要素のみで構成されたシステムを開発しよう。「ゼロからコールドスタート」ならネイティブコードにコンパイルされる言語(Go言語)によるFaaS(AWS Lambda)が良さそうだ。となりましたが、当然、次は「どうやって開発するの?」ということになります。どうやって開発するの?開発環境にとって大切なこと開発環境だけでなく、テスト環境もステージング環境も本番環境に近いことが大切です。なぜなら、...
クラウドネイティブとは何か
はじめに2019年に株式会社ROBONを設立するにあたって、これから時代のソフトウェアのアーキテクチャはどうあるべきかを考えました。既にクラウドネイティブという言葉はあったと思いますが、私にはそれが何なのかよくわかりませんでした。クラウドネイティブとは何か定義クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型...