病みつきエンジニアブログ

機械学習、Python、Scala、JavaScript、などなど

サーバーレスな Headless CMS を自作して始める Jamstack

この記事は Jamstack Advent Calendar 2020 の 23 日目の記事です。 Jamstack なサイトのアーキテクチャ Jamstack の厳密な定義などは一旦置いといて、今回は、次のような構成のサイトについて考えます。あまりわかりやすい図ではないかと思うのですが、上段…

今どきの Python ならデフォルト引数に空の list や dict を指定しても良くない?

この記事はPython Advent Calendar 2020 の7日目の記事です。 今年の PyConJP 2020 では、Python の型ヒントについて登壇させていただきました。 speakerdeck.com 2020 年も終わりかけですから、「もう 2021 年からは Python のデフォルト引数に list 入れ…

gqlgen でのキャッシュ性能向上を考えてみる

NewsDigest ではアプリの BFF として GraphQL を使っていて、ライブラリとしては gqlgen を使ってます。で、なるべく CDN でのキャッシュヒット率を上げたいなぁということで、 gqlgen でできることをプロトタイプしてみました。 github.com 前提として、 Ap…

OSS 版 Redash ボットを Slack Bolt で作り直した

Redash のオンプレの bot を、Slack の Bolt というフレームワークを使って作り直しました。 github.com Redash とは Redash は様々なデータソースと接続して SQL/可視化に使える OSS/SaaS です。最近、Databricks に買収されたことで話題にもなりました。 r…

Python の型システムの上で Immutable な Python プログラムを作る

まえがき 今年の PyCon JP 2020 にて「Python 3.9 時代の型安全な Python の極め方」というタイトルで登壇させていただきます。本稿は、発表の補足となる「型ヒントを使って Immutable な Python を実現する方法」について紹介したものです。 Python の型ヒ…

Serverless Components を使った少しだけ実践的なアプリケーションの作り方

Serverless Framework の新しい機能「Serverless Components」を使って、サーバーレスなアプリケーションを作ってみました。 いくつかつまずくところもあったので、ブログに残します。ちなみに今回作ったアプリケーションは(特に紹介しませんが) Nature Remo…

メルカリ1on1 Workshop公開講座の参加レポを書いた

こちらです tech.jxpress.net

買ってよかった Kindle Oasis

課題感 読書量を増やす必要性があって、「追加のお金を払ってでも、本を読みたい」というのがあって、色々な方に相談した結果 Kindle Oassis を買ってみました。8GB、広告なしモデルです。 Kindle Oasis、電子書籍リーダー、防水機能搭載、Wi-Fi、8GB出版社/…

2018 -> 2019

振り返りと、ささやかながら今年の目標を。 アウトプット編 WEB+DB PRESSとエンジニアHubの寄稿、デブサミとDevelopers Boostの登壇があって、大変だった(小並感) こういうのって、「誰に対して何を伝えたいのか」が本当に難しい。例えば、PyConでPythonの話…

結婚パーティーのため Nuxt と Firebase でサーバーレスなご祝儀を納品した話

この記事はNuxt.js Advent Calendar 2018の10日目です。 友人の結婚式の二次会向けのコンテンツとして、 「ニコ生」風に投稿された写真やコメントが流れるシステム を作りました。 動画だとわかりづらいかもなのですが、広いパーティー会場で、リアルタイム…

API と SPA からなるプロジェクト(JAMstack)を作るベストプラクティス

背景 サーバーサイドの人がフロントエンドを結構こだわったプロジェクトをやるときに、混乱することが多そうなので、(社内向けに) 自分がいろいろ作ったなかで思ったベストプラクティス(?)を共有する 用語 SPA: Single Page Application. 単一のページ (ind…

WEB+DB PRESS サーバーレス特集で伝えきれなかったことの補足

先月、WEB+DB PRESS vol.105の特集「サーバレス」にJX通信社のメンバーとして寄稿いたしました。 紙面の都合上、泣く泣く削った部分もあったりして、伝えきれなかったところがあります。Twitter 上でもらった質問などもあるので、いくつか補足します。 tech.…

マスコミの方にも知ってほしい、仮想通貨とCoinhiveの話

Coinhiveというスクリプトを設置していただけで逮捕されるという事件が起きていて、マスコミなどでも報道されています。 www.sankei.com マスコミには読者の方に伝わるように伝えるというミッションがあるので、報道の表現が正しい・正しくないという話には…

Lambda 用にネットワーク通信を楽にするための Python ライブラリ作ったら捗った

Python で通信するとき、公式の urllib の使い方を覚えられないので requests を使いたい。 だけど、AWS Lambda みたいな環境だと、外部のライブラリを pip install して使うのが面倒くさい。zipで固めてアップロードしないといけなくて、Lambda関数を管理画…

草コイン「おがコイン」を発行したら5000兆円ぐらい獲得した(気分になった)

タイトルは釣りです。 これは「5000兆円持っている」と言っても過言ではないのでは・・・? pic.twitter.com/WpZveC0bin— やみつきー(小笠腹)@75.5kg (@YAMITZKY) 2018年2月12日 こちらのツイートを見てもらえると分かるとおり、僕の資産が約38兆ドル(4,180…

AWS の CloudWatch Logs を便利に見れる GUI 環境を作ってみた

github.com github.com コンセプト 先行アプリケーションとして awslogs という CLI がある。これを GUI = ブラウザで見れるようにしたもの。なので awslogs-gui、awslogs-api という名前だし、パラメータやデフォルトの挙動は awslogs に倣っている(API の…

社内ネットワークで使うための短縮URLサービス作った

社内専用環境とかで“性善説”に基いて運用できる、短縮URLを作ってみた。 github.com 詳細は README に書いているが、 シンプルなUI 命名もできるし、ランダムな文字列もいける 既存の短縮URLの上書き(性善説だし :) DynamoDBがバックエンドで安い Dockerベー…

年の瀬なので26歳の1年間を振り返る

「エンディングノート」書いた あと60年くらいは生きたいが、遺言書を書いた。 友人や祖母が亡くなったりするイベントがあったので1年前くらいから書こうとは思ってて、この度生活環境が大きく変わったので(とても良い)、引っ越しに合わせて、書いた。「遺…

Python の開発に VSCode を使ってみた雑感

普段 Python 書くときに使ってるエディター PyCharm (Vim Emulator を入れてる) たまに Vim PyCharm の気に入っているところ 型推論がすごく良い。動的型付けな言語にとって、これはかなり良いメリット Vim の Emulator が結構良い PyCharm の不満 Vim の Em…

「GraphQLは何に向いているか」に対してのちょっとした反論

k0kubun.hatenablog.com 非常に丁寧に書かれていると思うのですが、少し反論したい部分があるので、記載したいと思います。 GraphQLのキャッシュ効率について クエリをパースしないとキャッシュの可否を判定できないため、HTTPキャッシュが難しい こちらに関…

Puppeteer を CLI で動かす Docker イメージ作った

また新しい Docker イメージ作ったので紹介する。 https://hub.docker.com/r/yamitzky/puppeteer-cli Puppeteer とは? github.com Chrome Headless を Node で触るためのライブラリで、URLを見ると分かる通り、 Chrome のチームが出しているものです。 Pupp…

チーム開発における「ニワトリ」が適切に鳴くために

アジャイルやスクラムとかの文脈で「ニワトリ」と「ブタ」という概念がある。 その言葉自体は結構ググれば出てくると思うんだけど、一つ寓話を引用してみる。要は、「ニワトリとブタ」のプロジェクトメンバーが「ハムエッグ」を作る上で、「ブタ」は自分の身…

たとえシステムが落ちても“社内には”謝罪するべきではない理由。あるいは”反省”と”対策”にフォーカスしようという話

こんなことを書くと怒られそうなんですが、自分の一つのポリシーとして、システムが落ちたり障害が起きたりバグが発生したことについて、基本的に“社内には”謝罪しないことにしています(もちろん例外は度々あります)。 という概念は広まるべきだなと思ってい…

なぜ“まとも”なソフトウェアを作らなければいけないのか

私達まともなソフトウェアエンジニアは、まともなソフトウェアを作ろうとする。ソフトウェアエンジニアには、アプリのエンジニアだったり、サーバーサイドエンジニア、リサーチエンジニアなども含む。 まともなソフトウェアエンジニアは、テストコードを書く…

2016 / 2017 総括と今年の目標と今後の方向性と

2016年の振り返りと、2017年の抱負とか。 2016年の総括 2016年は、本当に大変な年だった。おわり。 目次 体重キープした件 家出れるようになった件 君の名はまだ見てない件 おうちハックしたい件 今年やった技術とか 今後の方向性とかに悩んでいる件 体重キ…

Dockerfileを生産性高く書く方法についてLTしてきた

10月21日(金)に、JX通信社内での勉強会でDockerfileを生産性高く書く方法のLTをした。 この3ヶ月で、公開しているものだけでも8個ぐらいDockerイメージを作ったらしいw ↑のスライドの要旨を言うと、 Dockerfileを書くときはTmuxとSlimeを活用しましょう!…

25歳になった / 労働についてのあれこれ

もう誕生日から2ヶ月経つが、8月末に25歳になった。 お祝いを頂いた方、本当にありがとうございましたm(_ _)m ちょうど今年は転職した“転機”で、転職して一段落経ったし、最近思ったこととか、気持ちの変化とか書いてみようかなと思う。 アプリのサーバーサ…

俺がTerraformファイルをいじるときに使ってるツールを雑に紹介する

Terraformは、インフラ管理をコードで管理するためのツールです。具体的にJXでは、AWSのインフラを管理するのに使っています。「インフラを管理する」というのは、今までだったらAWSのWeb管理画面(コンソール)やらAWS CLIでやっていたような作業を、ソースコ…

Apexを使ってAWS Lambdaを楽に管理しよう

AWS Lambdaでサーバーレス楽しんでるみなさん。 私の所属するJX通信社では、AWS Lambdaを結構活用しています。Lambdaのデプロイ管理のために、個人的にはApexというツールを使っているので、今回はその紹介をしたいと思います。 apex.run TL; DR Lambda使う…

通信系テストのためのサイトのススメ:example.com、httpbin.org、badssl.com

HTTP通信の機能を持ったプログラムをテストするときに、どこにアクセスするか、迷うことがある。(モックが使えるならそれがいいけど) そんなときにおすすめな、example.comとhttpbinとbadssl.comを紹介してみる。 example.com 名前がそのままだが、example.c…