分1234セッション各セッションは,以下の8カテゴリに分類されており,1セッション30分または60分で,73セッションが行われました。カテゴリ最後のカッコ内数字は各カテゴリのセッション数を表しています。Testing(13)Embedded(8)Python(4)ここでは,筆者が参加したセッションの中から,下記の4つのセッションについて紹介したいと思います。Somers氏は,アプリケーションのバックエンドに保存されている状態を表示及び操作するQMLコンポーネントを作成したときに,コンポーネントのユーザが設定したプロパティバインディングを確実に動作させるための方法について語りました。さまざまな方法で提起された課題に対処する方法をデモを交えながら説明しました。セッションの中でデモを紹介する前に,以下の3点が前提としてあるとします。C++で書かれたコントローラー(SomeController)接続したいチェックボックスコンポーネント(CheckBox)チェックボックスとボタンを使用してコントローラーの状態をリセットするメインのqmlファイルC++のコントローラで変更された状態(SomeController.isBlue)をコンポーネントのプロパティ(CheckBox.checked)に反映し,チェックボックスのプロパティが変更された場合にC++のコントローラの状態に反映するという,双方向のバインディングを実施したい場合,直感的には以下のようなコードが書きたくなります。}しかし,このコードではcheckedプロパティが変更される際にバインディングが破壊されるため,双方向バインディングを維持することはできません。そこで,提案されたアプローチの1つとして,コントローラがメイン状態を更新しないという方法があります。コンポーネントを変更し,コントローラの状態をバインディングされるプロパティとUIが操作された場合の通知を目的とした中間プロパティを用意します。バインディングされたcheckedプロパティはコンポーネントからは変更されないため,バインディングは破壊されることなく簡単なコードで双方向バインディングを実現できます。自作のコンポーネントでしか使用できませんが,非常に簡単で軽量なソリューションとして紹介されました。この方法では,値の更新はこのプロパティを介してのみ設定されます。コンポーネントはそれ自体で値のプロパティを変更せず,提案された値は,信号またはプロパティのいずれかになります。このセッションは,QML開発でよく使う手段である一方,不具合の原因にもなりえるプロパティバインディングに着目しました。QMLで開発を行ったユーザなら誰もが経験するような,プロパティバインディングの不具合に対するアプローチを考えさせられる内容になっていました。Eichenberger氏は,デスクトップマシン用のQtアプリケーションの開発ではコンパイルとデバッグは快適だが,組込システムに向けたコンパイル,デバッグは複雑であると言います。理由としてツールチェーン,クロスコンパイル,クロスデバッグなどに注意する必要があるためです。Pythonならば全く同じアプリケーションを再コンパイルせずに実行できるとしていました。C++ではなくPythonを選んだ理由として以下の4点を挙げました。クロスコンパイルが必要ないことパフォーマンスが重要ではないコードであることターゲット上でも簡単に変更できることアプリケーションはすぐに移植可能であることPythonには,MicroPythonと呼ばれる通常のPythonの標準ライブラリの全てをサポートせずに組み込みコントローラでの利用に適切としたものだけをサポートしている言語処理系が存在します。これにより,異なるマイクロコントローラでも実行できます。インタープリタの実行に十分なRAM,フラッシュ,処理能力さえあれば,別のマイクロコントローラへの移植にも大きな制限はないのが特徴です。MicroPython自体はC言語で記述されています。CircuitPythonと呼ばれる,Adafruit社がMicroPythonをベースに開発した言語があります。CircuitPythonをインストールしたCPUボードはUSBメモリ&Pythonインタープリタとして動作します。このCPUボードをパソコンのUSB端子に接続すると,USBメモリとして認識されます。main.py(Pythonプログラム)を直接パソコンのテキストエディタで編集して上書きすると,即時に実行されるようになっています。このため特別な開発環境は不要なので,ボードに電源だけを供給すればmain.pyを実行できます。Pyhotnを組込みデバイスの開発に利用しようとした経緯にあると思われます。Pythonを利用することで組み込み開発が高速化して,快適にプロトタイプを作成できることを強調していました。Cid氏は,考慮すべき潜在的なケースが多数あるため,潜在的に信頼できないデータ(パーサー,インポーターなど)を扱う安全なコードを書くことは難しいとしていました。そのためコードのセキュリティを改善するための方法の1つであるFuzzingについて語りました。Fuzzingは特定のコードに無効またはランダムなデータを与えて,動作をテストします。入力で何を変更する必要があるのかを理解して,テストをより早く,正確に行えるようになっています。このセッションではoss-fuzzというGoogle社が開発したファジングエンジンを取り上げました。このエンジン自体はlibFuzzerと呼ばれています。特徴として,コードとリンクし,カバレッジベースであることが挙げられます。最小数の「ランダム」入力でカバレッジを学習および最大化できます。以下のようなコードでも,最小数のランダムな変数を入力することで安全性を担保できると言います。}oss-fuzzは一連のdockerイメージ(clangの最新バージョン,libFuzzerなど)およびフリーソフトウェアプロジェクトを実行する小さなテストアプリケーションになっています。現時点で,GitHub上には約240程度のプロジェクトがあります。oss-fuzzという観点で取り組んでいます。ここでは,以下の5点について紹介されました。テストを実施するべきだと話しました。セキュリティ著者プロフィール田中智史(たなかさとし)株式会社SRAのエンジニア。2018年からQtチームに配属され,Qtのアプリケーション開発を担当している。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。