Category: テクノロジー

  • [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…

  • Minecraft(統合版)を自宅サーバーで遊んでみた!Ubuntuによる構築に挑戦

    Minecraft(統合版)を自宅サーバーで遊んでみた!Ubuntuによる構築に挑戦

    初めまして、新人の薄です。初めてブログの更新で不慣れな箇所もあるとは思いますが、よろしくお願いします! みんな大好き、Minecraft Minecraft 一度プレイしたら、 時間が溶けることで有名な「Minecraft」。「テトリス」の販売数を超え世界一売れたゲームになったとか。動画サイトのゲーム実況では、必ずといっていいほどにMinecraftの文字をみます。 Minecraftは一人でも楽しいですが、友人や家族と一緒にやるとさらに楽しくなります。しかし、マルチプレイを行うにはいくつかの条件があります。この記事ではマルチプレイをお金をかけずに楽しむことを目的にサーバーの構築について紹介していきます。 マルチプレイ マルチプレイを複数人の仲間のみが入れるワールドで行うのは、少々面倒です。マルチプレイを行うには以下の方法があります。 専用機によるMincraftサーバーの構築・公開 専用機を自前で運用することは難しいですから、公式・非公式の有料レンタルサーバーの利用が一般的です。 ゲームをしながら同じパソコンでMinecraftサーバーを構築・公開 パソコンの性能とインターネット回線に余裕があり、遊ぶ際にゲームを起動する必要があります。セーブデータを持っている人がプレイしていない時間は、続きを遊べません。Minecraftサーバーの構築はゲームが自動でやってくれます。 Minecraftサーバーがほしいなぁ… 私の場合は友人から「セーブデータを持っている人が遊んでいない時間でも、みんなでMinecraftを遊べるようにしてほしい」との要望をもらいました。この要望からMinecraftサーバーに求める条件は以下のようになりました。 いつでもゲームに参加できること マルチプレイ可能(2~5人) 仲間だけでゲーム 各ゲーム機、スマホ、タブレット、PCから利用可能なMinecraft Bedrock Edition(統合版) お金はない これらの条件を元に検討してみます。 有料レンタルサーバーだと維持費が高い 誰かがプレイ時にサーバーを立てる方法では、いつでもゲームに参加できない 無料サーバーは他人がいる 以上の理由から、専用機を用意しMincraftサーバーを自分で構築することにしました。 ConoHa VPS 専用機を自前で運用することは難しいので、「多少維持費がかかってもMinecraftサーバーを簡単に用意したい」という方はレンタルサーバーがおススメです。700円分の無料クーポンが貰えるので2GBメモリのプランなら約8日強は無料で使えます。 マイクラのマルチサーバー構築を諦めたひとは必見サーバーにConoHa VPSを選んで分かったことマイクラのマルチサーバー構築を諦めたひとは必見サーバーにConoHa VPSを選んで分かったこと サーバー? サーバーといってもWindows10とそこそこの性能のデスクトップPCで十分です。というわけで、家に余ってるPCがないか探したところ…転がってました! 項目 性能 CPU Intel core 2 duo メインメモリ 3GB OS Windows7 失礼いたしました。”そこそこの性能のデスクトップPC”が家にありませんでした。これは”10年前のデスクトップPC”です。お詫びして訂正いたします。 みなさんご存じだとは思いますが、Windows7はサポートを打ち切られておりネットに接続するのは危険です。また、Windows10無料アップグレード期間にこのデスクトップPCは放置されていました。つまり、Windows10にお金を出してアップグレードを行う必要があります。しかし、Windows10を買うお金はありません…。そもそも、まともに動かない可能性の方が高いです。メモリ3GBですし。よってこのデスクトップPCを使いつつ、OSを入れ替えることにしました。 なお、マインクラフトマルチサーバーの必要スペックについて詳しくは、下記の記事をごらんください。 Minecraftサーバーを低コストハードウェアで検証 (デスクトップPC/Pine64/Android) サーバーOSとサーバーソフトウェア サーバーの構築に必要なOSとソフトウェアです。すべて無料で配布されているため、お金がかかることはありません。 サーバーOS Ubuntu Ubuntu DebianベースのLinuxディストリビューションで誰でも無料で使えるOSです。 Ubuntu…

  • DockerでKaggle環境を構築して機械学習に入門してみる

    DockerでKaggle環境を構築して機械学習に入門してみる

    案件で機械学習の知識が必要になりましたのでDockerで環境を構築し、試してみようと思います。 以下の手順で進めます。 Dockerでの環境構築 Kaggleから訓練データ、テストデータをダウンロード データの整形 予測結果の出力 私は機械学習についての知識が皆無ですので間違っている箇所もあるかもしれません。。。 環境構築 環境はDockerで構築します。 Kaggle公式のDockerImageがあるらしいのでそちらを利用します。 docker-compose.yml kaggle/pythonでなくpythonのみのイメージでも良いのですがkaggle/pythonであればpandasなどのライブラリもインストール済みなのでオススメです。 これで環境構築は完了です。 Kaggle Kaggleは機械学習、データサイエンスのコミュニティサイトです。機械学習のための「訓練データ」と予測を分析する「テストデータ」をダウンロードすることができ、それを元に機械学習で結果を導き、Kaggleに提出するとScoreが表示されます。 今回は機械学習初心者向けである「タイタニック号の生存者予測」を試してみようと思います。 まず以下のページから訓練データである「train.csv」とテストデータである「test.csv」をダウンロードします。 https://www.kaggle.com/c/titanic/data# それぞれ中身を確認してみます。 乗客ID, 生存可否, Passenger’s class, 名前, 性別, 年齢, 乗船した兄弟/配偶者の数, 乗船した親/子の数, チケット番号, 運賃, 船室番号, 乗船港となっています。 Passenger’s classは1, 2, 3の数値データで1がファーストクラスとなる船室クラスの数値のようです。Embarkedは乗客が乗船した港で、C, Q, Sの3種類、それぞれCherbourg, Queenstown, Southamptonとなります。 test.csvを確認してみるとSurvivedのデータがありません。train.csvのデータで機械学習モデルを作成し、test.csvの乗客の生存可否(Survived)を求める。という課題のようです。 データの整形 欠損しているデータもあり、そのままでは使用できないので平均値などで埋めます。そもそもどのくらい欠損しているのか見てみましょう。 Age, Cabinが多く欠損していますがそれ以外のデータは問題なさそうです。 欠損値を埋める Age(年齢)の欠損値を埋めます。とりあえず中央値を使うように実装してみます。 medianで中央値を得ることができます。 これでAgeの欠損値は埋まりました。CabinとEmbrakedも欠損していますが今回は使用しないのでこのままで進めます。 数値化とtest.csvデータの整形 次にデータの整形を行います。今回使用する「決定木分析」では文字列を扱うことができませんので性別のデータを数値に変換します。 male(男性)を0、female(女性)を1に変換しました。 test.csvのデータも同様に整形します。 test.csvについてはFareデータも一部欠損していましたので中央値で埋めています。 決定木分析…

  • Dockerでvimを使う方法(Python有効化も)

    Dockerでvimを使う方法(Python有効化も)

    オンプレのサーバにVimをインストールする際に、ビルド手順(主にconfigure内容)を忘れてググることが多いので自分の備忘録として残したいと思います。 また、一口にVimと言ってもVim8、NeoVimをyumやらaptやらでインストールするパターンと、ソースコードからコンパイルするパターンがあると思いますので、今回はDockerコンテナ上で以下の4パターンを試してみたいと思います。 Vim8をパッケージマネージャでインストールするパターン NeoVimをパッケージマネージャでインストールするパターン Vim8をソースからビルドしてPython2, 3を有効にしたパターン NeoVimをパッケージマネージャからインストールしてPython2, 3を有効にしたパターン Dockerコンテナのベースイメージは軽量化のためAlipneLinuxを使用していますがCentOSでもUbuntuでも手順はほぼ変わらないと思います。 1. Vim8 まずはVim8のみ、Pythonを有効にしていない状態であれば以下のように簡単にインストールすることができます。 Dockerfileを用意したらbuildコマンドを実行し、コンテナを起動します。 コンテナを起動したらvimを起動できることを確認します。 2. NeoVim 次にNeoVimを試します。こちらもVim8同様、簡単にインストールすることができます。 先ほどとほぼ同じ手順でNeoVimがインストールできます。 3. Vim8 + Python 次にプラグインを使用するためにPythonを有効化したVim8をインストールします。先ほどの方法でもPython3は有効になっているのですが一応Python2も有効にしてみます。Dockerfileは少し複雑になります。 まずVim8のソースコードをcloneするためのgitや、ビルドするためのgccなど必要なパッケージをインストールします。 その後、git cloneしてcdでディレクトリに移動してからビルドしますがDockerでは以下のようにRUN cd vimとしてもconfigureが実行できません。 Dockerはコマンド1つ毎にカレントディレクトリに戻りますのでcdした後に&&で続けてビルドを実行しないとカレントディレクトリに戻って実行してしまうのでエラーになります。 configureが終わったらmake installして完了です。 コンテナを立ち上げてVimを確認します。 Vimの確認は以下のコマンドです。 +pythonとなっているのでPython2, Python3が有効になっています。 Vimを起動して確認してみましょう。 ノーマルモードで以下のコマンドを実行して1が表示されればPythonは有効になっています。 4. NeoVim + Python 最後にNeoVim+Pythonを試します。Pythonをインストールし、pipでneovimパッケージをインストールするだけですので前述のVim8ほど複雑ではありません。 Python3のpipはneovimをインストールする前にupgradeしないと怒られるのでupgradeしてからneovim installとしています。 こちらもコンテナを起動して確認します。 NeoVimはヘルスチェックができるので起動後、ノーマルモードでヘルスチェックコマンドを実行しましょう。 Python2, Python3のどちらもOKとなっているので有効であることが確認できました。 まとめ DockerでのVimのインストール方法をまとめてみました。Dockerを使う場合はファイル共有にしてローカルのVimで開発するのでDocker上でVimを使用することは少ないのですが、Dockerfileを作成しておくことは無駄ではないかな、と思い作成してみました。 Docker上で開発を行うVimmerの役に立てれば幸いです。 今回作成したDockerfileはこちら。https://github.com/aizulab-igarashi/docker_vim

  • API GatewayのKongをインストールしてみた

    API GatewayのKongをインストールしてみた

    私はAmazon API Gatewayを利用したことがありました。テストを行う際、そこで全て完結して便利だな程度で利用していました。 同じようなAPI GatewayにKongというものがあることを知りました。Kongとは、いろんなところに存在するAPIをKongを通じて利用できるようにする仕組み、APIプラットフォームです。 オープンソースとして公開されています。Kongがどのようなものか掴むためインストールする方法を紹介します。 Kongとは? Kong社が2015年に公開したAPIゲートウェイと、そのプラットフォーム。 導入できる主な機能 認証 セキュリティ ロギング トラフィック制御 また、 nginxベースにより、高速、高負荷に強い プラグインを組み込みよる柔軟な拡張可能 等の特徴があります。 検証バージョン Docker-compose 版を利用しました。 Docker : 2.1.0.0 (36874)macOS : High Sierra Docker以外 のインストールも様々用意されてます。 参考公式ドキュメントは、こちらdockerhubは、こちら 動作確認にむけた手順 1.一式をダウンロード、展開2.docker-composeにてイメージビルド、コンテナ起動 3.コンテナ実行 4.cURL にて動作確認 ↓ レスポンス Kongの利用 5-minute Quickstartの案内を実行してみました。 1.コンテナ実行 2.DB マイグレーション(データベース準備)( .confファイルを指定すれば、独自の構成も試せます。) 3.Kong 開始 (停止する場合) (リロードする場合) KongデフォルトListenポート 8000 : クライアントからのHTTPトラフィック用、upstreamサービスに転送 8443 : クライアントからのHTTPSトラフィック用、8000と似ているがHTTPSのみ…

  • AWS Lambda で Python みたいな関数型言語 Coconut を動かすぞ!!!!!!!(非カスタムランタイム)

    AWS Lambda で Python みたいな関数型言語 Coconut を動かすぞ!!!!!!!(非カスタムランタイム)

    みなさんはじめまして!!!!!!!!!!!! 会津ラボで主にバックエンドの開発を担当している吉原です。他にブロックチェーン等もやってます。好きな言語は Haskell、趣味はクイズゲームです。以後お見知りおきを。 ※ ちなみに弊社には吉の字がつくバックエンド担当が2人おり、度々間違われます。当ブログをご覧になる場合はご留意ください。 さて、今日(注:執筆開始時点)はお盆です。 ……お盆も働いていたやつらだ。面構えが違う。 というのは冗談で、お盆休みをずらして取得しているため、その代わりに出勤しています。こういったことができる所も会津ラボの魅力の1つかなと思います。 閑話休題。 みなさん、Haskell してますか? え? Haskell って何? いますぐすごい H 本(Miran Lipovača『すごい Haskell たのしく学ぼう!』 オーム社)を読んでください。 Haskell は一般的に関数型言語と呼ばれるプログラミング言語の1つです。その中でも強い静的型付けの純粋関数型言語といったようなものになります。要するにつよい。 でもお仕事で Haskell を書くことはほぼありません。 なんでや! こんなにかわいいのに…… みんな、Haskell、書こう。 ……嘆いていても仕方ありません。じゃあ普段はどんな言語を使っているかといいますと、最近は主に Python とか JavaScript です。 みなさん、JS 好きですか? ……誤解を招きそうなのでもう一度。JavaScript 好きですか? ……なるほど。まあ私も JavaScript よりは Python の方が好きです。Python はいいですよね。シンプルで読み書きしやすいし、あとロゴがかわいい(重要)。 でもずっと Python を書いていると、ついこう思ってしまいませんか? もっと関数型したい…… Python はラムダ式やイテレータを始め、一般的に関数型プログラミングと呼ばれるスタイルにおいて有用な機能を多く持っています。 でも……もっと関数型の力が欲しくないか……? もっと軽率に関数合成したり、部分適用したり、パイプでつなげたり、パターンマッチしたり、あわよくば代数的データ型を使ったりしたくないか……? そこで登場するのが Coconut というプログラミング言語です。 Coconut http://coconut-lang.org/…

  • [Go + Travis]Go言語でTDDを体験してみる

    [Go + Travis]Go言語でTDDを体験してみる

    テスト駆動開発(TDD)に興味があり、Goのテストも勉強中でしたのでCIを利用してモダンな開発環境を試してみようと思いつきました。 DockerでGo環境を構築し、Githubでソース管理、Travis CIでテストを実行してTDDする、という構成で試してみます。 仕様するツール、サービス Docker Github Travis CI ディレクトリ構成 Docker まずはdocker-composeでGo環境を作成します。 docker-compose.yml これでGoが使用できる環境となりました。 テストを失敗させる まずはテストを失敗させるところまで実装します。 今回はフィボナッチ数を求める関数を作成してテストしてみます。 sample_test.go 8のフィボナッチ数は21なのでそれ以外の数値が返ってきた場合にはfailedとなるテストを作成しました。 テストが通るようにmain.goとsample.goも実装します。 main.go sample.go 現状は受け取ったintを返却しているだけなのでテストは失敗します。 ローカルで実行してみましょう。 sample_test.go:9 failedとなっているのでテストが失敗していることがわかります。 Travis CI 続いてTravisでのCI環境を作ってみます。 まずはTravisにアクセスしGithubアカウントと連携します。 アカウントが連携できるとリポジトリを選択できるので、今回使用するリポジトリにチェックをつけます。 次にTravisの設定ファイルを作成します。 .travis.yml 内容はほぼ公式のコピペです。。。 これでTravisを使用する準備ができたので、変更をGithubにpushします。 pushが完了するとTravisでテストが実行され以下のように失敗が確認できます。 テストを成功させる 次にテストが成功するように関数を実装します。 sample.go フィボナッチ数で調べるとこの数式が出てくるのでそれをそのまま実装した形です。 これをGithubにpushしてTravisを確認してみます。 テストの成功が確認できました。 まとめ 今回はDocker,Github,Travisを使用しましたが、この構成でもかなりシンプルな環境と思います。 本番環境にデプロイするためにKubernetesを利用したり、Gitにpushする前に(pre-push)テストを実行するように設定したり、など、身につけるべきスキルはたくさんありますので少しずつ学んで最適な開発環境にしたいです。