Category: テクノロジー

  • Go + Echo で WithInternal/SetInternal を使うとエラーレスポンスのカスタマイズがうまくいかないことがある

    Go + Echo で WithInternal/SetInternal を使うとエラーレスポンスのカスタマイズがうまくいかないことがある

    Go 言語の Web アプリケーションフレームワークである Echo に関する小ネタです。 執筆時点 (2024/10/01) での Echo フレームワークのバージョンは v4.12.0 です。将来のバージョンでは挙動が変わる可能性があるのでご了承ください。 先にまとめ 前提知識1:NewHTTPError() 関数によるエラーレスポンスの返却 Echo では echo.NewHTTPError() 関数を用いてエラーレスポンスを返却することができます。 echo.NewHTTPError() 関数の第二引数に “エラーメッセージ” のような文字列を渡した場合、デフォルトでは {“message”: “エラーメッセージ”} というようなレスポンスボディが返却されます。 文字列の代わりに構造体を渡すことで、レスポンスボディを自由にカスタマイズすることも可能です。 echo.NewHTTPError() 関数の戻り値の型は *echo.HTTPError で、この型は error インターフェースを実装しています。そのため error 型の変数や戻り値として扱うことができます。 前提知識2:WithInternal()/SetInternal() メソッドによる内部エラー情報の設定 *echo.HTTPError.WithInternal()/SetInternal() メソッドを用いることで、echo.NewHTTPError() 関数などで作成した *echo.HTTPError に内部で発生したエラー情報を付与することができます。 この内部エラー情報はレスポンスボディには含まれませんが、サーバーのエラーログ等に出力させることができます。 前提知識3:Bind() メソッドによるリクエストのバインド echo.Context.Bind() メソッドを用いることで、リクエストのクエリ/パスパラメータ、ヘッダー、リクエストボディを構造体にバインドすることができます。 本題 ここからが本題です。 以上のようなコードで作成したサーバーに対して、以下のようにリクエストを送信するとどのようなレスポンスが返却されるでしょうか。 リクエストボディは意図的に不正な形式(”age” が数字でない)にしています。 実際に送信してみると以下のようなレスポンスが返却されます。 {“error_code”:1,”reason”:”リクエストが不正です”}…

  • GORM + PostgreSQL で double precision を使う場合は float8 を指定すると良さそう

    GORM + PostgreSQL で double precision を使う場合は float8 を指定すると良さそう

    GORM で PostgreSQL を利用する場合の小ネタです。 執筆時点 (2024/04/06) での GORM のバージョンは v1.25.9、GORM PostgreSQL Driver のバージョンは v1.5.7 です。将来のバージョンでは挙動が変わる可能性があるのでご了承ください。 先にまとめ 準備 以下のような compose.yaml ファイルを用意して、Docker Compose で PostgreSQL を起動できるようにしておきます。 本題 GORM で float64 型のフィールドを持つモデルを定義して AutoMigrate すると、PostgreSQL 上では decimal (numeric) 型のカラムを持ったテーブルが作成されます。 実行してみます。 ログを見ると、確かに decimal 型のカラムを持ったテーブルが作成されていることがわかります。 しかし、場合によっては decimal ではなく PostgreSQL の倍精度浮動小数点データ型 (double precision) で格納したいこともあると思います。 そこで、gorm:”type:double precision” を指定してみます。 ログを見ると、今度は double precision 型のカラムを持ったテーブルが作成されていることがわかります。 しかし、この状態でもう一度…

  • 【C#】 System.Span とパフォーマンスの話

    【C#】 System.Span とパフォーマンスの話

    みなさんはじめまして、会津ラボの阿部です。普段はバックエンドエンジニアをしています。 今回は C# の啓蒙活動を行おうと思います。 はじめに C# もとい .NET Framework(v1.0、2002年1月) は .NET(v1.0、2016年6月) に名前が変わりました。よりアグレッシブに機能追加するよう舵切りがなされ、特にパフォーマンスが改善されています。今回は .NET のパフォーマンス改善の目玉である System.Span<T> に関する四方山話です。 Note四方山話(よもやまばなし)種々雑多な話。 世間話。 雑談。 よもの話。 C# は生産性を重視した言語であり、パフォーマンス改善の優先度はそれほど高くありませんでした。しかし C# コンパイラが C++ から C# で書かれるようになりパフォーマンスが重視されるようになります。つまり C# におけるパフォーマンス改善の流れは C# 開発チームの内需だったわけです。その他、昨今のクラウドコンピューティングの隆盛によってパフォーマンスがよくないと開発言語として選ばれにくいという側面もあります(最近だと AOT も盛んです)。 Span<T> とは、要は配列 Span<T> は連続したメモリを表します。読み取り専用の ReadOnlySpan<T> もセットで存在します。配列の使いにくかった部分を改善した型です。 後述のとおり Span<T> はパフォーマンス改善に繋がります。しかしながら、リストやシーケンスを使う場面では System.Collections.Generic.IEnumerable<T> を使ったほうがクエリ、並列処理、イテレーターなど自由度が高く、共変性もあります。結論として、Span<T> を使うのはライブラリ作成者が主体になりそうです。一方でライブラリ利用者は、Span<T> を意識せずパフォーマンス改善の恩恵を受けられます。 文字列を例に考える Span<T> によるパフォーマンス改善の例として、文字列を見ていきましょう。 C# の文字列型(string)は不変な参照型です。詳細は省きますが、かなり特殊な型で内部的には読み取り専用の文字配列(char[])のようになっています。これは参照先で書き換えられることがないためコピーを渡す必要がないこと、コードを簡潔にできることが利点としてありますが、意図しないオブジェクトの生成が起こりやすい欠点もあります。 この問題は System.Text.StringBuilder を使うことで回避できます。…

  • LaravelでService層とRepository層を取り入れる

    LaravelでService層とRepository層を取り入れる

    Laravelを使用したプロジェクトでServiceとRepositoryというLaravelの機能を使用する機会があったので、備忘録の意味も含めて紹介したい。 対象読者 Service、Repository、Controller、Modelの関係性 今回は下記の流れになる Controller →Service →Repository →Model 【Controller】①ControllerからServiceをインスタンス化し、メソッドを呼び出す❻Serviceから返ってきた整形されたデータをフロントに渡す 【Service】②Repositoryのメソッドを呼び、Controllerから受け取ったIDなどのデータを渡したりする❺Repositoryから返ってきたデータを整形し、Controllerに返す 【Repository】③クエリを記述してDBからデータを取得する❹Modelから取得したデータをServiceに返す Service層とRepository層を取り入れるメリット、デメリット メリット ・DB操作をControllerで行わない事によりControllerのコード数が増える、いわゆるファットコントローラーになる事を回避できる。 ・処理を分担する事により、可読性、保守性が向上する。 デメリット ・中〜大規模プロジェクト向けという事もあり、小規模プロジェクトでは処理を分ける事に煩わしさを感じる可能性がある 実際にやってみる 実行環境 テーブル構成はのようにしてみる id name created_at updated_at deleted_at 1 りんご 2022-01-01 2022-01-01 null 2 バナナ 2022-01-02 2022-01-02 null 3 ぶどう 2022-01-03 2022-01-03 2022-01-03 ディレクトリ構造 Controllerを作成 Serviceクラスを作成 Repositoryを作成 Modelを作成 実行結果 まとめ 以上がService層とRepository層を取り入れた実装方法となる。 今回は基礎的な処理のみの為、恩恵は感じ辛いかも知れないが実際に取り入れて頂ければ可読性、保守性の高さを実感して頂けると思う。 今後のプロジェクトでLaravelを使用する機会があった際には、積極的に採用していきたい。

  • HasuraCon’22にてHASURAwards受賞しました!

    HasuraCon’22にてHASURAwards受賞しました!

    まえがき この度、会津ラボはHasuraを用いた高齢者向け医療用アプリを開発し、毎年開催されているHasuraCon’22においてHasuraを用いた素晴らしいプロジェクトに贈られる”Open Source Hero”賞を受賞しました。 HasuraCon’22についてはこちら 定期的に開催される無料のオンラインカンファレンスで、Hasuraが世界でどのような使われ方をしているか、またHasuraを用いたチーム開発ではどのような構築がされているか等を発表するイベントです。 Hasuraとは 正式名称はHasura GraphQL Engineであり、DB(Postgres)をもとにGraphQL APIを構築するオープンソースです。 PostgreSQLサーバーを建てるだけでHasura内でテーブルの作成やリレーションの設定等も可能です。 また、公式がHasura用のDockerを用意していて、起動してすぐローカル環境でHasuraが使えるようになります。 Hasuraを使った感想 GraphQLを使用することでフロント内で完結する作業が増え、バックエンドの負担を軽くすることができます。クエリを作ってすぐに実行できたり、テーブルの設定もHasuraから行えるのでシームレスに運用ができます。 また、外部APIが必要になったとしてもHasura Actionsという外部APIと連携できる機能があります。エンドポイントはあくまでGraphQLのエンドポイントだけでいいので、すっきりとした実装が可能になります。 そして、Hasuraは認証周りがしっかりしており、ユーザーレベルでの制御が容易です。JWTを読み込み取得してくる値に制限をかけるといった動作を実装できます。 Hasuraは新進気鋭の技術ということもあり、日本ではあまり情報が出回っていませんが、上記の機能を魅力的に感じたのであれば検討する価値はあると思いました。

  • 無料Wi-Fiを使うと危険?安全に使うために知っておきたいVPNとは

    無料Wi-Fiを使うと危険?安全に使うために知っておきたいVPNとは

    オフィスに行かないスタイルが一般的になっていくなか、自宅では集中できない、気分転換ついでに外で仕事がしたい、出先のちょっとした時間も逃したくない、そんな様々な理由からカフェなどの無料Wi-Fiを利用して働く方が増えています。コロナ禍においては、無料Wi-Fiが使える個室をビジネス向けに貸し出すサービスなども誕生しました。 とくにWeb制作やデザイン系のお仕事では、それほどオフィスに行く必要がない場合も多く、フリーランスとして活動する方も少なくありません。そんな方たちにとって、無料Wi-Fiはとっても便利な存在です。 しかし、実はこの無料Wi-Fi、危険が潜んでいることをご存じでしょうか。今回は無料Wi-Fiを使用する際の危険性と気を付けるべきポイントについてご説明します。 便利な無料Wi-Fiにも危険が潜んでいる 最近ではカフェなどの飲食店や駅、コンビニなど、どこでも利用できる無料Wi-Fi。とっても便利ですし、パソコンを使って外で仕事をする方にとって、もはやなくてはならないものでもあります。ですが、やはりそこは『無料』。セキュリティ面で不安がないと言えば嘘になります。どのような危険が潜んでいるのか、しっかり頭に入れておきましょう。 通信内容が外に漏れる可能性がある 無料Wi-Fiのメリットと言えば、誰もがいつでも気軽に使えるという点です。だからこそ、あえてパスワードを設定していないパターンもよくあります。確かに外出中、スマホで無料Wi-Fiに接続するとき、パスワードの入力を求められることはほとんどないですよね。 手軽さというのはとても大切ですが、その反面誰もが同じWi-Fiにアクセスできるということになります。もしその中に悪意のある人がいれば、簡単に自分と誰かのやり取りや、自分が扱うデータの内容を盗み見られる可能性が出てくるのです。重大な情報漏洩のリスクがあることを忘れてはいけません。 なりすましで情報を取られてしまうことも パスワードが不要、さらに暗号化されていない無料Wi-Fiに接続しているなか、メールやネットバンクなどにログインするためのパスワードを入力するのは非常に危険です。 ここ10年間、インターネット上では悪質なサイバー犯罪が増加し無料Wi-Fi接続中のパスワードの個人情報盗難が相次いでいます。 犯罪者などの手によって個人情報が盗まれると、銀行口座などの金融情報や、盗んだ複数の個人IDを組み合わせて架空の人物を作り、他人になりすますといった犯罪行為へと発展します。 一番多く盗まれたのがクレジットカード情報で、2020年の個人情報の盗難数は、約27万件にも上り、盗まれた個人情報全体の41%といった発表もされています。また、日本クレジット協会によると、2021年のクレジットカード不正利用被害額はなんと330億円となっています。人気のフリマアプリであるメルカリでは、不正に入手したクレジットカード情報で商品を購入される被害が拡大しており、今年4月には、16億円規模の不正利用があったと報告がありました。 先にもあったように、アクセスする大勢のなかに悪い思惑を抱えた人間がいないとは限りません。自分しか知らないはずのパスワードを他人に知られてしまえば、そこから不正アクセスといった被害にあう可能性だって考えられます。さらにデータの改ざんなど、思いがけないトラブルに巻き込まれる可能性も否定できません。 有名な無料Wi-Fiの落とし穴 きちんとパスワードが設定されているし、アカウントも登録制だから大丈夫。大手通信会社が提供する無料Wi-Fiのなかには、しっかりセキュリティ対策が取られたものもあります。しかしそれを逆手にとって、安全なものに似たWi-Fiを作り出す悪い人もいるものです。うっかりアクセスしてしまえば、情報を盗まれてしまったり、データの損失・改ざんに繋がることもあるでしょう。 こちらは安全だと思っていることや、何かしら被害にあってもすぐ気づけない場合があることから、このタイプの危険にはとくに注意が必要です。 安全に使うために気を付けたいポイント 無料Wi-Fiには危険がある。とはいえ、正しい知識を身に付ければ、もちろん安全に使うことだってできます。どのようなところに気を付ければよいのか、重要なポイントを見ていきましょう。 重要な情報は扱わない いろいろなポイントがあるなかでも、とにかく一番大切なのは「ほかの人に知られてはいけない情報は扱わない」、それに尽きます。顧客についてや契約内容など、特段重要な情報はセキュリティ対策をしっかり行った社内や自宅で取り扱うようにすると安心です。 パスワード不要のWi-Fiは要注意 ここまで何度か出たように、パスワード不要=誰もが気軽にアクセスできるということです。不特定多数の人がアクセスできて、しかもこちらは誰がアクセスできるか分からない。そんな無料Wi-Fiで仕事に関するやり取りをするのはいいことだと言えません。 今はしっかりパスワードを使用している貸しオフィスなどもありますから、ネット上のやり取りが発生する仕事は場所を選んで行うようにしましょう。 Wi-FiのON・OFFをしっかり管理する 受信できる範囲内に無料Wi-Fiがあれば、自動で接続するよう設定が行える機器があります。知らないうちにWi-Fiに接続することで、無意識のうちに不正アクセスなどの被害にあってしまうことも考えられるのです。機器側の設定もきちんと把握、管理しておいてくださいね。 セキュリティ対策ソフトを導入する とくに仕事で使うPCであれば、できる限りのセキュリティ対策は行っているかと思いますが、やはり市販のソフトというのはとても優秀なものです。うっかり入り込もうとする悪いものをはじき返してくれます。悪人側の手口も巧妙になっているので完全にとは言えませんが、それでもソフトを使わないよりはずっと安心です。 おすすめは「VPN」の使用 「VPN」とは、「Virtual Private Network(バーチャル プライベート ネットワーク)」の略称で仮想的な専用線(トンネル)を構築してインターネット接続を行う仕組みです。自分のIPアドレスを隠すことで、第三者からの介入を防ぎ、安全性を高めてくれます。VPNを使用すると、安全に無料Wi-Fiに接続できるため、テレワークや旅行先など、外出先でも安心してインターネットを利用することができます。 VPN接続によってIPアドレスを変更することで、オンラインゲームやストリーミング、オンラインショッピング、動画視聴など、オンライン上のあらゆる行動の追跡が困難になります。よって、外出先に限らず、自宅で仕事をする時でも、プライベート時にも活躍するツールと言えます。 また、海外から日本のドラマや映画を視聴したい場合に、日本にいながら世界中のVPNサーバーを自由に選択し、使用することで、国や地域制限に囚われない動画視聴を楽しむことができます。 VPNはソフトやアプリを利用すれば簡単に使えるので、よく無料Wi-Fiを使用して仕事をする機会のある方は是非導入してみてください。なかでも会社のサーバーと繋いでデザインデータをやり取りする、クライアントにテストサイトを見てもらう作業が発生するなど、外部とのやり取りが多い職種の方にはおすすめです。 まとめ カフェで仕事をすると捗る、そんな方も少なくありません。しかし、みなさんがお気に入りの場所で接続する無料Wi-Fiには、さまざまな危険が潜んでいることが分りましたね。  今回の記事ではいくつかのポイントをご紹介しましたが、そのなかでもVPNは一番確実で安全な方法です。あまり馴染みがないと難しいことに感じられるかも知れませんが、使い方は難しくありませんし、ちょっと調べれば情報がたくさん出てきます。  自分のセキュリティ対策や知識に自信がないという方は、今回の内容を参考に、VPNを使用した無料Wi-Fiの接続に挑戦してみてはいかがでしょうか。

  • [Python] aws-requests-auth で Lambda から IAM 認証つきの API を簡単に叩く

    [Python] aws-requests-auth で Lambda から IAM 認証つきの API を簡単に叩く

    AWS Lambda から IAM 認証のかかった API を呼び出したいという場合があります。 この場合、Lambda に適切な IAM ロール(ポリシー)を付与し、かつ API 呼び出し時に署名を行う必要があります。 Python では、aws-requests-auth というライブラリを使用すると簡単に署名を行うことができます。 API の準備 IAM 認証のかかった API を用意します。リージョンは ap-northeast-1 と仮定します。 今回は GET /hoge を叩くと {“message”: “hoge”} が返ってくるように設定しました。 この API に IAM 認証をかけ、デプロイしておきます。 ステージ名は api としました。 黒く塗りつぶしている箇所は API ID です。 Lambda 関数の作成 API を呼び出す Lambda 関数を作成します。 ロールには基本的なポリシーに加え、以下のようなポリシーを設定します。 Resource は arn:aws:execute-api:(リージョン):(アカウントID):(API ID)/(ステージ)/(メソッド)/(リソースパス) のような形式で指定します。…

  • マイクラのマルチサーバー構築を諦めたひとは必見!サーバーにConoHa VPSを選んで分かったこと

    マイクラのマルチサーバー構築を諦めたひとは必見!サーバーにConoHa VPSを選んで分かったこと

    Minecraftのマルチサーバー構築には、サーバー設定をはじめとしてバージョンアップやバックアップなどさまざまな作業があります。それにともない難しさを覚えて挫折したり、せっかく構築したもののプレイ負荷で満足に遊べなかったりと問題は尽きません。 「マイクラのマルチサーバー構築がややこしい」、「運用しているマルチサーバーが負荷で快適にゲームできない」、という悩みをかかえているならば 「ConoHa VPS」がおすすめです。 ConoHa VPSのサービスには、「かんたん管理ツール」が用意されていてサーバー設定にかかわる多くの悩み解消が見込めます。さらに「自動構築」機能によって作業時間を短縮できます。大切なのはマイクラを遊ぶことですから最短で構築完了できるのは有益です。 快適さにおいても、やりこみ度にあったプランを選べるため良好な状態でマイクラをプレイできます。メモリ増設といったこともプラン変更で済むため機械いじりが苦手でも問題ありません。しかも大手のホスティングサービスということもあって安定性に定評があることでしょう。 そのほかにも構築・運用についてはブログの最後で詳しく解説します。 さきにMinecraftマルチサーバーの構築方法を確認したい方はこちらからご確認ください。 はじめに こんにちは。会津ラボの薄です。私は2020年の4月に会津ラボに入社しました。 その後、マイコンの開発、UnityでARアプリの開発、基幹システムのWebサーバー改修などを担当しました。ひとつの分野にとらわれず、いろいろと経験させてもらっています。 そんななか、2020年6月に公開したマイクラサーバーに関する記事が思いがけず、たくさんの方の関心を集めました。弊社ブログの人気記事1位を独占するほどです。けっして味を占めたわけではありませんが、多くのひとの関心を集めるコンテンツであることを知りました。 それならばマルチサーバー構築初心者の誰しもが抱く「かんたんにマイクラを構築したい」に応えるべく、初心者でもできる構築手順を解説しようと考えた次第です。 Minecraft (マインクラフト)について Minecraftとは、Mojang Studiosから発売されているサンドボックスビデオゲームです。最大の特徴はブロックを配置して建築などを楽しめること。世界で一番売れたゲームでもあり、多くのプレイヤーがプレイしています。 Minecraftには、シングルプレイのほかにマルチプレイが実装されています。自分のワールドを公開したり、ほかの人のワールドに参加したりして一緒に冒険や建築を楽しむことができます。 マルチサーバーとは? Minecraftを複数人で遊ぶときアクセスするサーバーのことをマルチサーバーと呼びます。すでに公開されているものや友人が用意した遊び場は、このマルチサーバーが動いているというわけです。 あなたがマルチプレイ環境を用意しなければならない立場ならばマルチサーバーを必ず準備しましょう。サーバーがなければ快適なMinecraftライフは始まりません。 3つのマルチプレイ Minecraftにはマルチプレイを行う方法が3つあります。 1️⃣ マルチサーバーを使用したマルチプレイ 2️⃣ ローカルネットワークからの協力プレイ 3️⃣ VPNを使用した、遠隔地からの協力プレイ この節でとりあげているのは、「1️⃣ マルチサーバーを使用したマルチプレイ」です。2️⃣と3️⃣は多人数で行うマルチプレイに向いていません。 VPNのデメリット VPNを使って、遠隔地のプレイヤーと協力プレイができます。 仮想的なプライベートネットワークを設けて拠点間でアクセスを許可するというものです。しかし、この利用方法はおすすめしません。 なぜなら、VPNの導入にはセキュリティリスクがあるからです。 直接ネットワークをつなげるためセキュリティが甘くなり、PCが他者からのアクセスに対して丸裸になる恐れがあります。正しい知識がない状態で使用することは避けてください。 ConoHa VPS とは? 「ConoHa VPS」は、GMOインターネット株式会社が提供するVPSです。 まずVPS(仮想専用サーバー)というのは、共用サーバーと専用サーバーの長所をあわせもったホスティングサービスのことで、レンタルサーバーのごとくリソースを共用しながらも、専用サーバーと同じく自由に環境構築ができます。比較的安価に機能性と安定性を得られるとしてWeb開発で活用されるケースも少なくありません。 ConoHa VPSならば、WordPressやWebアプリケーション、メールサーバーやDNSサーバーなどの運用はもちろんのこと、Minecraftマルチサーバーの環境を構築できます。 VPSの環境構築は、一定の設定スキルを要するものでしたが、ConoHa VPSには「かんたん管理ツール」が用意されています。Minecraft環境構築がクリック操作だけで完結するため、サーバー設定初心者でも安心できるのではないでしょうか。 ConoHa VPSでマルチプレイをはじめる ConoHa VPS でできること ConoHa VPSでできることをまとめました。 自動で構築できる ConoHa VPSには、Minecraftマルチサーバーを自動で構築できるマルチサーバーテンプレートが用意されています。 通常の構築では、コマンドラインを使用してサーバーファイルの配置や権限設定、アプリのインストールなどなどさまざまな知識と設定が必要になります。しかし、ConoHa VPSを使用することによってこれらの設定がすべて自動で行われます。…

  • Minecraftサーバーを低コストハードウェアで検証 (デスクトップPC/Pine64/Android)

    Minecraftサーバーを低コストハードウェアで検証 (デスクトップPC/Pine64/Android)

    こんにちは。薄です。 Minecraft Realms(レルム)というサービスをご存じですか? ゲーム「Minecraft」のマルチプレイ用サーバーの公式有料レンタルサービスです。 Minecraftの大きな特徴である大規模オンラインマルチプレイを行うためにはMinecraftサーバーが必要になります。 Minecraft Realmsでは月額約900円ほどでMinecraftサーバーを貸し出しています。 じつはこのMinecraftサーバー、個人で構築できます。 OSやサーバーソフトウェアは無料で配布されており、性能の低いコンピュータ(ハードウェア)でも動かせます。 つまり、Minecraftサーバーの構築条件を満たした低コストハードウェアがあれば、自分だけのMinecraftサーバーを低コストで構築できます。これができれば、毎月有料レンタルするより安上がりです。 そこで今回は、低コストでMinecraftサーバーを運用可能なコンピュータを探しました! なお、サーバーの購入・構築・運用等はすべて自己責任でお願いします。 Realmsとは… 公式で運営されているMinecraftサーバー。月額制で、同時に10人まで接続できるMinecraftサーバーを貸し出している。 Minecraft エディション Java Bedrock(統合版) 月額料金 904円 930円 Minecraftの各エディションと月額料金 検証に使用したもの 以下の3つのハードウェアについて、Minecraftサーバーの構築・検証を行いました。すでに多くの人が持っている・低コストで入手可能といったものを集めました。 Intel core2 duo搭載デスクトップPC (EPSON AT971) シングルボードコンピュータ (Pine64+ 2GB BOARD) Android搭載スマートフォン (SHARP AQUOS R2 compact SH-M09) 構築をする際に、使用した基本的なソフトウェアは以下の通りです。ハードウェアによっては追加で専用のソフトウェアを導入しています。専用のソフトウェアについては、各項目で説明しています。 UbuntuServer (各対応バージョン) JDK8 Minecraftサーバーソフトウェア(公式) bedrock版(統合版) Java版(PCのみ) Intel core 2duo搭載デスクトップPC(EPSON AT971) EPSON公式サイトより引用 項目 詳細 CPU Intel…

  • アジャイル開発に入門する2020――今すぐ読みたい3冊を紹介

    アジャイル開発に入門する2020――今すぐ読みたい3冊を紹介

    PC を新調して今更 Minecraft を始めました、開発3年目くらいの吉原です。サーバー構築の記事(一つ前の記事参照)助かります!!! 俺はソロだが…… ブログぜんぜん書いてないから書けって言われたので書きました! これが所謂ブログ書けハラスメント通称ブロハラというものでしょうか……(これは冗談ですが、どうしたらもっとブログが活発になるかは考えた方がよいかもしれません)。 アジャイル開発 さて、皆さんは「アジャイル開発」を知っているでしょうか? 当たり前、という人もいれば、聞いたことはある、くらいの人もいるかと思います。 今年の3月に IPA からアジャイル開発版「情報システム・モデル取引・契約書」が出たり、アジャイルに関する日本語の書籍も多く出版されてきているように、日本においてもアジャイル開発は徐々に広まってきている、或いは広まるための土台は作られてきているのかなと感じています。 ですが、弊ラボでは正直なところ未だアジャイルという概念はあまり浸透していません。私も去年くらいまでは「アジャイルって何?」側の人でした。そのため、もしかしたらアジャイルについて全く知らない人や、誤解している人もいるかもしれません。そしてこれは推測に過ぎませんが、同じような状況にいる人も多いのではないかと思います。 私がアジャイル開発に興味を持ったのは、プロジェクトが思うように進まず、どうしたらソフトウェア開発・システム開発が「うまくいく」のか調べていたときでした。 最初は要件定義や設計など、上流工程のフェーズがしっかりできていないことが問題だと考えました。そのため、要件定義や設計に関する多くの書籍やブログ記事などを読みました。(余談ですが、私が特に興味を惹かれたのは「ドメイン駆動設計」でした。これについてもそのうち紹介できたらなと思います。)そのうちいくつかの本や記事は、「アジャイル」という単語に触れていました。これは一体なんなのだろうと思い、次第にアジャイルに関する書籍やブログ記事も読むようになりました。 これは正解でした。少なくとも、アジャイル開発に関する書籍やブログ記事を読むことは、私にとってとてもエキサイティングでした。勿論『人月の神話』や多くの人々によって語られているように、銀の弾丸はありません(少なくとも今のところあるとは思われません)。しかし、アジャイルには、これなら本当にソフトウェア開発・システム開発が「うまくいく」かもしれない、そう思わせてくれるものがありました。アジャイルは、それ自体もそうですが、大きな思考の転換を齎してくれたことが最大の魅力だったのかもしれません。 弊ラボでもアジャイルを「よりよい開発」に役立てて行きたい! そんな思いから、本や記事を読むだけでなく、実践に繋げていこうと考えています。 今回、去年〜今年にかけて出版されたアジャイル初心者向けの書籍を3冊ほど読んでみたので、社内への布教も兼ねて紹介してみようと思います。「アジャイルって本当に役に立つの?」という人も、或いは「アジャイルはじめました!」という人にもおすすめできる3冊になっていると思います! 『みんなでアジャイル――変化に対応できる顧客中心組織のつくりかた』(オライリー・ジャパン) アジャイルを、原則(なぜ)とプラクティス(どうやって)が互いに連携した「ムーブメント」として捉え、道を踏み外さぬように(或いは道を踏み外してもすぐに戻れるように)アジャイルの旅を手引きしてくれる入門書です。 本書ではまず「顧客から始める」「早期から頻繁にコラボレーション(協働)する」「不確実性を計画する」といった3つの原則を紹介していきます。本書の良いところは、プラクティスや実践方法も紹介しつつ、常にこの原則に立ち戻ることの重要性を理解させてくれるところです。これにより、例えばアジャイルプラクティスにただ表面的に従っているだけで成果に繋がらない、というような状態に陥ることを避けることができるというのです。 また、「そもそもなぜアジャイルを採用しようとしているのか?」「チームや組織のゴールは何なのか?」といった難しい質問に答えることの重要性にも気付かされます。 今の所アジャイルの入門書としては第一に薦めたい本です。「みんなで」とある通り、開発者やマネージャーだけでなく、セールスやマーケティング、顧客など、どんな人にも薦められる本となっています。しかし多少意味をとりにくい部分などもあるため、読みにくい場合は他の本を読んでから再挑戦してもよいかもしれません。 見た目的にも分厚い本ではないので、取っ付き易いのではないかと思います! (届いたときは思ったより薄くて驚き、その中身を読んでその内容の濃さに再度驚きました) 『レガシーコードからの脱却――ソフトウェアの寿命を延ばし価値を高める9つのプラクティス』(オライリー・ジャパン) 本書は「IT エンジニア本大賞 2020」にも選ばれた本であり、目を通した方も多いのではないでしょうか。タイトルにこそアジャイルとはありませんが、「レガシーコード」に対処するための選択肢としてアジャイルソフトウェア開発を取り扱っています。 前半では「レガシーコード危機」と題して、「100 億ドル単位の損失」などといったショッキングなデータを持ち出し、ソフトウェア開発を「何かが間違っている」「素人業界」と辛辣に批評しています。しかし、そんな中でも成功しているプロジェクトはあり、賢人たちによる新しいアイデアによってソフトウェア業界は正しい方向に動き始めているとします。 後半では副題にもある通り、レガシーコードに対処する、或いは最初からレガシーコードを作り出さないための9つのプラクティスをその原則とともに紹介しています(原則とプラクティスが不可分なのは先に述べたとおりです!)。プラクティスは、多くがアジャイルやエクストリーム・プログラミング (XP) に由来するものです。 本書は比較的技術プラクティスを重視する姿勢が感じられます(勿論、原則を理解していなければならない、ということは再三再四注意されます)。原則なきプラクティスはうまくいきませんが、原則だけでプラクティスがなくてもまたうまくいきません。先の『みんなでアジャイル』と合わせて読むことで、原則とプラクティスの両面からアプローチできるのではないかと思います。 なお本書では「ウォーターフォールはレガシーコードを作り出し拡散する」などと批判しつつも、ウォーターフォールのような開発であろうが、或いはどんな方法論を使用していようが、これらのプラクティス(エクストリーム・プログラミングのプラクティス)は役に立つと述べています。アジャイルに必ずしも興味がなかったとしても、本書を読むことで多くの発見ができるでしょう。 読み物としても面白い本ですが、その分やや記述が冗長で纏まりがないと感じられることもあるかもしれません。また、プラクティスが理解しにくい、読みにくいと感じたら、そのプラクティスに特化した書籍を読んでみることをおすすめします。最初の数プラクティス(「やり方より先に目的、理由、誰のためかを伝える」「小さなバッチで作る」等)はアジャイル由来の部分が大きいため、『アジャイルサムライ』(オーム社)などを読んでみるとよいかと思われます。 『SCRUM BOOT CAMP THE BOOK【増補改訂版】 スクラムチームではじめるアジャイル開発』(翔泳社) 本書は 2013 年に発売された同名の本の改訂版です。私は改定前の方を読んでしまい、この増補改訂版は読んでいないため(すみません!)、以下は改定前のものについての話となります。 本書はアジャイルのフレームワークの1つであるスクラムを中心に解説した本です。最大の特徴は漫画仕立てで読みやすいことです! かつ、これ1冊でスクラム開発を始めるために必要な知識が一通り揃うようになっています。 アジャイルについてはなんとなくわかってきた(?)けど実際にどのように進めようか、と思ったとき、まずはスクラムに挑戦してみるということもあると思います。その時に是非チームで、或いは周りの人々も巻き込んで一読したい本です。 改定前のものを読む限りでは構成は大きく「基礎編」と「実践編」に分かれていて、「実践編」部分をレファレンス的に使うのは少し難しいかなと感じました。その場合は『エッセンシャル スクラム』(翔泳社)などをおすすめします。改訂版ではスクラムのルール変更に対応する等全面的に見直しを行っているとのことなので、改訂版も是非読んでみたいと思います! まとめ 在宅勤務をしていたとき VTuber(バーチャル Youtuber)の面白さに気づき、特に最近はホロライブの動画をよく見ていました(決してサボっていたわけではなく、通勤時間等が浮いたためです。本当です!)。そして、視聴数やチャットの流れる速度がえげつない VTuber を見るたびに、私もたくさんの人に本物の価値提供をしていきたいと思うようになりました。アジャイルへの入門がその一歩になればと思っています。 会津ラボでは本物の価値を提供したい人を募集しています。 (なぜかアプリケーションプログラマの募集が多いですが、システムの設計開発やアジャイル・DevOps…