朝日ネット 技術者ブログ

朝日ネットのエンジニアによるリレーブログ。今、自分が一番気になるテーマで書きます。

グラフデータベースNeo4jを使ってコードの依存関係を解析する

はじめに

開発部の tasaki です。 依存関係 (dependency) という言葉は「クラスの依存関係」「ライブラリの依存関係」「命令の依存関係」「タスクの依存関係」などなど、コンピュータを扱う上では分野を問わず頻出する用語です。 依存関係はグラフ構造 (dependency graph) として表すことができ、このデータをグラフデータベースである Neo4j に入力しておくことで効率よく関係性を検索できるようになります。

今回は例として jdeps と簡単な Python スクリプトを使って Java のパッケージの依存関係を Neo4j に登録し、クエリ言語である Cypher を用いて依存関係を解析してみます。

  • はじめに
  • 動作確認環境
  • Neo4j について
    • 概要
    • Neo4j のインストール
    • Cypher の基本的な使い方
    • Neo4j Python Driver の使い方
  • 依存関係を解析する
    • 実行例
    • 指定したパッケージが直接依存しているパッケージの表示
    • 指定したパッケージが間接的に依存しているパッケージの表示
    • 指定したパッケージに直接依存しているパッケージの表示
    • 指定したパッケージに間接的に依存しているパッケージの表示
    • count 集計関数による件数の取得
    • WHERE による複雑な検索
    • 指定パッケージから指定パッケージへの依存の最短経路の表示
    • クラスタリング (Neo4j Graph Algorithms)
  • おわりに
  • 採用情報
続きを読む

ISPを構築してみる (2)

朝日ネットで業務システムを開発しているkakoです。前回の記事では、AsahiNet内のプライベートASになんちゃってISP(KakoNet)を構築する、という目標の全体構想を述べました。今回はそれを実現するための検証・構築手順を提案したいと思います。また最初の検証として、VirtualBoxの内部ネットワークにVyOSとUbuntuを構築した手順を記載します。

  • 全体構想を実現するための検証・構築手順
  • VirtualBoxの内部ネットワークにVyOSとUbuntuを構築
    • VirtualBoxのインストール
    • VyOSをVirtualBoxへインストール
    • UbuntuをVirtualBoxへインストール
    • コアルータとホスト間でIPの到達性があることを確認
  • おわりに
  • 採用情報
続きを読む

PWAでwebプッシュ通知を作る (2) - 簡単なwebページをPWA化してみる

今回のテーマ:PWA化の具体的なコードの書き方

watanabeです。 前回触れたとおり、PWA化に必要な具体的なコードの書き方を説明します。

  • 今回のテーマ:PWA化の具体的なコードの書き方
  • PWA化に最低限必要なコードと具体的な記述方法
    • 1 アイコンを作成する
    • 2 ServiceWorker を作成する
    • 3 manifest.json の記述をする
    • 4 HTMLファイルに記述を追加する
    • 5 Webサーバにアップロードする
  • デモページ
  • 次回予告
  • 採用情報

例として、以下のwebページをPWA化してみます。 真ん中のまねき猫の画像をクリックするとランダムに台詞を表示する簡単なスクリプトで書かれたページです。 webページなので一度アクセスしてもオフラインでは閲覧不可ですが PWA化することで、オフラインでも閲覧可、またアプリのような挙動にすることができます。

https://watanabe0601.github.io/sw.github.io/old/index.html

続きを読む

オリジナルの音声アシスタントを作ろう (1) - Web Speech API

はじめに

こんにちは。朝日ネットでWebアプリケーションの開発を行っている tommy です。 最近、Siri や Google アシスタントのような、音声による機能操作が盛り上がってきています。 皆様も、オリジナルの音声アシスタントが欲しいなー。と一度は考えたことがあるでしょう。

ひと昔前には、音声認識は一般人にはとてもハードルの高い分野でした。しかし、時代が進み、誰もが気軽にこの技術に触れられるようになってきました。 この記事では、音声によってサービスを操作する機能を作るまでの課程を、何回かに分けて書いて行こうと思います。

  • はじめに
  • 音声アシスタント作成の流れ
  • 音声入力の選択肢として考えられるもの
    • Alexa スキル
    • Web Speech API
    • Media Capture and Streams API
    • アプリ or 端末作成
  • Web Speech API (Speech Recognition API) を使ってみる
    • Speech Recognition API
    • 注意点
    • サンプルコード
    • サンプルコード詳細
  • 現行の Android版 Chrome での問題点
  • まとめ
  • 採用情報
続きを読む

Pythonのパッケージングのベストプラクティスについて考える2018

はじめに

開発部の tasaki です。Python 3.7 のリリースが今月末に行われるということで、あらためて 2018 年現在の Python のパッケージ構成におけるベストプラクティスについて検討してみたいと思います。

対象読者

この記事は、

  • 書き捨ての Python スクリプトなら書けるが、ちゃんとしたパッケージの作り方がよく分からない
  • 公式リファレンスのモジュールの章を読んだが、結局具体的にどういう構成にすればよいのか分からない
  • setuptools.setup 関数の大量の引数のどれを使えばよいのか分からない

というような人を対象としています。

続きを読む

PWAでwebプッシュ通知を作る (1)

  • PWAとは
  • どのようにPWA化するのか
  • PWA化されたwebページの例
  • 採用情報

 

朝日ネットの開発チームでサービスの企画やUIデザイン、HTML+CSSでの実装を主に担当している watanabeです。

今回技術テーマとしてwebページをネイティブアプリのように見せる「PWA(Progressive Web Apps)」を選択しました。
PWAで実現できることとして特に注目したのがプッシュ通知です。


今まで、ネイティブアプリでしか行えなかったプッシュ通知を「PC」でも「ブラウザ(PC・モバイル問わず)を起動していなくても」行えるようになるのです。

自サービスでどのようにユーザにリマインダや新着の通知を見せるかは長年悩んでおり、(メールだと埋もれてしまうことが多く、重要な情報を見逃してしまうこともある)そこで、プッシュ通知を候補として挙げ、そちらをwebページで受け取る仕組みを実装するのを目標にします。

続きを読む