読者です 読者をやめる 読者になる 読者になる

木木木

Swift / Ruby on Railsなどの学習メモ。


【おすすめPodcast】 熊谷と繪面がプログラミングコードの内から聴こえてくる声に耳を傾けて楽しむラジオ

最近ハマっているのがこちらのPodcast

mookmookradio.com

本当に面白い!!
プログラミングをやってる人、特にSwiftを書いている、Swiftに興味がある人には非常に面白いPodcastだと思います。
だいたい毎回テーマが決まっていて、例えば列挙型について延々とお二人で数十分語る回など。
出演者は以下のお二人です。

熊谷 友宏さん

Twitter

1977年生まれ。小学生でホームコンピューター MSX と出会い、それから今日まで、プログラミングと人生を共に歩んできました。プログラミングとは幼馴染です。独学でプログラミングを学びながら、そこで得た喜びを知識に添えて、ブログに綴ったり、勉強会に自主的に参加してみんなに届けたり、仕事を通して提供したりしています。最近の興味は Swift 言語での試行錯誤と勉強会。趣味人で活気溢れる世の中を夢見て生きるこの頃です。特に勉強会はもっとも注目しているもののひとつで、この前向きで明るいエネルギー溢れる世界をどう広げていくか、そんなところに意識を傾けがち。プログラミングを通して見つけた喜びを、もっともっと伝えていきたい。 【主催勉強会】yidev 横浜 iPhone 勉強会、カジュアル Swift 勉強会主催 【書籍】「Xcode 5 徹底解説」【講師】NPO 法人 MOSA 【ブログ】技術ブログ EZ-NET

繪面 友香さん

Twitter

現在は iOS アプリの開発を主としています。モバイルアプリ開発は学部 3 年 (4 年前) から始め、受託をメインとした会社でエンジニアとしてアルバイトをしていました。当初は Android アプリをメインに開発し、その後、iOS 版、Android 版の両アプリの開発を担当しました。 在学中は IBM の基礎研究所のインターンシップに参加し、データ可視化システムを C++ で実装しました。また、課外プログラムである Cisco Networking Academy Program を修了しました。研究室配属後は Web アプリケーションの設計を題材とした研究を行いました。 大学院卒業時にインドへ短期留学し、Network Operating System コースを受講・修了しました。

お二人ともプログラミングに非常に造詣が深いという事はもちろん、本当にプログラミングが好きなんだなぁということが伝わってきて 聞いていて楽しくなります。

また、このPodcastは言語仕様の解説を趣旨としているものではなく、思想や設計の部分を二人で議論しながら深掘りしていくスタイルで、まさにタイトル通り、]]「プログラミングコードの内から聴こえてくる声に耳を傾けて楽しむ」__といった感じです。

Swiftやプログラミングに対する理解非常に理解が深まりますし、「なるほど!」という発見も多く楽しいです。
何より熊谷さんの喋り方と繪面さんとのやりとりがとても癒やされます。笑

本当に面白いので、今後もずっと続けてもらえたら嬉しいなと思います。

mookmookradio.com

serverless.ymlでDynamoDBテーブル定義エラー

以下みたいなDynamoDBテーブルをserverless.ymlで定義し、deployしようとするとエラーが。

resources:
  Resources:
    HogeUsers:
      Type: "AWS::DynamoDB::Table"
      Properties:
        TableName: Users
        AttributeDefinitions:
          - AttributeName: Id
            AttributeType: S
          - AttributeName: UserName
            AttributeType: S
        KeySchema:
          - AttributeName: Id
            KeyType: HASH
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1
エラー内容

Property AttributeDefinitions is inconsistent with the KeySchema of the table and the secondary indexes

そうでした。
DynamoDBはスキーマレスなので、キースキーマとなる属性以外最初に定義する必要はありません。

なので、キースキーマ(プライマリキー、レンジキー) やセカンダリインデックスで使用する以外の属性を記載していると、
キースキーマとセカンダリインデックスと一致しないよ、と怒られてしまいます。
RDBばかり使っていたので、たまに混乱することがあります。

特定のDockerイメージに属するコンテナを一括削除してスッキリする

気づいたらあるDocker imageのコンテナが200個ほどできておりました。

docker rm コンテナ名 コンテナ名 コンテナ名

と複数指定して削除もできますが、200個は無理ということで、特定のdocker imageに属するdocker containerを一括削除するコマンドが以下です。

特定のDockerイメージに属するコンテナを一括削除するコマンド

docker rm $(docker ps -a | grep "Dockerイメージ名" | awk '{print $1}')

docker ps -a で起動していないものも含め全てのcontainer を列挙します。
これをgrepで絞込み、1つめに出力されるdocker container のIDを、docker rm に渡しています。

これでスッキリ!!

スッキリしました。

追記: もっとスッキリ書ける方法

ブコメにてもっといい方法を皆様に教えていただけました。ありがとうございます!!

bottomzlife さんおすすめの方法

$ docker rm $( docker ps -qa --filter name=image名 )

mapk0y さんおすすめの方法

$ docker rm $(docker ps -a -q -f ancestor=image名)

Twitter Kit for iOSを使う

Twitter 関連のモバイルアプリを作るなら非常に便利なのが Twitter Kit。
Twitter公式のライブラリです。
導入がすごい簡単。
Twitter Installation — Fabric for Apple documentation

わかりにくいんだけどこちらにライブラリ公式ドキュメントがあります。

TwitterKit Reference

TwitterKit Reference

Xcode Embedded framework で no such module

iOSプロジェクトでDDDやってみたいと思い、名前空間切れたり、副次的なメリットも多くて色々嬉しいということで embedded frameworkに挑戦してみた。

  • ui
  • domain
  • data
    というembedded framework を作って作業をすすめた。問題もなくいい感じ。
    が、最初は順調に行ってたのだけど、途中からなぜか domain層から import data 記述が no such module エラーをはくようになる。
    また、初めて見るこんなファイルからもエラーが。

module.modulemap

module data.Swift {
    header "data-Swift.h"
}

なぜ突然‥?!と思ってたんだけど、 framework同士の依存関係も明示的に設定してあげないといけない模様。

TARGETS の domainから Build Phases -> Target Dependency でdataフレームワークを追加してあげるとエラーが出なくなった。

それにしても、むしろなぜ今まではこの依存関係を明示していなくても動いていたのかが謎。うーむ。
まぁ問題は解決したのでよしとしよう!

参考リンク

stackoverflow.com

AWS lambda で "Cannot find module 'index'" エラー

AWS lambda を触っていて、

“Cannot find module 'index'”

というエラーが消えなくてにっちもサッチモいかなくなる事があります。

zipアップロードを利用している際は、ディレクトリごとzipにしてしまっていないかチェックしてみてください。
ディレクトリごとを選択して圧縮するのではなく、圧縮したい全てのファイルを選択し、圧縮して下さい。

コマンドラインなら、作業ディレクトリ内で以下を叩けばOKです。

$ zip -r ../archive.zip ./*

AWS Lambda触る前に読むといい記事まとめ

www.bokukoko.info