姫路IT勉強会 2019.09

姫路IT勉強会 2019.09

自己紹介

  • 飛び入り+会場の人を合わせると9人です。

英語でコミットメッセージを書く勉強はどうしたらよいか?

IPv6プラスの回線からSSHはできるがSCPができない…?

  • IPv4 over IPv6 の環境
  • SSH 接続はできる。
  • SCP を debian(buster)から行うとできない
    • scpの-6 または -4 オプションで IPv6, IPv4を強制指定できる。
  • git clone (ssh)もできない
  • VSCode のsshfs 拡張からはできる
    • 動いている部分から原因を切り詰めていくしかないかも。
  • パケットロスが発生している?
    • 通信はできているので、発生してないと思われる
  • エラーログはしっかり抑えましょう(どこで詰まってるかわからんどす)
  • ホワイトボードに図を書いて確認しました。
  • ローカル(Debian, Win10)、AWS(Amazon Linux)、githubの相互通信がおかしい…?
  • 設定変えつつ問題の切り分けとか

Android Studioでアプリを書いてます

  • デモしようかと思ったらノートパソコンではエミュレータが動きませんでした

  • Win10 19.03でWindows Hyperviserががバグっててx86エミュレータが動かない

  • MicroSoft製エミュレータもあった、使ってはない。

  • AndroidエミュレータとVirturlBoxでWindowsの仮想化設定がコンフリクトする模様

    • WSL2が動作していると、VirualBox動かないです(仮想環境が衝突する…)
    • Hyper-V上で動いているのです
    • のでWSL1もまだ残ってるのです(遅いけど)
    • Xenみたいな仕掛け
  • そもそもWindows使うのが間違いです

    • さりとてDebianへの全面移行はキツイっす
      • AdobeCCが動かない
    • 一応Macでなんとか
      • でもMac版のOfficeは互換性いまいち(その他も大同小異)
      • だからExcel方眼紙使うなって言ってるの
      • 最近はGoogleSpreadSheet多いよね
  • こんなアプリ作ってみました

    • 入眠時刻・起床時刻・薬を飲んだ時間を記録するアプリです

    • Toggl というタイムトラッキングサービスに対応するといい

      • 各種サービスのAPI叩く構想だけは色々あります
    • 記録するのが面倒で使わなくなる問題がある

    • Androidなので開発中のをChrome Castで映そうかと思ったけどダメでした

    • DBはRealmでローカルに保存してます

      • SQLite3が定番だが
        • プリペアSQL書くのが面倒なので、ORMでオブジェクト操作で済むのを選んだ
      • https://realm.io/docs/java/latest#working-with-realmobjects
      • デフォルトコンストラクターでカラムを作る仕組み
      • Kotlinなのに column1: string? = null でカラム作るのはどうなんだろう?
        • KotlinはNull Safeな言語なのに
        • Kotlin -> Java -> Realmで呼び出して
        • この先、Kotlin -> Realmのインタフェースが改善されたら書きやすくなるかも
    • こんなのをバックエンドにするといいかもしれない

  • バックエンドを楽にしておきましょう

    • FireBaseとかにしといて、RestAPIで操作
      • Android OSにRestAPI叩くOS APIがあるので楽そう
  • 設計が大事です

    • DB設計で、テーブル構成やカラム構成に悩んでます
      • 普段触ってるWordPressだとDB設計とかないので
      • そのデータは集計する?しない?
        • 集計のしやすさもDB設計で決まる
      • そもそもDBで保存する必要ある?
        • WEBアプリのだとファイル追記でも十分な場合あるよね
      • 先にER図を作りましょう
        • ER図は一応ある -> もってきたらレビューできるよ
    • 画面遷移とかも悩む
      • 使い勝手はどうだろう?
    • コードはリーダビリティを最大化しましょう
    • アプリを一つ作るとなると、考える範囲が広いです
  • プロトタイプと収益化

    • 単体で動作するアプリは無償、多機能版は有償にする予定
      • FireBaseのお代がかかるぐらいユーザーが増えたら、儲かってるはず
    • プロトタイプは10月初めにリリース予定です
      • リリースしたら姫路IT系勉強会でレビューしましょう

HP Stream のノートでUbuntu

Jetsonの処理速度が遅いんですが

  • NVIDIAのJetsonで画像認識処理をする
    • 車載向けRasPi互換ボード。ヒートシンクが付属
    • 人間の顔、動物の姿などを認識するアプリ
    • GPU使用していても1fps、まれに2fpsしか出ません(スペックを考えれば善戦してます)
      • ちなみにCore i7 + 16GBのノートで10ftsくらい
    • 動画をやめて写真をベースに処理させるようにしてみる

楽しい夏休みでした

  • LibreOfficeの本を書いておりました
  • Twitterを停止しました。
  • 自宅サーバをあれこれメンテナンス
    • Vagrant + VirtualBox遅いっす
      • vagrant-libvert ?
      • vagrant-lxcは、もうLXC終わってるしー
      • vagrant-lxd を試してみると快適だった
        • インストールが簡単 (Debian/Ubuntu)
        • vagrantでlxdのboxをつかっている人がいない(そもそもBox少ない)
          • ノウハウが溜っていない?
          • lxdのboxが無くてもvagrant-lxcのbox自動変換してくれる
        • LXD単体もおすすめです。ノウハウはまだ書きかけですが・・・ LXC/LXDの使い方
  • もらったBayTrailタブレットをHackしてました
    • Debian BusterとAndroid x86を突っ込むとか
      • Debian MultiArchイメージを使うと32ビットUEFI+64ビットOSでもサクッとインストールできる
    • 旅行にPCは持っていけないのでタブレットとしても使えるPCとして持っていきました
    • Android x86 Oleoが好調でした
      • でも、スリープさせると死んでしまう。なんで死んでしまうん?

雑談いろいろ

  • ソースコードに継ぎ足し継ぎ足しが多いのは何故?

    • 1万行のPHPクラス
    • 循環的複雑度が1000を超えるソースコード
    • 5万行のCSS
      • 時間がないので、ひとまず継ぎ足しで作ってしまうのが繰り返される
      • 削除する決断をあまりしたがらない
      • 手動テストでもいいから、テスト通して問題なかったら消したら?
        • Gitでバージョン管理したら、巻き戻せるから継ぎ足し問題は昔ほど酷くない
    • 5万行のCSSはSassでリファクタされたそうです
      • それやったひとはリファクタリングした直後に去りました
  • 設計の能力、概念化、抽象化の能力はエンジニア・プログラマーに必須

    • これは教育と訓練
    • データを表に落としこむぐらいのことでも差がある
  • 定期的にシステム、環境はスクラッチで作り直すべき

    • システムというのは汚れていくもの
    • 2年サイクルぐらいで抜本的に見直しをすべき
  • WordPressなどを仕事で使ってる人、プラグインなどの問題に気づいてもissueかかない

    • 放っといても直らないけどいいの?
  • OSS精神を学ぶ機会ってなんだろう?

  • 企業など、使うだけ使って儲けてるのに、それを良くすることは何もやってないとこがあったり(特にクラウド系)

  • さくらインターネットはサーバホスティングなど色々援助してくれています

    • アピールしてるかといえばしていないかも
    • エンジニア受けは良いからそれでもいいかも