新卒エンジニアの技術と教養のブログ

技術・教養、色んな情報をシェアしていきます

新卒エンジニアの学習ログ 〜 其の八 〜

プログラミングの問題を解決する10のステップ

プログラミングには問題がつきもの!?

プログラミング学習をしていて、どうしても理解出来ない処理に出くわす、または、エラーや例外が解決できないことに悩まない人はいないでしょう。

 

特に初学者であるほど、知識が単純に不足しているために、どうしても気づけないこともあります。

 

そういった場合には、習熟している人に聞くのが一番早いですが、中々そういった環境が整っている人はいないでしょう。

 

また、質問するにも明確な原因を特定できず、”結局何がわからないの?”と言われてしまうことも多々あります。

 

まず、自分で問題を整理して、様々な切り口から解決を促す力を育てていきましょう。

 

参考になるものが海外の技術コミュニティーサイトに上がっていたので、和訳しながらお伝えしたいと思います。

 

参考サイト

codeburst.io

 

 

自己解決を促す10のステップ

プログラミングの問題に取り組んでいる新人開発者からのフィードバックの中には、どこから手をつけたらいいのかわからないというものがあります。

 

あなたは問題、ロジック、構文の基本などを理解しています。他の人のコードを見たり、指導してくれる人がいれば、それに従うことができます。

しかし、構文やロジックは理解していても、最初は自分でやることに不安を感じたり、自分の考えをコード化するのに苦労したりすることもあるかもしれません。

 

ここでは、私のプロセスとサンプル問題に取り組むためのヒントを紹介します。

 

 

1. 少なくとも3回は問題を読む

まず、わからない/解決できない問題と自分が解いていると思っている問題には違いがあります。

問題の最初の数行を読み始めて、過去に見たことのあるものと似ているからといって、残りの部分を想定してしまうのは簡単です。

たまに友人に説明してみて、私の説明の理解度が課題の問題と一致しているかどうかを確認することもあります。

途中で問題を誤解していたことに気づくのは避けたいものです。

最初に余分な時間を取ることは、それだけの価値があります。

問題をよりよく理解すればするほど、それを解決するのは容易になります。

 

数値の配列を受け取り、偶数のみの配列evenNumbersを返す単純な関数selectEvenNumbersを作成しているとしましょう。偶数がない場合は、空の配列evenNumbersを返します。

 

 

  • Android(Java, Kotlin)iOS(Swift)ごとに異なる言語を使用しなくてもよい
  • AndroidStudioXCodeなど別々の開発環境を用意しなくてもよい
  • Adobe XDからのエクスポートが可能なプラグインもあり、デザイナーと連携が取りやすい

AndroidであればJavaKotliniOSであればObjective-CSwiftなどへのプログラミング言語が可能な技術者を整備せねばいけません。

また、iOSの開発にはWindows環境では実機での確認ができないなど、ハード面でのコストが必要となってきます。

そういった点を考慮するとAndroidStudioからプラグインを追加するだけで、AndroidとiOSの両方で開発が行えるのは良いですよね。

実際使ってみると、様々なデメリットも見えて一長一短ではありますが、、、、

環境構築は簡単

AndroidStudioの環境構築が完了している方であれば、WindowsでもMacでも容易に導入することができます。

下記のサイトであれば、AndroidStudioとXCodeの両方への導入まで確認できます。

qiita.com

Adobe XDのプラグインを導入してUI反映

Flutterの導入が完了したら、Adobe XDでUIを作成してエクスポートできるプラグインを揃えていきましょう!

以下の条件で導入しました。

  • AndroidStudio 4.1
  • Mac OS Catalina
  • Flutter 1.22.1
  • Dart 2.10.1
  • Adobe XD

Adobe XDメニューからプラグイン> プラグインを見つける 

"fu"と検索に入力して、、、 

XD to Flutterを選択してインストールします。

 

インストールが完了したら、Adobe XDで簡単なUIを作成します。

 

XDのメニューからプラグイン>XD to Flutter > UI Panel を開きます。 

AndroidStudioのFlutterプロジェクトのlibフォルダがあるディレクトリをPath指定すれば、後はデフォルトで大丈夫です。

そして、AndroidStudioのFlutterプロジェクトのpubspec.yamlファイルに17行目のようにadobe_xdを加えてあげれば準備オッケーです。(":" コロンの後は入れなくても動作します) 

ビルドするとUIが反映されていることが確認できました!

 

無事に環境が構築でき、Adobe XDでのUIエクスポートも導入できました。

かなり便利!?

メリットづくしのように感じますが、実際に開発を進めていくとそれなりに問題が生じてきます。

UIDartコードにエクスポートできても、その後のアクションを加えるときには、Widget構成がむちゃくちゃで苦労します。

KeynotePowerPoint無理やり変換したような感じでしょうか、、、

あくまでエクスポートであるため、好き放題にXDでデザイナーさんに作成されるとメリットがほぼありません(笑)

それなりに制約があることを把握して、しっかりと事前にすり合わせをしましょう! (XDのコンポーネントがUIに含まれているとエクスポートできない?など私の環境では問題が発生しました)

使いこなせると強力なツールであるのは間違いありません。

今後も時間をかけて学習を継続していきます。

最後に

入社して半年が経過しましたが、まだまだわからないことだらけです。

それでも、自分なりに必要となることや、今時間を積み重ねておくべきことをやれているように感じます。

実際に一人前のプログラマになることを目指してAndroid/iOS開発は毎日必ず手を動かして感覚をなくさないようにしています。

With COVID19の中で新卒のキャリアをスタートさせましたが、少しながら日々に自分の成長 があります。

今年から社会人になった皆さん、大変な中ではありますが、通勤や娯楽にかけていた時間を学びの時間として、今後も一緒に成長を続けて行きましょう!

とりあえず。。。

メモ代わりに書いていますが、これから理解が深まれば書き足していきます。 いつか誰かのお役に立てると嬉しいですね。

初学者から一人前まで、、、

ここでは一人前のプログラマの定義を

「自力で様々なツールを活用しながら、ある程度思い通りの実装ができること」

とします。

また、人生においてプログラミングに向き合う時間として、現時点で2000時間取り組めればある程度の基盤が備わると仮定しています。 (言語やツールに依存しない思考法や情報収集能力)

プログラミングは大学で学んで来ましたが、特に根詰めてやってきていないので、ノーカウントとして取り組みます。

現在までの学習時間

およそ520時間

どんどん更新していきます。